diff options
author | Bad Diode <bd@badd10de.dev> | 2023-08-28 20:04:12 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-08-28 20:04:12 +0200 |
commit | ac0bc3913a1a8fdf20d5e3bf3d0631f54ae1fbac (patch) | |
tree | f5d876bd5a27e1c3dea21a40d014d033cb9964b9 /src/uxn-core.s | |
parent | d1f218fdaa8ab08508e565b8169a904d47dda1b3 (diff) | |
download | uxngba-ac0bc3913a1a8fdf20d5e3bf3d0631f54ae1fbac.tar.gz uxngba-ac0bc3913a1a8fdf20d5e3bf3d0631f54ae1fbac.zip |
Add load operations ldr/ldr2
Diffstat (limited to 'src/uxn-core.s')
-rw-r--r-- | src/uxn-core.s | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/uxn-core.s b/src/uxn-core.s index ed860d6..7d5eb69 100644 --- a/src/uxn-core.s +++ b/src/uxn-core.s | |||
@@ -66,6 +66,10 @@ uxn_ret: | |||
66 | ldrb \a, [r1, #-1]! | 66 | ldrb \a, [r1, #-1]! |
67 | .endm | 67 | .endm |
68 | 68 | ||
69 | .macro wpop8s a | ||
70 | ldrsb \a, [r1, #-1]! | ||
71 | .endm | ||
72 | |||
69 | .macro wpop16 a, b | 73 | .macro wpop16 a, b |
70 | ldrb \a, [r1, #-1]! | 74 | ldrb \a, [r1, #-1]! |
71 | ldrb \b, [r1, #-1]! | 75 | ldrb \b, [r1, #-1]! |
@@ -111,6 +115,10 @@ uxn_ret: | |||
111 | ldrb \dst, [r7, \off] | 115 | ldrb \dst, [r7, \off] |
112 | .endm | 116 | .endm |
113 | 117 | ||
118 | .macro rload8 dst, off | ||
119 | ldrb \dst, [r0, \off] | ||
120 | .endm | ||
121 | |||
114 | @ OP table | 122 | @ OP table |
115 | op_table: | 123 | op_table: |
116 | .word brk @ 0x00 | 124 | .word brk @ 0x00 |
@@ -619,9 +627,18 @@ stz2: | |||
619 | b uxn_decode | 627 | b uxn_decode |
620 | 628 | ||
621 | ldr: | 629 | ldr: |
630 | wpop8s r4 | ||
631 | rload8 r3, r4 | ||
632 | wpush8 r3 | ||
622 | b uxn_decode | 633 | b uxn_decode |
623 | 634 | ||
624 | ldr2: | 635 | ldr2: |
636 | wpop8s r4 | ||
637 | rload8 r3, r4 | ||
638 | wpush8 r3 | ||
639 | add r4, #1 | ||
640 | rload8 r3, r4 | ||
641 | wpush8 r3 | ||
625 | b uxn_decode | 642 | b uxn_decode |
626 | 643 | ||
627 | str: | 644 | str: |