diff options
author | Bad Diode <bd@badd10de.dev> | 2023-08-30 11:09:34 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-08-30 11:09:34 +0200 |
commit | 6a01445ef315c60a5f40b842d24e1e0d34a5d070 (patch) | |
tree | 8c279272574cfe487392eceef43108b75776a36b /src | |
parent | 033b0d78a5081e86fdfb70ca23fab627f8cf2ce0 (diff) | |
download | uxngba-6a01445ef315c60a5f40b842d24e1e0d34a5d070.tar.gz uxngba-6a01445ef315c60a5f40b842d24e1e0d34a5d070.zip |
Fix k mode instructions
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 47 | ||||
-rw-r--r-- | src/rom.c | 5 | ||||
-rw-r--r-- | src/uxn-core.s | 480 |
3 files changed, 268 insertions, 264 deletions
@@ -220,7 +220,9 @@ init_uxn() { | |||
220 | // 0x17, 0x80, 0x18, 0x17, 0xa0, 0x0a, 0x18, 0x17, | 220 | // 0x17, 0x80, 0x18, 0x17, 0xa0, 0x0a, 0x18, 0x17, |
221 | // // 0x00, 0x00, | 221 | // // 0x00, 0x00, |
222 | // }; | 222 | // }; |
223 | memcpy(uxn_ram + PAGE_PROGRAM, uxn_rom, sizeof(uxn_rom)); | 223 | uxn_rom = _binary_build_uxn_rom_start; |
224 | uxn_rom_size = (size_t)_binary_build_uxn_rom_size; | ||
225 | memcpy(uxn_ram + PAGE_PROGRAM, uxn_rom, uxn_rom_size); | ||
224 | 226 | ||
225 | // Initialize stack and device memory. | 227 | // Initialize stack and device memory. |
226 | for (size_t i = 0; i < 256; i++) { | 228 | for (size_t i = 0; i < 256; i++) { |
@@ -238,7 +240,8 @@ init_uxn() { | |||
238 | } | 240 | } |
239 | 241 | ||
240 | // TODO: | 242 | // TODO: |
241 | // - Change rom include using objcopy instead of my flimsy bin2carr rom | 243 | // - Make sure we are evaluating everything on the main loop, not just one |
244 | // vector. | ||
242 | 245 | ||
243 | int | 246 | int |
244 | main(void) { | 247 | main(void) { |
@@ -273,14 +276,14 @@ main(void) { | |||
273 | 276 | ||
274 | uxn_eval_asm(PAGE_PROGRAM); | 277 | uxn_eval_asm(PAGE_PROGRAM); |
275 | 278 | ||
276 | txt_printf("\nROM"); | 279 | // txt_printf("\nROM"); |
277 | for (size_t i = 0; i < 32; i++) { | 280 | // for (size_t i = 0; i < 32; i++) { |
278 | if (i % 8 == 0) { | 281 | // if (i % 8 == 0) { |
279 | txt_printf("\n"); | 282 | // txt_printf("\n"); |
280 | } | 283 | // } |
281 | txt_printf("%02x ", uxn_ram[i + PAGE_PROGRAM]); | 284 | // txt_printf("%02x ", uxn_ram[i + PAGE_PROGRAM]); |
282 | } | 285 | // } |
283 | txt_printf("\n"); | 286 | // txt_printf("\n"); |
284 | 287 | ||
285 | txt_printf("\nWST ("); | 288 | txt_printf("\nWST ("); |
286 | txt_printf("SIZE: %d)", wst_ptr - (uintptr_t)wst); | 289 | txt_printf("SIZE: %d)", wst_ptr - (uintptr_t)wst); |
@@ -295,18 +298,18 @@ main(void) { | |||
295 | } | 298 | } |
296 | } | 299 | } |
297 | txt_printf("\n\n"); | 300 | txt_printf("\n\n"); |
298 | // txt_printf("RST ("); | 301 | txt_printf("RST ("); |
299 | // txt_printf("SIZE: %d)", rst_ptr - (uintptr_t)rst); | 302 | txt_printf("SIZE: %d)", rst_ptr - (uintptr_t)rst); |
300 | // for (size_t i = 0; i < 32; i++) { | 303 | for (size_t i = 0; i < 32; i++) { |
301 | // if (i % 8 == 0) { | 304 | if (i % 8 == 0) { |
302 | // txt_printf("\n"); | 305 | txt_printf("\n"); |
303 | // } | 306 | } |
304 | // if (i >= (rst_ptr - (uintptr_t)rst)) { | 307 | if (i >= (rst_ptr - (uintptr_t)rst)) { |
305 | // txt_printf("%02x ", 0); | 308 | txt_printf("%02x ", 0); |
306 | // } else { | 309 | } else { |
307 | // txt_printf("%02x ", rst[i]); | 310 | txt_printf("%02x ", rst[i]); |
308 | // } | 311 | } |
309 | // } | 312 | } |
310 | // txt_printf("\n\n"); | 313 | // txt_printf("\n\n"); |
311 | // txt_printf("RAM (ZP)\n"); | 314 | // txt_printf("RAM (ZP)\n"); |
312 | // for (size_t i = 0; i < 64; i++) { | 315 | // for (size_t i = 0; i < 64; i++) { |
diff --git a/src/rom.c b/src/rom.c new file mode 100644 index 0000000..01fd451 --- /dev/null +++ b/src/rom.c | |||
@@ -0,0 +1,5 @@ | |||
1 | extern u8 _binary_build_uxn_rom_start[]; | ||
2 | extern u8 _binary_build_uxn_rom_size[]; | ||
3 | |||
4 | u8 *uxn_rom; | ||
5 | size_t uxn_rom_size; | ||
diff --git a/src/uxn-core.s b/src/uxn-core.s index c2ba5bb..befb02c 100644 --- a/src/uxn-core.s +++ b/src/uxn-core.s | |||
@@ -83,17 +83,17 @@ uxn_ret: | |||
83 | strb \a, [r1], #2 | 83 | strb \a, [r1], #2 |
84 | .endm | 84 | .endm |
85 | 85 | ||
86 | .macro wpeek a, b | 86 | .macro wpeek8 a, off |
87 | ldrb \a, [r1, \b] | 87 | ldrb \a, [r1, \off] |
88 | .endm | 88 | .endm |
89 | 89 | ||
90 | .macro wpeek8 a | 90 | .macro wpeek8s a, off |
91 | ldrb \a, [r1, #-1] | 91 | ldrsb \a, [r1, \off] |
92 | .endm | 92 | .endm |
93 | 93 | ||
94 | .macro wpeek16 a, b | 94 | .macro wpeek16 a, b, offa, offb |
95 | ldrb \a, [r1, #-1] | 95 | ldrb \a, [r1, \offa] |
96 | ldrb \b, [r1, #-2] | 96 | ldrb \b, [r1, \offb] |
97 | orr \a, \a, \b, lsl #8 | 97 | orr \a, \a, \b, lsl #8 |
98 | .endm | 98 | .endm |
99 | 99 | ||
@@ -121,17 +121,17 @@ uxn_ret: | |||
121 | strb \a, [r2], #2 | 121 | strb \a, [r2], #2 |
122 | .endm | 122 | .endm |
123 | 123 | ||
124 | .macro rpeek a, b | 124 | .macro rpeek8 a, off |
125 | ldrb \a, [r2, \b] | 125 | ldrb \a, [r2, \off] |
126 | .endm | 126 | .endm |
127 | 127 | ||
128 | .macro rpeek8 a | 128 | .macro rpeek8s a, off |
129 | ldrb \a, [r2, #-1] | 129 | ldrsb \a, [r2, \off] |
130 | .endm | 130 | .endm |
131 | 131 | ||
132 | .macro rpeek16 a, b | 132 | .macro rpeek16 a, b, offa, offb |
133 | ldrb \a, [r2, #-1] | 133 | ldrb \a, [r2, \offa] |
134 | ldrb \b, [r2, #-2] | 134 | ldrb \b, [r2, \offb] |
135 | orr \a, \a, \b, lsl #8 | 135 | orr \a, \a, \b, lsl #8 |
136 | .endm | 136 | .endm |
137 | 137 | ||
@@ -671,7 +671,7 @@ deo2r: | |||
671 | b uxn_decode | 671 | b uxn_decode |
672 | 672 | ||
673 | deik: | 673 | deik: |
674 | wpeek8 r3 | 674 | wpeek8 r3, #-1 |
675 | mov r4, r3, lsr #4 @ idx | 675 | mov r4, r3, lsr #4 @ idx |
676 | and r3, #0x0f @ port | 676 | and r3, #0x0f @ port |
677 | ldr r6, =dei_map | 677 | ldr r6, =dei_map |
@@ -694,7 +694,7 @@ deik: | |||
694 | b uxn_decode | 694 | b uxn_decode |
695 | 695 | ||
696 | dei2k: | 696 | dei2k: |
697 | wpeek8 r3 | 697 | wpeek8 r3, #-1 |
698 | mov r4, r3, lsr #4 @ idx | 698 | mov r4, r3, lsr #4 @ idx |
699 | and r3, #0x0f @ port | 699 | and r3, #0x0f @ port |
700 | ldr r6, =dei_map | 700 | ldr r6, =dei_map |
@@ -717,10 +717,10 @@ dei2k: | |||
717 | b uxn_decode | 717 | b uxn_decode |
718 | 718 | ||
719 | deok: | 719 | deok: |
720 | wpeek8 r3 | 720 | wpeek8 r3, #-1 |
721 | mov r4, r3, lsr #4 @ idx | 721 | mov r4, r3, lsr #4 @ idx |
722 | and r3, #0x0f @ port | 722 | and r3, #0x0f @ port |
723 | wpeek8 r5 @ value | 723 | wpeek8 r5, #-2 @ value |
724 | ldr r6, =deo_map | 724 | ldr r6, =deo_map |
725 | ldr r6, [r6, r4, lsl #2] | 725 | ldr r6, [r6, r4, lsl #2] |
726 | stmfd sp!, {r0, r7, lr} | 726 | stmfd sp!, {r0, r7, lr} |
@@ -741,10 +741,10 @@ deok: | |||
741 | b uxn_decode | 741 | b uxn_decode |
742 | 742 | ||
743 | deo2k: | 743 | deo2k: |
744 | wpeek8 r3 | 744 | wpeek8 r3, #-1 |
745 | mov r4, r3, lsr #4 @ idx | 745 | mov r4, r3, lsr #4 @ idx |
746 | and r3, #0x0f @ port | 746 | and r3, #0x0f @ port |
747 | wpeek16 r5, r6 @ value | 747 | wpeek16 r5, r6, #-2, #-3 @ value |
748 | ldr r6, =deo_map | 748 | ldr r6, =deo_map |
749 | ldr r6, [r6, r4, lsl #2] | 749 | ldr r6, [r6, r4, lsl #2] |
750 | stmfd sp!, {r0, r7, lr} | 750 | stmfd sp!, {r0, r7, lr} |
@@ -765,7 +765,7 @@ deo2k: | |||
765 | b uxn_decode | 765 | b uxn_decode |
766 | 766 | ||
767 | deikr: | 767 | deikr: |
768 | rpeek8 r3 | 768 | rpeek8 r3, #-1 |
769 | mov r4, r3, lsr #4 @ idx | 769 | mov r4, r3, lsr #4 @ idx |
770 | and r3, #0x0f @ port | 770 | and r3, #0x0f @ port |
771 | ldr r6, =dei_map | 771 | ldr r6, =dei_map |
@@ -788,7 +788,7 @@ deikr: | |||
788 | b uxn_decode | 788 | b uxn_decode |
789 | 789 | ||
790 | dei2kr: | 790 | dei2kr: |
791 | rpeek8 r3 | 791 | rpeek8 r3, #-1 |
792 | mov r4, r3, lsr #4 @ idx | 792 | mov r4, r3, lsr #4 @ idx |
793 | and r3, #0x0f @ port | 793 | and r3, #0x0f @ port |
794 | ldr r6, =dei_map | 794 | ldr r6, =dei_map |
@@ -811,10 +811,10 @@ dei2kr: | |||
811 | b uxn_decode | 811 | b uxn_decode |
812 | 812 | ||
813 | deokr: | 813 | deokr: |
814 | rpeek8 r3 | 814 | rpeek8 r3, #-1 |
815 | mov r4, r3, lsr #4 @ idx | 815 | mov r4, r3, lsr #4 @ idx |
816 | and r3, #0x0f @ port | 816 | and r3, #0x0f @ port |
817 | rpeek8 r5 @ value | 817 | rpeek8 r5, #-2 @ value |
818 | ldr r6, =deo_map | 818 | ldr r6, =deo_map |
819 | ldr r6, [r6, r4, lsl #2] | 819 | ldr r6, [r6, r4, lsl #2] |
820 | stmfd sp!, {r0, r7, lr} | 820 | stmfd sp!, {r0, r7, lr} |
@@ -835,10 +835,10 @@ deokr: | |||
835 | b uxn_decode | 835 | b uxn_decode |
836 | 836 | ||
837 | deo2kr: | 837 | deo2kr: |
838 | rpeek8 r3 | 838 | rpeek8 r3, #-1 |
839 | mov r4, r3, lsr #4 @ idx | 839 | mov r4, r3, lsr #4 @ idx |
840 | and r3, #0x0f @ port | 840 | and r3, #0x0f @ port |
841 | rpeek16 r5, r6 @ value | 841 | rpeek16 r5, r6, #-2, #-3 @ value |
842 | ldr r6, =deo_map | 842 | ldr r6, =deo_map |
843 | ldr r6, [r6, r4, lsl #2] | 843 | ldr r6, [r6, r4, lsl #2] |
844 | stmfd sp!, {r0, r7, lr} | 844 | stmfd sp!, {r0, r7, lr} |
@@ -1060,25 +1060,25 @@ rot2: | |||
1060 | b uxn_decode | 1060 | b uxn_decode |
1061 | 1061 | ||
1062 | dup: | 1062 | dup: |
1063 | wpeek r3, #-1 | 1063 | wpeek8 r3, #-1 |
1064 | wpush8 r3 | 1064 | wpush8 r3 |
1065 | b uxn_decode | 1065 | b uxn_decode |
1066 | 1066 | ||
1067 | dup2: | 1067 | dup2: |
1068 | wpeek r3, #-2 | 1068 | wpeek8 r3, #-2 |
1069 | wpeek r4, #-1 | 1069 | wpeek8 r4, #-1 |
1070 | wpush8 r3 | 1070 | wpush8 r3 |
1071 | wpush8 r4 | 1071 | wpush8 r4 |
1072 | b uxn_decode | 1072 | b uxn_decode |
1073 | 1073 | ||
1074 | ovr: | 1074 | ovr: |
1075 | wpeek r3, #-2 | 1075 | wpeek8 r3, #-2 |
1076 | wpush8 r3 | 1076 | wpush8 r3 |
1077 | b uxn_decode | 1077 | b uxn_decode |
1078 | 1078 | ||
1079 | ovr2: | 1079 | ovr2: |
1080 | wpeek r3, #-4 | 1080 | wpeek8 r3, #-4 |
1081 | wpeek r4, #-3 | 1081 | wpeek8 r4, #-3 |
1082 | wpush8 r3 | 1082 | wpush8 r3 |
1083 | wpush8 r4 | 1083 | wpush8 r4 |
1084 | b uxn_decode | 1084 | b uxn_decode |
@@ -1431,11 +1431,11 @@ inc2r: | |||
1431 | b uxn_decode | 1431 | b uxn_decode |
1432 | 1432 | ||
1433 | popr: | 1433 | popr: |
1434 | sub r1, #1 | 1434 | sub r2, #1 |
1435 | b uxn_decode | 1435 | b uxn_decode |
1436 | 1436 | ||
1437 | pop2r: | 1437 | pop2r: |
1438 | sub r1, #2 | 1438 | sub r2, #2 |
1439 | b uxn_decode | 1439 | b uxn_decode |
1440 | 1440 | ||
1441 | nipr: | 1441 | nipr: |
@@ -1483,25 +1483,25 @@ rot2r: | |||
1483 | b uxn_decode | 1483 | b uxn_decode |
1484 | 1484 | ||
1485 | dupr: | 1485 | dupr: |
1486 | rpeek r3, #-1 | 1486 | rpeek8 r3, #-1 |
1487 | rpush8 r3 | 1487 | rpush8 r3 |
1488 | b uxn_decode | 1488 | b uxn_decode |
1489 | 1489 | ||
1490 | dup2r: | 1490 | dup2r: |
1491 | rpeek r3, #-2 | 1491 | rpeek8 r3, #-2 |
1492 | rpeek r4, #-1 | 1492 | rpeek8 r4, #-1 |
1493 | rpush8 r3 | 1493 | rpush8 r3 |
1494 | rpush8 r4 | 1494 | rpush8 r4 |
1495 | b uxn_decode | 1495 | b uxn_decode |
1496 | 1496 | ||
1497 | ovrr: | 1497 | ovrr: |
1498 | rpeek r3, #-2 | 1498 | rpeek8 r3, #-2 |
1499 | rpush8 r3 | 1499 | rpush8 r3 |
1500 | b uxn_decode | 1500 | b uxn_decode |
1501 | 1501 | ||
1502 | ovr2r: | 1502 | ovr2r: |
1503 | rpeek r3, #-4 | 1503 | rpeek8 r3, #-4 |
1504 | rpeek r4, #-3 | 1504 | rpeek8 r4, #-3 |
1505 | rpush8 r3 | 1505 | rpush8 r3 |
1506 | rpush8 r4 | 1506 | rpush8 r4 |
1507 | b uxn_decode | 1507 | b uxn_decode |
@@ -1606,7 +1606,7 @@ jcn2r: | |||
1606 | jsrr: | 1606 | jsrr: |
1607 | mov r3, r0 | 1607 | mov r3, r0 |
1608 | sub r3, r3, r7 | 1608 | sub r3, r3, r7 |
1609 | rpush16 r3 | 1609 | wpush16 r3 |
1610 | rpop8s r3 | 1610 | rpop8s r3 |
1611 | add r0, r3 | 1611 | add r0, r3 |
1612 | b uxn_decode | 1612 | b uxn_decode |
@@ -1842,96 +1842,94 @@ sft2r: | |||
1842 | .align 2 | 1842 | .align 2 |
1843 | 1843 | ||
1844 | inck: | 1844 | inck: |
1845 | wpeek8 r3 | 1845 | wpeek8 r3, #-1 |
1846 | add r3, #1 | 1846 | add r3, #1 |
1847 | wpush8 r3 | 1847 | wpush8 r3 |
1848 | b uxn_decode | 1848 | b uxn_decode |
1849 | 1849 | ||
1850 | inc2k: | 1850 | inc2k: |
1851 | wpeek16 r3, r5 | 1851 | wpeek16 r3, r5, #-1, #-2 |
1852 | add r3, r3, #1 | 1852 | add r3, r3, #1 |
1853 | wpush16 r3 | 1853 | wpush16 r3 |
1854 | b uxn_decode | 1854 | b uxn_decode |
1855 | 1855 | ||
1856 | popk: | 1856 | popk: |
1857 | sub r1, #1 | ||
1858 | b uxn_decode | 1857 | b uxn_decode |
1859 | 1858 | ||
1860 | pop2k: | 1859 | pop2k: |
1861 | sub r1, #2 | ||
1862 | b uxn_decode | 1860 | b uxn_decode |
1863 | 1861 | ||
1864 | nipk: | 1862 | nipk: |
1865 | wpeek8 r3 | 1863 | wpeek8 r3, #-1 |
1866 | strb r3, [r1, #-1] | 1864 | strb r3, [r1, #-1] |
1867 | b uxn_decode | 1865 | b uxn_decode |
1868 | 1866 | ||
1869 | nip2k: | 1867 | nip2k: |
1870 | wpeek16 r3, r5 | 1868 | wpeek16 r3, r5, #-1, #-2 |
1871 | strb r3, [r1, #-1] | 1869 | strb r3, [r1, #-1] |
1872 | lsr r3, #8 | 1870 | lsr r3, #8 |
1873 | strb r3, [r1, #-2] | 1871 | strb r3, [r1, #-2] |
1874 | b uxn_decode | 1872 | b uxn_decode |
1875 | 1873 | ||
1876 | swpk: | 1874 | swpk: |
1877 | wpeek8 r3 | 1875 | wpeek8 r3, #-1 |
1878 | wpeek8 r4 | 1876 | wpeek8 r4, #-2 |
1879 | wpush8 r3 | 1877 | wpush8 r3 |
1880 | wpush8 r4 | 1878 | wpush8 r4 |
1881 | b uxn_decode | 1879 | b uxn_decode |
1882 | 1880 | ||
1883 | swp2k: | 1881 | swp2k: |
1884 | wpeek16 r3, r5 | 1882 | wpeek16 r3, r5, #-1, #-2 |
1885 | wpeek16 r4, r5 | 1883 | wpeek16 r4, r5, #-3, #-4 |
1886 | wpush16 r3 | 1884 | wpush16 r3 |
1887 | wpush16 r4 | 1885 | wpush16 r4 |
1888 | b uxn_decode | 1886 | b uxn_decode |
1889 | 1887 | ||
1890 | rotk: | 1888 | rotk: |
1891 | wpeek8 r5 | 1889 | wpeek8 r5, #-1 |
1892 | wpeek8 r4 | 1890 | wpeek8 r4, #-2 |
1893 | wpeek8 r3 | 1891 | wpeek8 r3, #-3 |
1894 | wpush8 r4 | 1892 | wpush8 r4 |
1895 | wpush8 r5 | 1893 | wpush8 r5 |
1896 | wpush8 r3 | 1894 | wpush8 r3 |
1897 | b uxn_decode | 1895 | b uxn_decode |
1898 | 1896 | ||
1899 | rot2k: | 1897 | rot2k: |
1900 | wpeek16 r5, r6 | 1898 | wpeek16 r5, r6, #-1, #-2 |
1901 | wpeek16 r4, r6 | 1899 | wpeek16 r4, r6, #-3, #-4 |
1902 | wpeek16 r3, r6 | 1900 | wpeek16 r3, r6, #-5, #-6 |
1903 | wpush16 r4 | 1901 | wpush16 r4 |
1904 | wpush16 r5 | 1902 | wpush16 r5 |
1905 | wpush16 r3 | 1903 | wpush16 r3 |
1906 | b uxn_decode | 1904 | b uxn_decode |
1907 | 1905 | ||
1908 | dupk: | 1906 | dupk: |
1909 | wpeek r3, #-1 | 1907 | wpeek8 r3, #-1 |
1910 | wpush8 r3 | 1908 | wpush8 r3 |
1911 | b uxn_decode | 1909 | b uxn_decode |
1912 | 1910 | ||
1913 | dup2k: | 1911 | dup2k: |
1914 | wpeek r3, #-2 | 1912 | wpeek8 r3, #-2 |
1915 | wpeek r4, #-1 | 1913 | wpeek8 r4, #-1 |
1916 | wpush8 r3 | 1914 | wpush8 r3 |
1917 | wpush8 r4 | 1915 | wpush8 r4 |
1918 | b uxn_decode | 1916 | b uxn_decode |
1919 | 1917 | ||
1920 | ovrk: | 1918 | ovrk: |
1921 | wpeek r3, #-2 | 1919 | wpeek8 r3, #-2 |
1922 | wpush8 r3 | 1920 | wpush8 r3 |
1923 | b uxn_decode | 1921 | b uxn_decode |
1924 | 1922 | ||
1925 | ovr2k: | 1923 | ovr2k: |
1926 | wpeek r3, #-4 | 1924 | wpeek8 r3, #-4 |
1927 | wpeek r4, #-3 | 1925 | wpeek8 r4, #-3 |
1928 | wpush8 r3 | 1926 | wpush8 r3 |
1929 | wpush8 r4 | 1927 | wpush8 r4 |
1930 | b uxn_decode | 1928 | b uxn_decode |
1931 | 1929 | ||
1932 | equk: | 1930 | equk: |
1933 | wpeek8 r3 | 1931 | wpeek8 r3, #-1 |
1934 | wpeek8 r4 | 1932 | wpeek8 r4, #-2 |
1935 | sub r3, r4, r3 | 1933 | sub r3, r4, r3 |
1936 | rsbs r4, r3, #0 | 1934 | rsbs r4, r3, #0 |
1937 | adc r4, r4, r3 | 1935 | adc r4, r4, r3 |
@@ -1939,8 +1937,8 @@ equk: | |||
1939 | b uxn_decode | 1937 | b uxn_decode |
1940 | 1938 | ||
1941 | equ2k: | 1939 | equ2k: |
1942 | wpeek16 r3, r5 | 1940 | wpeek16 r3, r5, #-1, #-2 |
1943 | wpeek16 r4, r5 | 1941 | wpeek16 r4, r5, #-3, #-4 |
1944 | sub r3, r4, r3 | 1942 | sub r3, r4, r3 |
1945 | rsbs r4, r3, #0 | 1943 | rsbs r4, r3, #0 |
1946 | adc r4, r4, r3 | 1944 | adc r4, r4, r3 |
@@ -1948,24 +1946,24 @@ equ2k: | |||
1948 | b uxn_decode | 1946 | b uxn_decode |
1949 | 1947 | ||
1950 | neqk: | 1948 | neqk: |
1951 | wpeek8 r3 | 1949 | wpeek8 r3, #-1 |
1952 | wpeek8 r4 | 1950 | wpeek8 r4, #-2 |
1953 | subs r3, r4, r3 | 1951 | subs r3, r4, r3 |
1954 | movne r3, #1 | 1952 | movne r3, #1 |
1955 | wpush8 r3 | 1953 | wpush8 r3 |
1956 | b uxn_decode | 1954 | b uxn_decode |
1957 | 1955 | ||
1958 | neq2k: | 1956 | neq2k: |
1959 | wpeek16 r3, r5 | 1957 | wpeek16 r3, r5, #-1, #-2 |
1960 | wpeek16 r4, r5 | 1958 | wpeek16 r4, r5, #-3, #-4 |
1961 | subs r3, r4, r3 | 1959 | subs r3, r4, r3 |
1962 | movne r3, #1 | 1960 | movne r3, #1 |
1963 | wpush8 r3 | 1961 | wpush8 r3 |
1964 | b uxn_decode | 1962 | b uxn_decode |
1965 | 1963 | ||
1966 | gthk: | 1964 | gthk: |
1967 | wpeek8 r3 | 1965 | wpeek8 r3, #-1 |
1968 | wpeek8 r4 | 1966 | wpeek8 r4, #-2 |
1969 | cmp r4, r3 | 1967 | cmp r4, r3 |
1970 | movls r3, #0 | 1968 | movls r3, #0 |
1971 | movhi r3, #1 | 1969 | movhi r3, #1 |
@@ -1973,8 +1971,8 @@ gthk: | |||
1973 | b uxn_decode | 1971 | b uxn_decode |
1974 | 1972 | ||
1975 | gth2k: | 1973 | gth2k: |
1976 | wpeek16 r3, r5 | 1974 | wpeek16 r3, r5, #-1, #-2 |
1977 | wpeek16 r4, r5 | 1975 | wpeek16 r4, r5, #-3, #-4 |
1978 | cmp r4, r3 | 1976 | cmp r4, r3 |
1979 | movls r3, #0 | 1977 | movls r3, #0 |
1980 | movhi r3, #1 | 1978 | movhi r3, #1 |
@@ -1982,8 +1980,8 @@ gth2k: | |||
1982 | b uxn_decode | 1980 | b uxn_decode |
1983 | 1981 | ||
1984 | lthk: | 1982 | lthk: |
1985 | wpeek8 r3 | 1983 | wpeek8 r3, #-1 |
1986 | wpeek8 r4 | 1984 | wpeek8 r4, #-2 |
1987 | cmp r4, r3 | 1985 | cmp r4, r3 |
1988 | movcs r3, #0 | 1986 | movcs r3, #0 |
1989 | movcc r3, #1 | 1987 | movcc r3, #1 |
@@ -1991,8 +1989,8 @@ lthk: | |||
1991 | b uxn_decode | 1989 | b uxn_decode |
1992 | 1990 | ||
1993 | lth2k: | 1991 | lth2k: |
1994 | wpeek16 r3, r5 | 1992 | wpeek16 r3, r5, #-1, #-2 |
1995 | wpeek16 r4, r5 | 1993 | wpeek16 r4, r5, #-3, #-4 |
1996 | cmp r4, r3 | 1994 | cmp r4, r3 |
1997 | movcs r3, #0 | 1995 | movcs r3, #0 |
1998 | movcc r3, #1 | 1996 | movcc r3, #1 |
@@ -2000,26 +1998,26 @@ lth2k: | |||
2000 | b uxn_decode | 1998 | b uxn_decode |
2001 | 1999 | ||
2002 | jmpk: | 2000 | jmpk: |
2003 | wpop8s r3 | 2001 | wpeek8s r3, #-1 |
2004 | add r0, r3 | 2002 | add r0, r3 |
2005 | b uxn_decode | 2003 | b uxn_decode |
2006 | 2004 | ||
2007 | jmp2k: | 2005 | jmp2k: |
2008 | wpeek16 r3, r5 | 2006 | wpeek16 r3, r5, #-1, #-2 |
2009 | mov r0, r7 | 2007 | mov r0, r7 |
2010 | add r0, r0, r3 | 2008 | add r0, r0, r3 |
2011 | b uxn_decode | 2009 | b uxn_decode |
2012 | 2010 | ||
2013 | jcnk: | 2011 | jcnk: |
2014 | wpop8s r3 | 2012 | wpeek8s r3, #-1 |
2015 | wpeek8 r4 | 2013 | wpeek8 r4, #-2 |
2016 | cmp r4, #0 | 2014 | cmp r4, #0 |
2017 | addne r0, r3 | 2015 | addne r0, r3 |
2018 | b uxn_decode | 2016 | b uxn_decode |
2019 | 2017 | ||
2020 | jcn2k: | 2018 | jcn2k: |
2021 | wpeek16 r3, r5 | 2019 | wpeek16 r3, r5, #-1, #-2 |
2022 | wpeek8 r4 | 2020 | wpeek8 r4, #-3 |
2023 | cmp r4, #0 | 2021 | cmp r4, #0 |
2024 | movne r0, r7 | 2022 | movne r0, r7 |
2025 | cmp r4, #0 | 2023 | cmp r4, #0 |
@@ -2030,36 +2028,36 @@ jsrk: | |||
2030 | mov r3, r0 | 2028 | mov r3, r0 |
2031 | sub r3, r3, r7 | 2029 | sub r3, r3, r7 |
2032 | rpush16 r3 | 2030 | rpush16 r3 |
2033 | wpop8s r3 | 2031 | wpeek8s r3, #-1 |
2034 | add r0, r3 | 2032 | add r0, r3 |
2035 | b uxn_decode | 2033 | b uxn_decode |
2036 | 2034 | ||
2037 | jsr2k: | 2035 | jsr2k: |
2038 | mov r3, r0 | 2036 | mov r3, r0 |
2039 | sub r3, r3, r7 | 2037 | sub r3, r3, r7 |
2040 | wpeek16 r3, r5 | 2038 | wpeek16 r3, r5, #-1, #-2 |
2041 | mov r0, r7 | 2039 | mov r0, r7 |
2042 | add r0, r0, r3 | 2040 | add r0, r0, r3 |
2043 | b uxn_decode | 2041 | b uxn_decode |
2044 | 2042 | ||
2045 | sthk: | 2043 | sthk: |
2046 | wpeek8 r3 | 2044 | wpeek8 r3, #-1 |
2047 | rpush8 r3 | 2045 | rpush8 r3 |
2048 | b uxn_decode | 2046 | b uxn_decode |
2049 | 2047 | ||
2050 | sth2k: | 2048 | sth2k: |
2051 | wpeek16 r3, r5 | 2049 | wpeek16 r3, r5, #-1, #-2 |
2052 | rpush16 r3 | 2050 | rpush16 r3 |
2053 | b uxn_decode | 2051 | b uxn_decode |
2054 | 2052 | ||
2055 | ldzk: | 2053 | ldzk: |
2056 | wpeek8 r3 | 2054 | wpeek8 r3, #-1 |
2057 | zload8 r4, r3 | 2055 | zload8 r4, r3 |
2058 | wpush8 r4 | 2056 | wpush8 r4 |
2059 | b uxn_decode | 2057 | b uxn_decode |
2060 | 2058 | ||
2061 | ldz2k: | 2059 | ldz2k: |
2062 | wpeek8 r3 | 2060 | wpeek8 r3, #-1 |
2063 | zload8 r4, r3 | 2061 | zload8 r4, r3 |
2064 | wpush8 r4 | 2062 | wpush8 r4 |
2065 | add r3, #1 | 2063 | add r3, #1 |
@@ -2068,25 +2066,25 @@ ldz2k: | |||
2068 | b uxn_decode | 2066 | b uxn_decode |
2069 | 2067 | ||
2070 | stzk: | 2068 | stzk: |
2071 | wpeek8 r3 | 2069 | wpeek8 r3, #-1 |
2072 | wpeek8 r4 | 2070 | wpeek8 r4, #-2 |
2073 | zsave8 r4, r3 | 2071 | zsave8 r4, r3 |
2074 | b uxn_decode | 2072 | b uxn_decode |
2075 | 2073 | ||
2076 | stz2k: | 2074 | stz2k: |
2077 | wpeek8 r3 | 2075 | wpeek8 r3, #-1 |
2078 | wpeek16 r4, r5 | 2076 | wpeek16 r4, r5, #-2, #-3 |
2079 | zsave16 r4, r3 | 2077 | zsave16 r4, r3 |
2080 | b uxn_decode | 2078 | b uxn_decode |
2081 | 2079 | ||
2082 | ldrk: | 2080 | ldrk: |
2083 | wpop8s r4 | 2081 | wpeek8s r4, #-1 |
2084 | rload8 r3, r4 | 2082 | rload8 r3, r4 |
2085 | wpush8 r3 | 2083 | wpush8 r3 |
2086 | b uxn_decode | 2084 | b uxn_decode |
2087 | 2085 | ||
2088 | ldr2k: | 2086 | ldr2k: |
2089 | wpop8s r4 | 2087 | wpeek8s r4, #-1 |
2090 | rload8 r3, r4 | 2088 | rload8 r3, r4 |
2091 | wpush8 r3 | 2089 | wpush8 r3 |
2092 | add r4, #1 | 2090 | add r4, #1 |
@@ -2095,25 +2093,25 @@ ldr2k: | |||
2095 | b uxn_decode | 2093 | b uxn_decode |
2096 | 2094 | ||
2097 | strk: | 2095 | strk: |
2098 | wpop8s r4 | 2096 | wpeek8s r4, #-1 |
2099 | wpeek8 r3 | 2097 | wpeek8 r3, #-2 |
2100 | rsave8 r3, r4 | 2098 | rsave8 r3, r4 |
2101 | b uxn_decode | 2099 | b uxn_decode |
2102 | 2100 | ||
2103 | str2k: | 2101 | str2k: |
2104 | wpop8s r4 | 2102 | wpeek8s r4, #-1 |
2105 | wpeek16 r3, r5 | 2103 | wpeek16 r3, r5, #-2, #-3 |
2106 | rsave16 r3, r4 | 2104 | rsave16 r3, r4 |
2107 | b uxn_decode | 2105 | b uxn_decode |
2108 | 2106 | ||
2109 | ldak: | 2107 | ldak: |
2110 | wpeek16 r4, r5 | 2108 | wpeek16 r4, r5, #-1, #-2 |
2111 | aload8 r3, r4 | 2109 | aload8 r3, r4 |
2112 | wpush8 r3 | 2110 | wpush8 r3 |
2113 | b uxn_decode | 2111 | b uxn_decode |
2114 | 2112 | ||
2115 | lda2k: | 2113 | lda2k: |
2116 | wpeek16 r4, r5 | 2114 | wpeek16 r4, r5, #-1, #-2 |
2117 | aload8 r3, r4 | 2115 | aload8 r3, r4 |
2118 | wpush8 r3 | 2116 | wpush8 r3 |
2119 | add r4, #1 | 2117 | add r4, #1 |
@@ -2122,62 +2120,62 @@ lda2k: | |||
2122 | b uxn_decode | 2120 | b uxn_decode |
2123 | 2121 | ||
2124 | stak: | 2122 | stak: |
2125 | wpeek16 r4, r5 | 2123 | wpeek16 r4, r5, #-1, #-2 |
2126 | wpeek8 r3 | 2124 | wpeek8 r3, #-3 |
2127 | asave8 r3, r4 | 2125 | asave8 r3, r4 |
2128 | b uxn_decode | 2126 | b uxn_decode |
2129 | 2127 | ||
2130 | sta2k: | 2128 | sta2k: |
2131 | wpeek16 r4, r5 | 2129 | wpeek16 r4, r5, #-1, #-2 |
2132 | wpeek16 r3, r5 | 2130 | wpeek16 r3, r5, #-3, #-4 |
2133 | asave16 r3, r4 | 2131 | asave16 r3, r4 |
2134 | b uxn_decode | 2132 | b uxn_decode |
2135 | 2133 | ||
2136 | addk: | 2134 | addk: |
2137 | wpeek8 r3 | 2135 | wpeek8 r3, #-1 |
2138 | wpeek8 r4 | 2136 | wpeek8 r4, #-2 |
2139 | add r3, r3, r4 | 2137 | add r3, r3, r4 |
2140 | wpush8 r3 | 2138 | wpush8 r3 |
2141 | b uxn_decode | 2139 | b uxn_decode |
2142 | 2140 | ||
2143 | add2k: | 2141 | add2k: |
2144 | wpeek16 r3, r5 | 2142 | wpeek16 r3, r5, #-1, #-2 |
2145 | wpeek16 r4, r5 | 2143 | wpeek16 r4, r5, #-3, #-4 |
2146 | add r3, r3, r4 | 2144 | add r3, r3, r4 |
2147 | wpush16 r3 | 2145 | wpush16 r3 |
2148 | b uxn_decode | 2146 | b uxn_decode |
2149 | 2147 | ||
2150 | subk: | 2148 | subk: |
2151 | wpeek8 r3 | 2149 | wpeek8 r3, #-1 |
2152 | wpeek8 r4 | 2150 | wpeek8 r4, #-2 |
2153 | sub r4, r4, r3 | 2151 | sub r4, r4, r3 |
2154 | wpush8 r4 | 2152 | wpush8 r4 |
2155 | b uxn_decode | 2153 | b uxn_decode |
2156 | 2154 | ||
2157 | sub2k: | 2155 | sub2k: |
2158 | wpeek16 r3, r5 | 2156 | wpeek16 r3, r5, #-1, #-2 |
2159 | wpeek16 r4, r5 | 2157 | wpeek16 r4, r5, #-3, #-4 |
2160 | sub r3, r4, r3 | 2158 | sub r3, r4, r3 |
2161 | wpush16 r3 | 2159 | wpush16 r3 |
2162 | b uxn_decode | 2160 | b uxn_decode |
2163 | 2161 | ||
2164 | mulk: | 2162 | mulk: |
2165 | wpeek8 r3 | 2163 | wpeek8 r3, #-1 |
2166 | wpeek8 r4 | 2164 | wpeek8 r4, #-2 |
2167 | mul r4, r3, r4 | 2165 | mul r4, r3, r4 |
2168 | wpush8 r4 | 2166 | wpush8 r4 |
2169 | b uxn_decode | 2167 | b uxn_decode |
2170 | 2168 | ||
2171 | mul2k: | 2169 | mul2k: |
2172 | wpeek16 r3, r5 | 2170 | wpeek16 r3, r5, #-1, #-2 |
2173 | wpeek16 r4, r5 | 2171 | wpeek16 r4, r5, #-3, #-4 |
2174 | mul r3, r4, r3 | 2172 | mul r3, r4, r3 |
2175 | wpush16 r3 | 2173 | wpush16 r3 |
2176 | b uxn_decode | 2174 | b uxn_decode |
2177 | 2175 | ||
2178 | divk: | 2176 | divk: |
2179 | wpeek8 r3 | 2177 | wpeek8 r3, #-1 |
2180 | wpeek8 r4 | 2178 | wpeek8 r4, #-2 |
2181 | push {r0, r1, r2, r7, lr} | 2179 | push {r0, r1, r2, r7, lr} |
2182 | mov r1, r3 | 2180 | mov r1, r3 |
2183 | mov r0, r4 | 2181 | mov r0, r4 |
@@ -2188,8 +2186,8 @@ divk: | |||
2188 | b uxn_decode | 2186 | b uxn_decode |
2189 | 2187 | ||
2190 | div2k: | 2188 | div2k: |
2191 | wpeek16 r3, r5 | 2189 | wpeek16 r3, r5, #-1, #-2 |
2192 | wpeek16 r4, r5 | 2190 | wpeek16 r4, r5, #-3, #-4 |
2193 | push {r0, r1, r2, r7, lr} | 2191 | push {r0, r1, r2, r7, lr} |
2194 | mov r1, r3 | 2192 | mov r1, r3 |
2195 | mov r0, r4 | 2193 | mov r0, r4 |
@@ -2200,50 +2198,50 @@ div2k: | |||
2200 | b uxn_decode | 2198 | b uxn_decode |
2201 | 2199 | ||
2202 | andk: | 2200 | andk: |
2203 | wpeek8 r3 | 2201 | wpeek8 r3, #-1 |
2204 | wpeek8 r4 | 2202 | wpeek8 r4, #-2 |
2205 | and r3, r3, r4 | 2203 | and r3, r3, r4 |
2206 | wpush8 r3 | 2204 | wpush8 r3 |
2207 | b uxn_decode | 2205 | b uxn_decode |
2208 | 2206 | ||
2209 | and2k: | 2207 | and2k: |
2210 | wpeek16 r3, r5 | 2208 | wpeek16 r3, r5, #-1, #-2 |
2211 | wpeek16 r4, r5 | 2209 | wpeek16 r4, r5, #-3, #-4 |
2212 | and r3, r3, r4 | 2210 | and r3, r3, r4 |
2213 | wpush16 r3 | 2211 | wpush16 r3 |
2214 | b uxn_decode | 2212 | b uxn_decode |
2215 | 2213 | ||
2216 | orak: | 2214 | orak: |
2217 | wpeek8 r3 | 2215 | wpeek8 r3, #-1 |
2218 | wpeek8 r4 | 2216 | wpeek8 r4, #-2 |
2219 | orr r3, r3, r4 | 2217 | orr r3, r3, r4 |
2220 | wpush8 r3 | 2218 | wpush8 r3 |
2221 | b uxn_decode | 2219 | b uxn_decode |
2222 | 2220 | ||
2223 | ora2k: | 2221 | ora2k: |
2224 | wpeek16 r3, r5 | 2222 | wpeek16 r3, r5, #-1, #-2 |
2225 | wpeek16 r4, r5 | 2223 | wpeek16 r4, r5, #-3, #-4 |
2226 | orr r3, r3, r4 | 2224 | orr r3, r3, r4 |
2227 | wpush16 r3 | 2225 | wpush16 r3 |
2228 | b uxn_decode | 2226 | b uxn_decode |
2229 | 2227 | ||
2230 | eork: | 2228 | eork: |
2231 | wpeek8 r3 | 2229 | wpeek8 r3, #-1 |
2232 | wpeek8 r4 | 2230 | wpeek8 r4, #-2 |
2233 | eor r3, r3, r4 | 2231 | eor r3, r3, r4 |
2234 | wpush8 r3 | 2232 | wpush8 r3 |
2235 | b uxn_decode | 2233 | b uxn_decode |
2236 | 2234 | ||
2237 | eor2k: | 2235 | eor2k: |
2238 | wpeek16 r3, r5 | 2236 | wpeek16 r3, r5, #-1, #-2 |
2239 | wpeek16 r4, r5 | 2237 | wpeek16 r4, r5, #-3, #-4 |
2240 | eor r3, r3, r4 | 2238 | eor r3, r3, r4 |
2241 | wpush16 r3 | 2239 | wpush16 r3 |
2242 | b uxn_decode | 2240 | b uxn_decode |
2243 | 2241 | ||
2244 | sftk: | 2242 | sftk: |
2245 | wpeek8 r4 | 2243 | wpeek8 r4, #-1 |
2246 | wpeek8 r3 | 2244 | wpeek8 r3, #-2 |
2247 | lsr r5, r4, #4 | 2245 | lsr r5, r4, #4 |
2248 | and r4, #0x0f | 2246 | and r4, #0x0f |
2249 | lsr r3, r3, r4 | 2247 | lsr r3, r3, r4 |
@@ -2252,8 +2250,8 @@ sftk: | |||
2252 | b uxn_decode | 2250 | b uxn_decode |
2253 | 2251 | ||
2254 | sft2k: | 2252 | sft2k: |
2255 | wpeek8 r4 | 2253 | wpeek8 r4, #-1 |
2256 | wpeek16 r3, r5 | 2254 | wpeek16 r3, r5, #-2, #-3 |
2257 | lsr r5, r4, #4 | 2255 | lsr r5, r4, #4 |
2258 | and r4, #0x0f | 2256 | and r4, #0x0f |
2259 | lsr r3, r3, r4 | 2257 | lsr r3, r3, r4 |
@@ -2265,96 +2263,94 @@ sft2k: | |||
2265 | .align 2 | 2263 | .align 2 |
2266 | 2264 | ||
2267 | inckr: | 2265 | inckr: |
2268 | rpeek8 r3 | 2266 | rpeek8 r3, #-1 |
2269 | add r3, #1 | 2267 | add r3, #1 |
2270 | rpush8 r3 | 2268 | rpush8 r3 |
2271 | b uxn_decode | 2269 | b uxn_decode |
2272 | 2270 | ||
2273 | inc2kr: | 2271 | inc2kr: |
2274 | rpeek16 r3, r5 | 2272 | rpeek16 r3, r5, #-1, #-2 |
2275 | add r3, r3, #1 | 2273 | add r3, r3, #1 |
2276 | rpush16 r3 | 2274 | rpush16 r3 |
2277 | b uxn_decode | 2275 | b uxn_decode |
2278 | 2276 | ||
2279 | popkr: | 2277 | popkr: |
2280 | sub r1, #1 | ||
2281 | b uxn_decode | 2278 | b uxn_decode |
2282 | 2279 | ||
2283 | pop2kr: | 2280 | pop2kr: |
2284 | sub r1, #2 | ||
2285 | b uxn_decode | 2281 | b uxn_decode |
2286 | 2282 | ||
2287 | nipkr: | 2283 | nipkr: |
2288 | rpeek8 r3 | 2284 | rpeek8 r3, #-1 |
2289 | strb r3, [r1, #-1] | 2285 | strb r3, [r1, #-1] |
2290 | b uxn_decode | 2286 | b uxn_decode |
2291 | 2287 | ||
2292 | nip2kr: | 2288 | nip2kr: |
2293 | rpeek16 r3, r5 | 2289 | rpeek16 r3, r5, #-1, #-2 |
2294 | strb r3, [r1, #-1] | 2290 | strb r3, [r1, #-1] |
2295 | lsr r3, #8 | 2291 | lsr r3, #8 |
2296 | strb r3, [r1, #-2] | 2292 | strb r3, [r1, #-2] |
2297 | b uxn_decode | 2293 | b uxn_decode |
2298 | 2294 | ||
2299 | swpkr: | 2295 | swpkr: |
2300 | rpeek8 r3 | 2296 | rpeek8 r3, #-1 |
2301 | rpeek8 r4 | 2297 | rpeek8 r4, #-2 |
2302 | rpush8 r3 | 2298 | rpush8 r3 |
2303 | rpush8 r4 | 2299 | rpush8 r4 |
2304 | b uxn_decode | 2300 | b uxn_decode |
2305 | 2301 | ||
2306 | swp2kr: | 2302 | swp2kr: |
2307 | rpeek16 r3, r5 | 2303 | rpeek16 r3, r5, #-1, #-2 |
2308 | rpeek16 r4, r5 | 2304 | rpeek16 r4, r5, #-3, #-4 |
2309 | rpush16 r3 | 2305 | rpush16 r3 |
2310 | rpush16 r4 | 2306 | rpush16 r4 |
2311 | b uxn_decode | 2307 | b uxn_decode |
2312 | 2308 | ||
2313 | rotkr: | 2309 | rotkr: |
2314 | rpeek8 r5 | 2310 | rpeek8 r5, #-1 |
2315 | rpeek8 r4 | 2311 | rpeek8 r4, #-2 |
2316 | rpeek8 r3 | 2312 | rpeek8 r3, #-3 |
2317 | rpush8 r4 | 2313 | rpush8 r4 |
2318 | rpush8 r5 | 2314 | rpush8 r5 |
2319 | rpush8 r3 | 2315 | rpush8 r3 |
2320 | b uxn_decode | 2316 | b uxn_decode |
2321 | 2317 | ||
2322 | rot2kr: | 2318 | rot2kr: |
2323 | rpeek16 r5, r6 | 2319 | rpeek16 r5, r6, #-1, #-2 |
2324 | rpeek16 r4, r6 | 2320 | rpeek16 r4, r6, #-3, #-4 |
2325 | rpeek16 r3, r6 | 2321 | rpeek16 r3, r6, #-5, #-6 |
2326 | rpush16 r4 | 2322 | rpush16 r4 |
2327 | rpush16 r5 | 2323 | rpush16 r5 |
2328 | rpush16 r3 | 2324 | rpush16 r3 |
2329 | b uxn_decode | 2325 | b uxn_decode |
2330 | 2326 | ||
2331 | dupkr: | 2327 | dupkr: |
2332 | rpeek r3, #-1 | 2328 | rpeek8 r3, #-1 |
2333 | rpush8 r3 | 2329 | rpush8 r3 |
2334 | b uxn_decode | 2330 | b uxn_decode |
2335 | 2331 | ||
2336 | dup2kr: | 2332 | dup2kr: |
2337 | rpeek r3, #-2 | 2333 | rpeek8 r3, #-2 |
2338 | rpeek r4, #-1 | 2334 | rpeek8 r4, #-1 |
2339 | rpush8 r3 | 2335 | rpush8 r3 |
2340 | rpush8 r4 | 2336 | rpush8 r4 |
2341 | b uxn_decode | 2337 | b uxn_decode |
2342 | 2338 | ||
2343 | ovrkr: | 2339 | ovrkr: |
2344 | rpeek r3, #-2 | 2340 | rpeek8 r3, #-2 |
2345 | rpush8 r3 | 2341 | rpush8 r3 |
2346 | b uxn_decode | 2342 | b uxn_decode |
2347 | 2343 | ||
2348 | ovr2kr: | 2344 | ovr2kr: |
2349 | rpeek r3, #-4 | 2345 | rpeek8 r3, #-4 |
2350 | rpeek r4, #-3 | 2346 | rpeek8 r4, #-3 |
2351 | rpush8 r3 | 2347 | rpush8 r3 |
2352 | rpush8 r4 | 2348 | rpush8 r4 |
2353 | b uxn_decode | 2349 | b uxn_decode |
2354 | 2350 | ||
2355 | equkr: | 2351 | equkr: |
2356 | rpeek8 r3 | 2352 | rpeek8 r3, #-1 |
2357 | rpeek8 r4 | 2353 | rpeek8 r4, #-2 |
2358 | sub r3, r4, r3 | 2354 | sub r3, r4, r3 |
2359 | rsbs r4, r3, #0 | 2355 | rsbs r4, r3, #0 |
2360 | adc r4, r4, r3 | 2356 | adc r4, r4, r3 |
@@ -2362,8 +2358,8 @@ equkr: | |||
2362 | b uxn_decode | 2358 | b uxn_decode |
2363 | 2359 | ||
2364 | equ2kr: | 2360 | equ2kr: |
2365 | rpeek16 r3, r5 | 2361 | rpeek16 r3, r5, #-1, #-2 |
2366 | rpeek16 r4, r5 | 2362 | rpeek16 r4, r5, #-3, #-4 |
2367 | sub r3, r4, r3 | 2363 | sub r3, r4, r3 |
2368 | rsbs r4, r3, #0 | 2364 | rsbs r4, r3, #0 |
2369 | adc r4, r4, r3 | 2365 | adc r4, r4, r3 |
@@ -2371,24 +2367,24 @@ equ2kr: | |||
2371 | b uxn_decode | 2367 | b uxn_decode |
2372 | 2368 | ||
2373 | neqkr: | 2369 | neqkr: |
2374 | rpeek8 r3 | 2370 | rpeek8 r3, #-1 |
2375 | rpeek8 r4 | 2371 | rpeek8 r4, #-2 |
2376 | subs r3, r4, r3 | 2372 | subs r3, r4, r3 |
2377 | movne r3, #1 | 2373 | movne r3, #1 |
2378 | rpush8 r3 | 2374 | rpush8 r3 |
2379 | b uxn_decode | 2375 | b uxn_decode |
2380 | 2376 | ||
2381 | neq2kr: | 2377 | neq2kr: |
2382 | rpeek16 r3, r5 | 2378 | rpeek16 r3, r5, #-1, #-2 |
2383 | rpeek16 r4, r5 | 2379 | rpeek16 r4, r5, #-3, #-4 |
2384 | subs r3, r4, r3 | 2380 | subs r3, r4, r3 |
2385 | movne r3, #1 | 2381 | movne r3, #1 |
2386 | rpush8 r3 | 2382 | rpush8 r3 |
2387 | b uxn_decode | 2383 | b uxn_decode |
2388 | 2384 | ||
2389 | gthkr: | 2385 | gthkr: |
2390 | rpeek8 r3 | 2386 | rpeek8 r3, #-1 |
2391 | rpeek8 r4 | 2387 | rpeek8 r4, #-2 |
2392 | cmp r4, r3 | 2388 | cmp r4, r3 |
2393 | movls r3, #0 | 2389 | movls r3, #0 |
2394 | movhi r3, #1 | 2390 | movhi r3, #1 |
@@ -2396,8 +2392,8 @@ gthkr: | |||
2396 | b uxn_decode | 2392 | b uxn_decode |
2397 | 2393 | ||
2398 | gth2kr: | 2394 | gth2kr: |
2399 | rpeek16 r3, r5 | 2395 | rpeek16 r3, r5, #-1, #-2 |
2400 | rpeek16 r4, r5 | 2396 | rpeek16 r4, r5, #-3, #-4 |
2401 | cmp r4, r3 | 2397 | cmp r4, r3 |
2402 | movls r3, #0 | 2398 | movls r3, #0 |
2403 | movhi r3, #1 | 2399 | movhi r3, #1 |
@@ -2405,8 +2401,8 @@ gth2kr: | |||
2405 | b uxn_decode | 2401 | b uxn_decode |
2406 | 2402 | ||
2407 | lthkr: | 2403 | lthkr: |
2408 | rpeek8 r3 | 2404 | rpeek8 r3, #-1 |
2409 | rpeek8 r4 | 2405 | rpeek8 r4, #-2 |
2410 | cmp r4, r3 | 2406 | cmp r4, r3 |
2411 | movcs r3, #0 | 2407 | movcs r3, #0 |
2412 | movcc r3, #1 | 2408 | movcc r3, #1 |
@@ -2414,8 +2410,8 @@ lthkr: | |||
2414 | b uxn_decode | 2410 | b uxn_decode |
2415 | 2411 | ||
2416 | lth2kr: | 2412 | lth2kr: |
2417 | rpeek16 r3, r5 | 2413 | rpeek16 r3, r5, #-1, #-2 |
2418 | rpeek16 r4, r5 | 2414 | rpeek16 r4, r5, #-3, #-4 |
2419 | cmp r4, r3 | 2415 | cmp r4, r3 |
2420 | movcs r3, #0 | 2416 | movcs r3, #0 |
2421 | movcc r3, #1 | 2417 | movcc r3, #1 |
@@ -2423,26 +2419,26 @@ lth2kr: | |||
2423 | b uxn_decode | 2419 | b uxn_decode |
2424 | 2420 | ||
2425 | jmpkr: | 2421 | jmpkr: |
2426 | rpop8s r3 | 2422 | rpeek8s r3, #-1 |
2427 | add r0, r3 | 2423 | add r0, r3 |
2428 | b uxn_decode | 2424 | b uxn_decode |
2429 | 2425 | ||
2430 | jmp2kr: | 2426 | jmp2kr: |
2431 | rpeek16 r3, r5 | 2427 | rpeek16 r3, r5, #-1, #-2 |
2432 | mov r0, r7 | 2428 | mov r0, r7 |
2433 | add r0, r0, r3 | 2429 | add r0, r0, r3 |
2434 | b uxn_decode | 2430 | b uxn_decode |
2435 | 2431 | ||
2436 | jcnkr: | 2432 | jcnkr: |
2437 | rpop8s r3 | 2433 | rpeek8s r3, #-1 |
2438 | rpeek8 r4 | 2434 | rpeek8 r4, #-2 |
2439 | cmp r4, #0 | 2435 | cmp r4, #0 |
2440 | addne r0, r3 | 2436 | addne r0, r3 |
2441 | b uxn_decode | 2437 | b uxn_decode |
2442 | 2438 | ||
2443 | jcn2kr: | 2439 | jcn2kr: |
2444 | rpeek16 r3, r5 | 2440 | rpeek16 r3, r5, #-1, #-2 |
2445 | rpeek8 r4 | 2441 | rpeek8 r4, #-3 |
2446 | cmp r4, #0 | 2442 | cmp r4, #0 |
2447 | movne r0, r7 | 2443 | movne r0, r7 |
2448 | cmp r4, #0 | 2444 | cmp r4, #0 |
@@ -2452,37 +2448,37 @@ jcn2kr: | |||
2452 | jsrkr: | 2448 | jsrkr: |
2453 | mov r3, r0 | 2449 | mov r3, r0 |
2454 | sub r3, r3, r7 | 2450 | sub r3, r3, r7 |
2455 | rpush16 r3 | 2451 | wpush16 r3 |
2456 | rpop8s r3 | 2452 | rpeek8s r3, #-1 |
2457 | add r0, r3 | 2453 | add r0, r3 |
2458 | b uxn_decode | 2454 | b uxn_decode |
2459 | 2455 | ||
2460 | jsr2kr: | 2456 | jsr2kr: |
2461 | mov r3, r0 | 2457 | mov r3, r0 |
2462 | sub r3, r3, r7 | 2458 | sub r3, r3, r7 |
2463 | rpeek16 r3, r5 | 2459 | rpeek16 r3, r5, #-1, #-2 |
2464 | mov r0, r7 | 2460 | mov r0, r7 |
2465 | add r0, r0, r3 | 2461 | add r0, r0, r3 |
2466 | b uxn_decode | 2462 | b uxn_decode |
2467 | 2463 | ||
2468 | sthkr: | 2464 | sthkr: |
2469 | rpeek8 r3 | 2465 | rpeek8 r3, #-1 |
2470 | wpush8 r3 | 2466 | wpush8 r3 |
2471 | b uxn_decode | 2467 | b uxn_decode |
2472 | 2468 | ||
2473 | sth2kr: | 2469 | sth2kr: |
2474 | rpeek16 r3, r5 | 2470 | rpeek16 r3, r5, #-1, #-2 |
2475 | wpush16 r3 | 2471 | wpush16 r3 |
2476 | b uxn_decode | 2472 | b uxn_decode |
2477 | 2473 | ||
2478 | ldzkr: | 2474 | ldzkr: |
2479 | rpeek8 r3 | 2475 | rpeek8 r3, #-1 |
2480 | zload8 r4, r3 | 2476 | zload8 r4, r3 |
2481 | rpush8 r4 | 2477 | rpush8 r4 |
2482 | b uxn_decode | 2478 | b uxn_decode |
2483 | 2479 | ||
2484 | ldz2kr: | 2480 | ldz2kr: |
2485 | rpeek8 r3 | 2481 | rpeek8 r3, #-1 |
2486 | zload8 r4, r3 | 2482 | zload8 r4, r3 |
2487 | rpush8 r4 | 2483 | rpush8 r4 |
2488 | add r3, #1 | 2484 | add r3, #1 |
@@ -2491,25 +2487,25 @@ ldz2kr: | |||
2491 | b uxn_decode | 2487 | b uxn_decode |
2492 | 2488 | ||
2493 | stzkr: | 2489 | stzkr: |
2494 | rpeek8 r3 | 2490 | rpeek8 r3, #-1 |
2495 | rpeek8 r4 | 2491 | rpeek8 r4, #-2 |
2496 | zsave8 r4, r3 | 2492 | zsave8 r4, r3 |
2497 | b uxn_decode | 2493 | b uxn_decode |
2498 | 2494 | ||
2499 | stz2kr: | 2495 | stz2kr: |
2500 | rpeek8 r3 | 2496 | rpeek8 r3, #-1 |
2501 | rpeek16 r4, r5 | 2497 | rpeek16 r4, r5, #-2, #-3 |
2502 | zsave16 r4, r3 | 2498 | zsave16 r4, r3 |
2503 | b uxn_decode | 2499 | b uxn_decode |
2504 | 2500 | ||
2505 | ldrkr: | 2501 | ldrkr: |
2506 | rpop8s r4 | 2502 | rpeek8s r4, #-1 |
2507 | rload8 r3, r4 | 2503 | rload8 r3, r4 |
2508 | rpush8 r3 | 2504 | rpush8 r3 |
2509 | b uxn_decode | 2505 | b uxn_decode |
2510 | 2506 | ||
2511 | ldr2kr: | 2507 | ldr2kr: |
2512 | rpop8s r4 | 2508 | rpeek8s r4, #-1 |
2513 | rload8 r3, r4 | 2509 | rload8 r3, r4 |
2514 | rpush8 r3 | 2510 | rpush8 r3 |
2515 | add r4, #1 | 2511 | add r4, #1 |
@@ -2518,25 +2514,25 @@ ldr2kr: | |||
2518 | b uxn_decode | 2514 | b uxn_decode |
2519 | 2515 | ||
2520 | strkr: | 2516 | strkr: |
2521 | rpop8s r4 | 2517 | rpeek8s r4, #-1 |
2522 | rpeek8 r3 | 2518 | rpeek8 r3, #-2 |
2523 | rsave8 r3, r4 | 2519 | rsave8 r3, r4 |
2524 | b uxn_decode | 2520 | b uxn_decode |
2525 | 2521 | ||
2526 | str2kr: | 2522 | str2kr: |
2527 | rpop8s r4 | 2523 | rpeek8s r4, #-1 |
2528 | rpeek16 r3, r5 | 2524 | rpeek16 r3, r5, #-1, #-2 |
2529 | rsave16 r3, r4 | 2525 | rsave16 r3, r4 |
2530 | b uxn_decode | 2526 | b uxn_decode |
2531 | 2527 | ||
2532 | ldakr: | 2528 | ldakr: |
2533 | rpeek16 r4, r5 | 2529 | rpeek16 r4, r5, #-1, #-2 |
2534 | aload8 r3, r4 | 2530 | aload8 r3, r4 |
2535 | rpush8 r3 | 2531 | rpush8 r3 |
2536 | b uxn_decode | 2532 | b uxn_decode |
2537 | 2533 | ||
2538 | lda2kr: | 2534 | lda2kr: |
2539 | rpeek16 r4, r5 | 2535 | rpeek16 r4, r5, #-1, #-2 |
2540 | aload8 r3, r4 | 2536 | aload8 r3, r4 |
2541 | rpush8 r3 | 2537 | rpush8 r3 |
2542 | add r4, #1 | 2538 | add r4, #1 |
@@ -2545,62 +2541,62 @@ lda2kr: | |||
2545 | b uxn_decode | 2541 | b uxn_decode |
2546 | 2542 | ||
2547 | stakr: | 2543 | stakr: |
2548 | rpeek16 r4, r5 | 2544 | rpeek16 r4, r5, #-1, #-2 |
2549 | rpeek8 r3 | 2545 | rpeek8 r3, #-3 |
2550 | asave8 r3, r4 | 2546 | asave8 r3, r4 |
2551 | b uxn_decode | 2547 | b uxn_decode |
2552 | 2548 | ||
2553 | sta2kr: | 2549 | sta2kr: |
2554 | rpeek16 r4, r5 | 2550 | rpeek16 r4, r5, #-1, #-2 |
2555 | rpeek16 r3, r5 | 2551 | rpeek16 r3, r5, #-3, #-4 |
2556 | asave16 r3, r4 | 2552 | asave16 r3, r4 |
2557 | b uxn_decode | 2553 | b uxn_decode |
2558 | 2554 | ||
2559 | addkr: | 2555 | addkr: |
2560 | rpeek8 r3 | 2556 | rpeek8 r3, #-1 |
2561 | rpeek8 r4 | 2557 | rpeek8 r4, #-2 |
2562 | add r3, r3, r4 | 2558 | add r3, r3, r4 |
2563 | rpush8 r3 | 2559 | rpush8 r3 |
2564 | b uxn_decode | 2560 | b uxn_decode |
2565 | 2561 | ||
2566 | add2kr: | 2562 | add2kr: |
2567 | rpeek16 r3, r5 | 2563 | rpeek16 r3, r5, #-1, #-2 |
2568 | rpeek16 r4, r5 | 2564 | rpeek16 r4, r5, #-3, #-4 |
2569 | add r3, r3, r4 | 2565 | add r3, r3, r4 |
2570 | rpush16 r3 | 2566 | rpush16 r3 |
2571 | b uxn_decode | 2567 | b uxn_decode |
2572 | 2568 | ||
2573 | subkr: | 2569 | subkr: |
2574 | rpeek8 r3 | 2570 | rpeek8 r3, #-1 |
2575 | rpeek8 r4 | 2571 | rpeek8 r4, #-2 |
2576 | sub r4, r4, r3 | 2572 | sub r4, r4, r3 |
2577 | rpush8 r4 | 2573 | rpush8 r4 |
2578 | b uxn_decode | 2574 | b uxn_decode |
2579 | 2575 | ||
2580 | sub2kr: | 2576 | sub2kr: |
2581 | rpeek16 r3, r5 | 2577 | rpeek16 r3, r5, #-1, #-2 |
2582 | rpeek16 r4, r5 | 2578 | rpeek16 r4, r5, #-3, #-4 |
2583 | sub r3, r4, r3 | 2579 | sub r3, r4, r3 |
2584 | rpush16 r3 | 2580 | rpush16 r3 |
2585 | b uxn_decode | 2581 | b uxn_decode |
2586 | 2582 | ||
2587 | mulkr: | 2583 | mulkr: |
2588 | rpeek8 r3 | 2584 | rpeek8 r3, #-1 |
2589 | rpeek8 r4 | 2585 | rpeek8 r4, #-2 |
2590 | mul r4, r3, r4 | 2586 | mul r4, r3, r4 |
2591 | rpush8 r4 | 2587 | rpush8 r4 |
2592 | b uxn_decode | 2588 | b uxn_decode |
2593 | 2589 | ||
2594 | mul2kr: | 2590 | mul2kr: |
2595 | rpeek16 r3, r5 | 2591 | rpeek16 r3, r5, #-1, #-2 |
2596 | rpeek16 r4, r5 | 2592 | rpeek16 r4, r5, #-3, #-4 |
2597 | mul r3, r4, r3 | 2593 | mul r3, r4, r3 |
2598 | rpush16 r3 | 2594 | rpush16 r3 |
2599 | b uxn_decode | 2595 | b uxn_decode |
2600 | 2596 | ||
2601 | divkr: | 2597 | divkr: |
2602 | rpeek8 r3 | 2598 | rpeek8 r3, #-1 |
2603 | rpeek8 r4 | 2599 | rpeek8 r4, #-2 |
2604 | push {r0, r1, r2, r7, lr} | 2600 | push {r0, r1, r2, r7, lr} |
2605 | mov r1, r3 | 2601 | mov r1, r3 |
2606 | mov r0, r4 | 2602 | mov r0, r4 |
@@ -2611,8 +2607,8 @@ divkr: | |||
2611 | b uxn_decode | 2607 | b uxn_decode |
2612 | 2608 | ||
2613 | div2kr: | 2609 | div2kr: |
2614 | rpeek16 r3, r5 | 2610 | rpeek16 r3, r5, #-1, #-2 |
2615 | rpeek16 r4, r5 | 2611 | rpeek16 r4, r5, #-3, #-4 |
2616 | push {r0, r1, r2, r7, lr} | 2612 | push {r0, r1, r2, r7, lr} |
2617 | mov r1, r3 | 2613 | mov r1, r3 |
2618 | mov r0, r4 | 2614 | mov r0, r4 |
@@ -2623,50 +2619,50 @@ div2kr: | |||
2623 | b uxn_decode | 2619 | b uxn_decode |
2624 | 2620 | ||
2625 | andkr: | 2621 | andkr: |
2626 | rpeek8 r3 | 2622 | rpeek8 r3, #-1 |
2627 | rpeek8 r4 | 2623 | rpeek8 r4, #-2 |
2628 | and r3, r3, r4 | 2624 | and r3, r3, r4 |
2629 | rpush8 r3 | 2625 | rpush8 r3 |
2630 | b uxn_decode | 2626 | b uxn_decode |
2631 | 2627 | ||
2632 | and2kr: | 2628 | and2kr: |
2633 | rpeek16 r3, r5 | 2629 | rpeek16 r3, r5, #-1, #-2 |
2634 | rpeek16 r4, r5 | 2630 | rpeek16 r4, r5, #-3, #-4 |
2635 | and r3, r3, r4 | 2631 | and r3, r3, r4 |
2636 | rpush16 r3 | 2632 | rpush16 r3 |
2637 | b uxn_decode | 2633 | b uxn_decode |
2638 | 2634 | ||
2639 | orakr: | 2635 | orakr: |
2640 | rpeek8 r3 | 2636 | rpeek8 r3, #-1 |
2641 | rpeek8 r4 | 2637 | rpeek8 r4, #-2 |
2642 | orr r3, r3, r4 | 2638 | orr r3, r3, r4 |
2643 | rpush8 r3 | 2639 | rpush8 r3 |
2644 | b uxn_decode | 2640 | b uxn_decode |
2645 | 2641 | ||
2646 | ora2kr: | 2642 | ora2kr: |
2647 | rpeek16 r3, r5 | 2643 | rpeek16 r3, r5, #-1, #-2 |
2648 | rpeek16 r4, r5 | 2644 | rpeek16 r4, r5, #-3, #-4 |
2649 | orr r3, r3, r4 | 2645 | orr r3, r3, r4 |
2650 | rpush16 r3 | 2646 | rpush16 r3 |
2651 | b uxn_decode | 2647 | b uxn_decode |
2652 | 2648 | ||
2653 | eorkr: | 2649 | eorkr: |
2654 | rpeek8 r3 | 2650 | rpeek8 r3, #-1 |
2655 | rpeek8 r4 | 2651 | rpeek8 r4, #-2 |
2656 | eor r3, r3, r4 | 2652 | eor r3, r3, r4 |
2657 | rpush8 r3 | 2653 | rpush8 r3 |
2658 | b uxn_decode | 2654 | b uxn_decode |
2659 | 2655 | ||
2660 | eor2kr: | 2656 | eor2kr: |
2661 | rpeek16 r3, r5 | 2657 | rpeek16 r3, r5, #-1, #-2 |
2662 | rpeek16 r4, r5 | 2658 | rpeek16 r4, r5, #-3, #-4 |
2663 | eor r3, r3, r4 | 2659 | eor r3, r3, r4 |
2664 | rpush16 r3 | 2660 | rpush16 r3 |
2665 | b uxn_decode | 2661 | b uxn_decode |
2666 | 2662 | ||
2667 | sftkr: | 2663 | sftkr: |
2668 | rpeek8 r4 | 2664 | rpeek8 r4, #-1 |
2669 | rpeek8 r3 | 2665 | rpeek8 r3, #-2 |
2670 | lsr r5, r4, #4 | 2666 | lsr r5, r4, #4 |
2671 | and r4, #0x0f | 2667 | and r4, #0x0f |
2672 | lsr r3, r3, r4 | 2668 | lsr r3, r3, r4 |
@@ -2675,8 +2671,8 @@ sftkr: | |||
2675 | b uxn_decode | 2671 | b uxn_decode |
2676 | 2672 | ||
2677 | sft2kr: | 2673 | sft2kr: |
2678 | rpeek8 r4 | 2674 | rpeek8 r4, #-1 |
2679 | rpeek16 r3, r5 | 2675 | rpeek16 r3, r5, #-2, #-3 |
2680 | lsr r5, r4, #4 | 2676 | lsr r5, r4, #4 |
2681 | and r4, #0x0f | 2677 | and r4, #0x0f |
2682 | lsr r3, r3, r4 | 2678 | lsr r3, r3, r4 |