aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2023-08-30 11:09:34 +0200
committerBad Diode <bd@badd10de.dev>2023-08-30 11:09:34 +0200
commit6a01445ef315c60a5f40b842d24e1e0d34a5d070 (patch)
tree8c279272574cfe487392eceef43108b75776a36b /src
parent033b0d78a5081e86fdfb70ca23fab627f8cf2ce0 (diff)
downloaduxngba-6a01445ef315c60a5f40b842d24e1e0d34a5d070.tar.gz
uxngba-6a01445ef315c60a5f40b842d24e1e0d34a5d070.zip
Fix k mode instructions
Diffstat (limited to 'src')
-rw-r--r--src/main.c47
-rw-r--r--src/rom.c5
-rw-r--r--src/uxn-core.s480
3 files changed, 268 insertions, 264 deletions
diff --git a/src/main.c b/src/main.c
index c6e5b7d..70d1445 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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
243int 246int
244main(void) { 247main(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 @@
1extern u8 _binary_build_uxn_rom_start[];
2extern u8 _binary_build_uxn_rom_size[];
3
4u8 *uxn_rom;
5size_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
673deik: 673deik:
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
696dei2k: 696dei2k:
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
719deok: 719deok:
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
743deo2k: 743deo2k:
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
767deikr: 767deikr:
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
790dei2kr: 790dei2kr:
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
813deokr: 813deokr:
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
837deo2kr: 837deo2kr:
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
1062dup: 1062dup:
1063 wpeek r3, #-1 1063 wpeek8 r3, #-1
1064 wpush8 r3 1064 wpush8 r3
1065 b uxn_decode 1065 b uxn_decode
1066 1066
1067dup2: 1067dup2:
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
1074ovr: 1074ovr:
1075 wpeek r3, #-2 1075 wpeek8 r3, #-2
1076 wpush8 r3 1076 wpush8 r3
1077 b uxn_decode 1077 b uxn_decode
1078 1078
1079ovr2: 1079ovr2:
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
1433popr: 1433popr:
1434 sub r1, #1 1434 sub r2, #1
1435 b uxn_decode 1435 b uxn_decode
1436 1436
1437pop2r: 1437pop2r:
1438 sub r1, #2 1438 sub r2, #2
1439 b uxn_decode 1439 b uxn_decode
1440 1440
1441nipr: 1441nipr:
@@ -1483,25 +1483,25 @@ rot2r:
1483 b uxn_decode 1483 b uxn_decode
1484 1484
1485dupr: 1485dupr:
1486 rpeek r3, #-1 1486 rpeek8 r3, #-1
1487 rpush8 r3 1487 rpush8 r3
1488 b uxn_decode 1488 b uxn_decode
1489 1489
1490dup2r: 1490dup2r:
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
1497ovrr: 1497ovrr:
1498 rpeek r3, #-2 1498 rpeek8 r3, #-2
1499 rpush8 r3 1499 rpush8 r3
1500 b uxn_decode 1500 b uxn_decode
1501 1501
1502ovr2r: 1502ovr2r:
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:
1606jsrr: 1606jsrr:
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
1844inck: 1844inck:
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
1850inc2k: 1850inc2k:
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
1856popk: 1856popk:
1857 sub r1, #1
1858 b uxn_decode 1857 b uxn_decode
1859 1858
1860pop2k: 1859pop2k:
1861 sub r1, #2
1862 b uxn_decode 1860 b uxn_decode
1863 1861
1864nipk: 1862nipk:
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
1869nip2k: 1867nip2k:
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
1876swpk: 1874swpk:
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
1883swp2k: 1881swp2k:
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
1890rotk: 1888rotk:
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
1899rot2k: 1897rot2k:
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
1908dupk: 1906dupk:
1909 wpeek r3, #-1 1907 wpeek8 r3, #-1
1910 wpush8 r3 1908 wpush8 r3
1911 b uxn_decode 1909 b uxn_decode
1912 1910
1913dup2k: 1911dup2k:
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
1920ovrk: 1918ovrk:
1921 wpeek r3, #-2 1919 wpeek8 r3, #-2
1922 wpush8 r3 1920 wpush8 r3
1923 b uxn_decode 1921 b uxn_decode
1924 1922
1925ovr2k: 1923ovr2k:
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
1932equk: 1930equk:
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
1941equ2k: 1939equ2k:
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
1950neqk: 1948neqk:
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
1958neq2k: 1956neq2k:
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
1966gthk: 1964gthk:
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
1975gth2k: 1973gth2k:
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
1984lthk: 1982lthk:
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
1993lth2k: 1991lth2k:
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
2002jmpk: 2000jmpk:
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
2007jmp2k: 2005jmp2k:
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
2013jcnk: 2011jcnk:
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
2020jcn2k: 2018jcn2k:
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
2037jsr2k: 2035jsr2k:
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
2045sthk: 2043sthk:
2046 wpeek8 r3 2044 wpeek8 r3, #-1
2047 rpush8 r3 2045 rpush8 r3
2048 b uxn_decode 2046 b uxn_decode
2049 2047
2050sth2k: 2048sth2k:
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
2055ldzk: 2053ldzk:
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
2061ldz2k: 2059ldz2k:
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
2070stzk: 2068stzk:
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
2076stz2k: 2074stz2k:
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
2082ldrk: 2080ldrk:
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
2088ldr2k: 2086ldr2k:
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
2097strk: 2095strk:
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
2103str2k: 2101str2k:
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
2109ldak: 2107ldak:
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
2115lda2k: 2113lda2k:
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
2124stak: 2122stak:
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
2130sta2k: 2128sta2k:
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
2136addk: 2134addk:
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
2143add2k: 2141add2k:
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
2150subk: 2148subk:
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
2157sub2k: 2155sub2k:
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
2164mulk: 2162mulk:
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
2171mul2k: 2169mul2k:
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
2178divk: 2176divk:
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
2190div2k: 2188div2k:
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
2202andk: 2200andk:
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
2209and2k: 2207and2k:
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
2216orak: 2214orak:
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
2223ora2k: 2221ora2k:
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
2230eork: 2228eork:
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
2237eor2k: 2235eor2k:
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
2244sftk: 2242sftk:
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
2254sft2k: 2252sft2k:
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
2267inckr: 2265inckr:
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
2273inc2kr: 2271inc2kr:
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
2279popkr: 2277popkr:
2280 sub r1, #1
2281 b uxn_decode 2278 b uxn_decode
2282 2279
2283pop2kr: 2280pop2kr:
2284 sub r1, #2
2285 b uxn_decode 2281 b uxn_decode
2286 2282
2287nipkr: 2283nipkr:
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
2292nip2kr: 2288nip2kr:
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
2299swpkr: 2295swpkr:
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
2306swp2kr: 2302swp2kr:
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
2313rotkr: 2309rotkr:
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
2322rot2kr: 2318rot2kr:
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
2331dupkr: 2327dupkr:
2332 rpeek r3, #-1 2328 rpeek8 r3, #-1
2333 rpush8 r3 2329 rpush8 r3
2334 b uxn_decode 2330 b uxn_decode
2335 2331
2336dup2kr: 2332dup2kr:
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
2343ovrkr: 2339ovrkr:
2344 rpeek r3, #-2 2340 rpeek8 r3, #-2
2345 rpush8 r3 2341 rpush8 r3
2346 b uxn_decode 2342 b uxn_decode
2347 2343
2348ovr2kr: 2344ovr2kr:
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
2355equkr: 2351equkr:
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
2364equ2kr: 2360equ2kr:
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
2373neqkr: 2369neqkr:
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
2381neq2kr: 2377neq2kr:
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
2389gthkr: 2385gthkr:
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
2398gth2kr: 2394gth2kr:
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
2407lthkr: 2403lthkr:
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
2416lth2kr: 2412lth2kr:
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
2425jmpkr: 2421jmpkr:
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
2430jmp2kr: 2426jmp2kr:
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
2436jcnkr: 2432jcnkr:
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
2443jcn2kr: 2439jcn2kr:
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:
2452jsrkr: 2448jsrkr:
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
2460jsr2kr: 2456jsr2kr:
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
2468sthkr: 2464sthkr:
2469 rpeek8 r3 2465 rpeek8 r3, #-1
2470 wpush8 r3 2466 wpush8 r3
2471 b uxn_decode 2467 b uxn_decode
2472 2468
2473sth2kr: 2469sth2kr:
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
2478ldzkr: 2474ldzkr:
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
2484ldz2kr: 2480ldz2kr:
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
2493stzkr: 2489stzkr:
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
2499stz2kr: 2495stz2kr:
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
2505ldrkr: 2501ldrkr:
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
2511ldr2kr: 2507ldr2kr:
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
2520strkr: 2516strkr:
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
2526str2kr: 2522str2kr:
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
2532ldakr: 2528ldakr:
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
2538lda2kr: 2534lda2kr:
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
2547stakr: 2543stakr:
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
2553sta2kr: 2549sta2kr:
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
2559addkr: 2555addkr:
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
2566add2kr: 2562add2kr:
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
2573subkr: 2569subkr:
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
2580sub2kr: 2576sub2kr:
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
2587mulkr: 2583mulkr:
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
2594mul2kr: 2590mul2kr:
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
2601divkr: 2597divkr:
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
2613div2kr: 2609div2kr:
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
2625andkr: 2621andkr:
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
2632and2kr: 2628and2kr:
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
2639orakr: 2635orakr:
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
2646ora2kr: 2642ora2kr:
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
2653eorkr: 2649eorkr:
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
2660eor2kr: 2656eor2kr:
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
2667sftkr: 2663sftkr:
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
2677sft2kr: 2673sft2kr:
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