diff options
author | Jacques Comeaux <jacquesrcomeaux@protonmail.com> | 2024-01-22 15:01:38 -0600 |
---|---|---|
committer | Jacques Comeaux <jacquesrcomeaux@protonmail.com> | 2024-01-22 15:01:38 -0600 |
commit | eb87035e06aa45a8b1150ec86f698453d3092340 (patch) | |
tree | 818ba8ff7b584f65e0db303827044f2942fb7b9e | |
parent | 261c210c9c4c1e55103a7af31dfcc539c0e0e5cc (diff) |
Add octal and register name parsers
-rw-r--r-- | assembler/octal.s | 25 | ||||
-rw-r--r-- | assembler/register.s | 39 | ||||
-rw-r--r-- | hexedit/Makefile | 4 |
3 files changed, 68 insertions, 0 deletions
diff --git a/assembler/octal.s b/assembler/octal.s new file mode 100644 index 0000000..7382ca4 --- /dev/null +++ b/assembler/octal.s @@ -0,0 +1,25 @@ +octal: + PUSH {LR} +10: + BL get_char + MOVS R1, '0 + CMP R0, R1 + BNE 10b + BL uart_send + MOVS R4, 0 +20: + BL get_char + BEQ 30f + MOVS R1, '0 + CMP R0, R1 + BLO 20b + MOVS R1, '7 + CMP R0, R1 + BHI 20b + BL uart_send + SUBS R0, '0 + LSLS R4, 3 + ADDS R4, R0 + B 20b +30: + POP {PC} diff --git a/assembler/register.s b/assembler/register.s new file mode 100644 index 0000000..9fbc76c --- /dev/null +++ b/assembler/register.s @@ -0,0 +1,39 @@ +register: + PUSH {LR} +10: + BL get_char + MOVS R1, 'R + CMPS R0, R1 + BNE 10b +20: + BL get_char + MOVS R1, '0 + CMPS R0, R1 + BLO 20b + MOVS R1, '9 + CMPS R0, R1 + BHI 20b + MOVS R1, '1 + CMPS R0, R1 + BNE 30f +50: + BL get_char + BEQ 60f + MOVS R1, '0 + CMPS R0, R1 + BLO 50b + MOVS R1, '5 + CMPS R0, R1 + BHI 50b + ADDS R0, 10 +30: + SUBS R0, '0 + MOVS R4, 0 + ORRS R4, R0 +40: + BL get_char + BNE 40b + POP {PC} +60: + MOVS R4, 1 + POP {PC} diff --git a/hexedit/Makefile b/hexedit/Makefile index 95f49ae..23941da 100644 --- a/hexedit/Makefile +++ b/hexedit/Makefile @@ -15,3 +15,7 @@ $(objects): %.o: %.s clean: rm echo.elf echo.uf2 *.o + +flash: echo.uf2 + [ -h /dev/disk/by-label/RPI-RP2 ] || sleep 2s + cat echo.uf2 > /dev/disk/by-label/RPI-RP2 |