aboutsummaryrefslogtreecommitdiff
path: root/hexedit/hexedit.s
diff options
context:
space:
mode:
Diffstat (limited to 'hexedit/hexedit.s')
-rw-r--r--hexedit/hexedit.s42
1 files changed, 26 insertions, 16 deletions
diff --git a/hexedit/hexedit.s b/hexedit/hexedit.s
index 0bc03a9..26bc84b 100644
--- a/hexedit/hexedit.s
+++ b/hexedit/hexedit.s
@@ -2,24 +2,34 @@
.cpu cortex-m0plus
.thumb
+.equ SRAM_BASE, 0x20000000
+
.type hexedit, %function
.global hexedit
hexedit:
- ldr r2, =0x20000100
- movs r1, 0
-getchar:
+ ldr r6, =SRAM_BASE
+ adds r5, r6, 1
+10:
+ movs r4, 0
+20:
bl uart_recv
- cmp r0, 'g
- beq stop
- subs r0, '0 // The ASCII char '0'
- bmi next
- lsls r1, 4
- adds r1, r0
- b getchar
-next:
- ldr r0, [r2, 0]
- adds r2, 4
- b hexedit
-stop:
- b 0x20000100
+ cmp r0, '\r
+ beq 30f
+ cmp r0, 'G
+ beq 40f
+ bl uart_send
+ subs r0, '0
+ lsls r4, 3
+ adds r4, r0
+ b 20b
+30:
+ movs r0, '\r
+ bl uart_send
+ movs r0, '\n
+ bl uart_send
+ strh r4, [r6]
+ adds r6, 2
+ b 10b
+40:
+ bx r5