diff options
author | Bad Diode <bd@badd10de.dev> | 2023-08-29 18:29:07 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2023-08-29 18:29:07 +0200 |
commit | f1ba75ceb98f51e91e45f346d4bafb33d6f26e79 (patch) | |
tree | b1fbb49b3aab15d7201ad66d85611b4f57156c59 /src | |
parent | 56c43c1e27fb6cd2c536ce12a199ad69acfd3633 (diff) | |
download | uxngba-f1ba75ceb98f51e91e45f346d4bafb33d6f26e79.tar.gz uxngba-f1ba75ceb98f51e91e45f346d4bafb33d6f26e79.zip |
Fix strh operations on the return stack
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 298 | ||||
-rw-r--r-- | src/uxn-core.s | 8 |
2 files changed, 154 insertions, 152 deletions
@@ -92,132 +92,134 @@ init_uxn() { | |||
92 | // uxn_boot(u, uxn_ram, uxn_dei, uxn_deo); | 92 | // uxn_boot(u, uxn_ram, uxn_dei, uxn_deo); |
93 | 93 | ||
94 | // Copy rom to VM. | 94 | // Copy rom to VM. |
95 | u8 uxn_rom[] = { | 95 | // u8 uxn_rom[] = { |
96 | // // ADD test. | 96 | // // // ADD test. |
97 | // 0x80, 0x04, 0x80, 0x08, 0x18, // #04 #08 ADD -> 0c | 97 | // // 0x80, 0x04, 0x80, 0x08, 0x18, // #04 #08 ADD -> 0c |
98 | // 0xa0, 0x00, 0x04, 0xa0, 0x00, 0x08, 0x38, // #0004 #0008 ADD2 -> 000c | 98 | // // 0xa0, 0x00, 0x04, 0xa0, 0x00, 0x08, 0x38, // #0004 #0008 ADD2 -> 000c |
99 | // 0xa0, 0x00, 0xff, 0xa0, 0x00, 0x02, 0x38, // #00ff #0002 ADD2 -> 0101 | 99 | // // 0xa0, 0x00, 0xff, 0xa0, 0x00, 0x02, 0x38, // #00ff #0002 ADD2 -> 0101 |
100 | // // SUB test. | 100 | // // // SUB test. |
101 | // 0x80, 0x08, 0x80, 0x03, 0x19, // #08 #03 SUB -> 05 | 101 | // // 0x80, 0x08, 0x80, 0x03, 0x19, // #08 #03 SUB -> 05 |
102 | // 0xa0, 0x00, 0x08, 0xa0, 0x00, 0x03, 0x39, // #0008 #0003 SUB2 -> 0005 | 102 | // // 0xa0, 0x00, 0x08, 0xa0, 0x00, 0x03, 0x39, // #0008 #0003 SUB2 -> 0005 |
103 | // 0xa0, 0x01, 0x01, 0xa0, 0x00, 0x02, 0x39, // #0008 #0003 SUB2 -> 00ff | 103 | // // 0xa0, 0x01, 0x01, 0xa0, 0x00, 0x02, 0x39, // #0008 #0003 SUB2 -> 00ff |
104 | // // MUL test. | 104 | // // // MUL test. |
105 | // 0x80, 0x03, 0x80, 0x04, 0x1a, // #03 #04 MUL -> 0c | 105 | // // 0x80, 0x03, 0x80, 0x04, 0x1a, // #03 #04 MUL -> 0c |
106 | // 0xa0, 0x00, 0x03, 0xa0, 0x00, 0x04, 0x3a, // #0003 #0004 MUL2 -> 000c | 106 | // // 0xa0, 0x00, 0x03, 0xa0, 0x00, 0x04, 0x3a, // #0003 #0004 MUL2 -> 000c |
107 | // 0xa0, 0x00, 0xff, 0xa0, 0x00, 0x02, 0x3a, // #00ff #0002 MUL2 -> 01fe | 107 | // // 0xa0, 0x00, 0xff, 0xa0, 0x00, 0x02, 0x3a, // #00ff #0002 MUL2 -> 01fe |
108 | // // DIV test. | 108 | // // // DIV test. |
109 | // 0x80, 0x08, 0x80, 0x04, 0x1b, // #08 #04 DIV -> 02 | 109 | // // 0x80, 0x08, 0x80, 0x04, 0x1b, // #08 #04 DIV -> 02 |
110 | // 0xa0, 0x00, 0x08, 0xa0, 0x00, 0x04, 0x3b, // #0008 #0004 DIV2 -> 0002 | 110 | // // 0xa0, 0x00, 0x08, 0xa0, 0x00, 0x04, 0x3b, // #0008 #0004 DIV2 -> 0002 |
111 | // // INC test. | 111 | // // // INC test. |
112 | // 0x80, 0x09, 0x01, // #09 INC -> 0a | 112 | // // 0x80, 0x09, 0x01, // #09 INC -> 0a |
113 | // 0xa0, 0x00, 0x09, 0x21, // #0009 INC2 -> 000a | 113 | // // 0xa0, 0x00, 0x09, 0x21, // #0009 INC2 -> 000a |
114 | // 0xa0, 0x00, 0xff, 0x21, // #0009 INC2 -> 0100 | 114 | // // 0xa0, 0x00, 0xff, 0x21, // #0009 INC2 -> 0100 |
115 | // 0xa0, 0x00, 0xff, 0x21, 0x21, // #0009 INC2 INC2 -> 0101 | 115 | // // 0xa0, 0x00, 0xff, 0x21, 0x21, // #0009 INC2 INC2 -> 0101 |
116 | // // POP. | 116 | // // // POP. |
117 | // 0xa0, 0x12, 0x34, 0x02, | 117 | // // 0xa0, 0x12, 0x34, 0x02, |
118 | // 0xa0, 0x12, 0x34, 0x22, | 118 | // // 0xa0, 0x12, 0x34, 0x22, |
119 | // 0xa0, 0x00, 0x00, | 119 | // // 0xa0, 0x00, 0x00, |
120 | // // NIP. | 120 | // // // NIP. |
121 | // 0xa0, 0x12, 0x34, 0x03, // -> ( 34 ) | 121 | // // 0xa0, 0x12, 0x34, 0x03, // -> ( 34 ) |
122 | // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x23, // -> ( 56 78 ) | 122 | // // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x23, // -> ( 56 78 ) |
123 | // // SWP. | 123 | // // // SWP. |
124 | // 0xa0, 0x12, 0x34, 0x04, // -> ( 34 12 ) | 124 | // // 0xa0, 0x12, 0x34, 0x04, // -> ( 34 12 ) |
125 | // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x24, // -> ( 56 78 12 34 ) | 125 | // // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x24, // -> ( 56 78 12 34 ) |
126 | // // ROT. | 126 | // // // ROT. |
127 | // 0xa0, 0x12, 0x34, 0x80, 0x56, 0x05, // -> ( 34 56 12 ) | 127 | // // 0xa0, 0x12, 0x34, 0x80, 0x56, 0x05, // -> ( 34 56 12 ) |
128 | // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0xa0, 0x9a, 0xbc, 0x25, // -> ( 56 78 9a bc 12 34 ) | 128 | // // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0xa0, 0x9a, 0xbc, 0x25, // -> ( 56 78 9a bc 12 34 ) |
129 | // // DUP. | 129 | // // // DUP. |
130 | // 0xa0, 0x12, 0x34, 0x06, // -> ( 12 34 34 ) | 130 | // // 0xa0, 0x12, 0x34, 0x06, // -> ( 12 34 34 ) |
131 | // 0xa0, 0x12, 0x34, 0x26, // -> ( 12 34 12 34 ) | 131 | // // 0xa0, 0x12, 0x34, 0x26, // -> ( 12 34 12 34 ) |
132 | // // OVR. | 132 | // // // OVR. |
133 | // 0xa0, 0x12, 0x34, 0x07, // -> ( 12 34 12 ) | 133 | // // 0xa0, 0x12, 0x34, 0x07, // -> ( 12 34 12 ) |
134 | // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x27, // -> ( 12 34 56 78 12 34 ) | 134 | // // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x27, // -> ( 12 34 56 78 12 34 ) |
135 | // // EQU. | 135 | // // // EQU. |
136 | // 0xa0, 0x12, 0x12, 0x08, // -> ( 01 ) | 136 | // // 0xa0, 0x12, 0x12, 0x08, // -> ( 01 ) |
137 | // 0xa0, 0x12, 0x34, 0x08, // -> ( 00 ) | 137 | // // 0xa0, 0x12, 0x34, 0x08, // -> ( 00 ) |
138 | // 0xa0, 0x12, 0x34, 0xa0, 0x12, 0x34, 0x28, // -> ( 01 ) | 138 | // // 0xa0, 0x12, 0x34, 0xa0, 0x12, 0x34, 0x28, // -> ( 01 ) |
139 | // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x28, // -> ( 00 ) | 139 | // // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x28, // -> ( 00 ) |
140 | // // NEQ. | 140 | // // // NEQ. |
141 | // 0xa0, 0x12, 0x12, 0x09, // -> ( 00 ) | 141 | // // 0xa0, 0x12, 0x12, 0x09, // -> ( 00 ) |
142 | // 0xa0, 0x12, 0x34, 0x09, // -> ( 01 ) | 142 | // // 0xa0, 0x12, 0x34, 0x09, // -> ( 01 ) |
143 | // 0xa0, 0x12, 0x34, 0xa0, 0x12, 0x34, 0x29, // -> ( 00 ) | 143 | // // 0xa0, 0x12, 0x34, 0xa0, 0x12, 0x34, 0x29, // -> ( 00 ) |
144 | // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x29, // -> ( 01 ) | 144 | // // 0xa0, 0x12, 0x34, 0xa0, 0x56, 0x78, 0x29, // -> ( 01 ) |
145 | // // GTH. | 145 | // // // GTH. |
146 | // 0xa0, 0x12, 0x34, 0x0a, // -> ( 00 ) | 146 | // // 0xa0, 0x12, 0x34, 0x0a, // -> ( 00 ) |
147 | // 0xa0, 0x34, 0x12, 0x0a, // -> ( 01 ) | 147 | // // 0xa0, 0x34, 0x12, 0x0a, // -> ( 01 ) |
148 | // 0xa0, 0x12, 0x34, 0xa0, 0x34, 0x56, 0x2a, // -> ( 00 ) | 148 | // // 0xa0, 0x12, 0x34, 0xa0, 0x34, 0x56, 0x2a, // -> ( 00 ) |
149 | // 0xa0, 0x34, 0x56, 0xa0, 0x12, 0x34, 0x2a, // -> ( 01 ) | 149 | // // 0xa0, 0x34, 0x56, 0xa0, 0x12, 0x34, 0x2a, // -> ( 01 ) |
150 | // // LTH. | 150 | // // // LTH. |
151 | // 0xa0, 0x12, 0x34, 0x0b, // -> ( 01 ) | 151 | // // 0xa0, 0x12, 0x34, 0x0b, // -> ( 01 ) |
152 | // 0xa0, 0x34, 0x12, 0x0b, // -> ( 00 ) | 152 | // // 0xa0, 0x34, 0x12, 0x0b, // -> ( 00 ) |
153 | // 0xa0, 0x12, 0x34, 0xa0, 0x34, 0x56, 0x2b, // -> ( 01 ) | 153 | // // 0xa0, 0x12, 0x34, 0xa0, 0x34, 0x56, 0x2b, // -> ( 01 ) |
154 | // 0xa0, 0x34, 0x56, 0xa0, 0x12, 0x34, 0x2b, // -> ( 00 ) | 154 | // // 0xa0, 0x34, 0x56, 0xa0, 0x12, 0x34, 0x2b, // -> ( 00 ) |
155 | // // AND. | 155 | // // // AND. |
156 | // 0xa0, 0x0f, 0x88, 0x1c, // -> ( 08 ) | 156 | // // 0xa0, 0x0f, 0x88, 0x1c, // -> ( 08 ) |
157 | // 0xa0, 0xf0, 0x88, 0x1c, // -> ( 80 ) | 157 | // // 0xa0, 0xf0, 0x88, 0x1c, // -> ( 80 ) |
158 | // 0xa0, 0x00, 0x0f, 0xa0, 0x99, 0x88, 0x3c, // -> ( 00 08 ) | 158 | // // 0xa0, 0x00, 0x0f, 0xa0, 0x99, 0x88, 0x3c, // -> ( 00 08 ) |
159 | // // ORA. | 159 | // // // ORA. |
160 | // 0xa0, 0x0f, 0x88, 0x1d, // -> ( 8f ) | 160 | // // 0xa0, 0x0f, 0x88, 0x1d, // -> ( 8f ) |
161 | // 0xa0, 0xf0, 0x08, 0x1d, // -> ( f8 ) | 161 | // // 0xa0, 0xf0, 0x08, 0x1d, // -> ( f8 ) |
162 | // 0xa0, 0xf0, 0x0f, 0xa0, 0xaa, 0xaa, 0x3d, // -> ( fa af ) | 162 | // // 0xa0, 0xf0, 0x0f, 0xa0, 0xaa, 0xaa, 0x3d, // -> ( fa af ) |
163 | // // EOR. | 163 | // // // EOR. |
164 | // 0xa0, 0x0f, 0x88, 0x1e, // -> ( 87 ) | 164 | // // 0xa0, 0x0f, 0x88, 0x1e, // -> ( 87 ) |
165 | // 0xa0, 0xf0, 0x08, 0x1e, // -> ( f8 ) | 165 | // // 0xa0, 0xf0, 0x08, 0x1e, // -> ( f8 ) |
166 | // 0xa0, 0xf0, 0x0f, 0xa0, 0xaa, 0xaa, 0x3e, // -> ( 5a a5 ) | 166 | // // 0xa0, 0xf0, 0x0f, 0xa0, 0xaa, 0xaa, 0x3e, // -> ( 5a a5 ) |
167 | // // SFT. | 167 | // // // SFT. |
168 | // 0xa0, 0x34, 0x10, 0x1f, // -> ( 68 ) | 168 | // // 0xa0, 0x34, 0x10, 0x1f, // -> ( 68 ) |
169 | // 0xa0, 0x34, 0x01, 0x1f, // -> ( 1a ) | 169 | // // 0xa0, 0x34, 0x01, 0x1f, // -> ( 1a ) |
170 | // 0xa0, 0x34, 0x33, 0x1f, // -> ( 30 ) | 170 | // // 0xa0, 0x34, 0x33, 0x1f, // -> ( 30 ) |
171 | // 0xa0, 0x12, 0x48, 0x80, 0x34, 0x3f, // -> ( 09 20 ) | 171 | // // 0xa0, 0x12, 0x48, 0x80, 0x34, 0x3f, // -> ( 09 20 ) |
172 | // // STZ / LDZ. | 172 | // // // STZ / LDZ. |
173 | // 0xa0, 0x34, 0x00, 0x11, // STZ (u8*)uxn_ram[1] = 0x34 | 173 | // // 0xa0, 0x34, 0x00, 0x11, // STZ (u8*)uxn_ram[1] = 0x34 |
174 | // 0xa0, 0xaa, 0xbb, 0x80, 0x01, 0x31, // STZ2 (u16*)uxn_ram[1] = 0x34 | 174 | // // 0xa0, 0xaa, 0xbb, 0x80, 0x01, 0x31, // STZ2 (u16*)uxn_ram[1] = 0x34 |
175 | // 0x80, 0x00, 0x10, // LDZ -> ( 34 ) | 175 | // // 0x80, 0x00, 0x10, // LDZ -> ( 34 ) |
176 | // 0x80, 0x01, 0x30, // LDZ2 -> ( aa bb ) | 176 | // // 0x80, 0x01, 0x30, // LDZ2 -> ( aa bb ) |
177 | // // LDR / SRT | 177 | // // // LDR / SRT |
178 | // 0xa0, 0xab, 0xcd, 0x80, 0xfb, 0x12, | 178 | // // 0xa0, 0xab, 0xcd, 0x80, 0xfb, 0x12, |
179 | // 0xa0, 0xab, 0xcd, 0x80, 0xfb, 0x32, | 179 | // // 0xa0, 0xab, 0xcd, 0x80, 0xfb, 0x32, |
180 | // 0x80, 1, 0x12, 0xa0, 0xaa, 0xbb, | 180 | // // 0x80, 1, 0x12, 0xa0, 0xaa, 0xbb, |
181 | // 0xa0, 0xff, 0xee, 0x80, 0xfa, 0x33, | 181 | // // 0xa0, 0xff, 0xee, 0x80, 0xfa, 0x33, |
182 | // 0x80, 0xff, 0x80, 1, 0x13, 0xa0, 0xaa, 0xbb, | 182 | // // 0x80, 0xff, 0x80, 1, 0x13, 0xa0, 0xaa, 0xbb, |
183 | // 0xa0, 0xff, 0xee, 0x80, 1, 0x33, 0xa0, 0xaa, 0xbb, | 183 | // // 0xa0, 0xff, 0xee, 0x80, 1, 0x33, 0xa0, 0xaa, 0xbb, |
184 | // LDA /STA | 184 | // // LDA /STA |
185 | // 0xa0, 0x01, 0x05, 0x14, 0xa0, 0xaa, 0xbb, | 185 | // // 0xa0, 0x01, 0x05, 0x14, 0xa0, 0xaa, 0xbb, |
186 | // 0xa0, 0x01, 0x05, 0x34, 0xa0, 0xcc, 0xdd, | 186 | // // 0xa0, 0x01, 0x05, 0x34, 0xa0, 0xcc, 0xdd, |
187 | // 0xa0, 0xab, 0xcd, 0xa0, 0x01, 0x08, 0x15, | 187 | // // 0xa0, 0xab, 0xcd, 0xa0, 0x01, 0x08, 0x15, |
188 | // 0xa0, 0xab, 0xcd, 0xa0, 0x01, 0x08, 0x35, | 188 | // // 0xa0, 0xab, 0xcd, 0xa0, 0x01, 0x08, 0x35, |
189 | // JMP | 189 | // // JMP |
190 | // 0x80, 0x01, 0x0c, 0x00, 0x80, 0xaa, | 190 | // // 0x80, 0x01, 0x0c, 0x00, 0x80, 0xaa, |
191 | // 0xa0, 0x01, 0x05, 0x2c, 0x00, 0x80, 0xbb, | 191 | // // 0xa0, 0x01, 0x05, 0x2c, 0x00, 0x80, 0xbb, |
192 | // JCN | 192 | // // JCN |
193 | // 0xa0, 0xab, 0xcd, 0x80, 0x01, 0x80, 0x01, 0x0d, 0x04, 0x02, | 193 | // // 0xa0, 0xab, 0xcd, 0x80, 0x01, 0x80, 0x01, 0x0d, 0x04, 0x02, |
194 | // 0xa0, 0xab, 0xcd, 0x80, 0x00, 0x80, 0x01, 0x0d, 0x04, 0x02, | 194 | // // 0xa0, 0xab, 0xcd, 0x80, 0x00, 0x80, 0x01, 0x0d, 0x04, 0x02, |
195 | // 0xa0, 0xab, 0xcd, 0x80, 0x01, 0xa0, 0x01, 0x0a, 0x2d, 0x04, 0x02, | 195 | // // 0xa0, 0xab, 0xcd, 0x80, 0x01, 0xa0, 0x01, 0x0a, 0x2d, 0x04, 0x02, |
196 | // 0xa0, 0xab, 0xcd, 0x80, 0x00, 0xa0, 0x01, 0x15, 0x2d, 0x04, 0x02, | 196 | // // 0xa0, 0xab, 0xcd, 0x80, 0x00, 0xa0, 0x01, 0x15, 0x2d, 0x04, 0x02, |
197 | // JSR | 197 | // // JSR |
198 | // 0x80, 0x03, 0x0e, 0x80, 0x01, 0x00, 0x80, 0x02, 0x6c, | 198 | // // 0x80, 0x03, 0x0e, 0x80, 0x01, 0x00, 0x80, 0x02, 0x6c, |
199 | // 0x80, 0x03, 0x0e, 0x80, 0x01, 0x00, 0x80, 0x02, 0x6c, | 199 | // // 0x80, 0x03, 0x0e, 0x80, 0x01, 0x00, 0x80, 0x02, 0x6c, |
200 | // JMI/JSI/JCI | 200 | // // JMI/JSI/JCI |
201 | // 0x40, 0x00, 0x01, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, | 201 | // // 0x40, 0x00, 0x01, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, |
202 | // 0x40, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, | 202 | // // 0x40, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, |
203 | // 0x40, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, 0x40, 0xff, 0xf7, | 203 | // // 0x40, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, 0x40, 0xff, 0xf7, |
204 | // 0x40, 0x00, 0x04, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, | 204 | // // 0x40, 0x00, 0x04, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, |
205 | // 0x40, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, | 205 | // // 0x40, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, |
206 | // 0x60, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, | 206 | // // 0x60, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, |
207 | // 0x60, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, 0x6c | 207 | // // 0x60, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, 0x6c |
208 | // 0x80, 0x01, 0x20, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, | 208 | // // 0x80, 0x01, 0x20, 0x00, 0x03, 0x80, 0xff, 0x00, 0xa0, 0xaa, 0xbb, 0xa0, 0xcc, 0xdd, |
209 | // DEO/DEO2 | 209 | // // DEO/DEO2 |
210 | // 0x80, 0x68, 0x80, 0x18, 0x17, 0x80, 0x65, 0x80, 0x18, 0x17, 0x80, 0x6c, 0x80, 0x18, 0x17, 0x80, | 210 | // // 0x80, 0x68, 0x80, 0x18, 0x17, 0x80, 0x65, 0x80, 0x18, 0x17, 0x80, 0x6c, 0x80, 0x18, 0x17, 0x80, |
211 | // 0x6c, 0x80, 0x18, 0x17, 0x80, 0x6f, 0x80, 0x18, 0x17, 0x80, 0x0a, 0x80, 0x18, 0x17, | 211 | // // 0x6c, 0x80, 0x18, 0x17, 0x80, 0x6f, 0x80, 0x18, 0x17, 0x80, 0x0a, 0x80, 0x18, 0x17, |
212 | // 0xa0, 0x00, 0x68, 0x80, 0x18, 0x37, 0x80, 0x65, 0x80, 0x18, 0x17, 0x80, 0x6c, 0x80, 0x18, 0x17, 0x80, | 212 | // // 0xa0, 0x00, 0x68, 0x80, 0x18, 0x37, 0x80, 0x65, 0x80, 0x18, 0x17, 0x80, 0x6c, 0x80, 0x18, 0x17, 0x80, |
213 | // 0x6c, 0x80, 0x18, 0x17, 0x80, 0x6f, 0x80, 0x18, 0x17, 0x80, 0x0a, 0x80, 0x18, 0x17, | 213 | // // 0x6c, 0x80, 0x18, 0x17, 0x80, 0x6f, 0x80, 0x18, 0x17, 0x80, 0x0a, 0x80, 0x18, 0x17, |
214 | // 0xa0, 0x2c, 0xe9, 0x80, 0x08, 0x37, | 214 | // // 0xa0, 0x2c, 0xe9, 0x80, 0x08, 0x37, |
215 | 0xa0, 0x6b, 0x4f, 0x80, 0x18, 0x17, 0x80, 0x18, 0x17, 0xa0, 0x0a, 0x18, 0x17, | 215 | // // 0xa0, 0x6b, 0x4f, 0x80, 0x18, 0x17, 0x80, 0x18, 0x17, 0xa0, 0x0a, 0x18, 0x17, |
216 | // 0xa0, 0x6b, 0x4f, 0x80, 0x18, 0x17, 0x80, 0x18, | 216 | // 0xc0, 0x6b, 0x80, 0x4f, |
217 | // 0x17, 0xa0, 0x0a, 0x18, 0x17, 0xc0, 0x6b, 0x80, | 217 | // 0x0f, |
218 | // 0x4f, 0x0f, 0x6f, 0x80, 0x18, 0x17, 0x80, 0x18, | 218 | // 0x6f, |
219 | // 0x17, 0xa0, 0x0a, 0x18, 0x17, 0x00, 0x00, | 219 | // 0x80, 0x18, |
220 | }; | 220 | // 0x17, 0x80, 0x18, 0x17, 0xa0, 0x0a, 0x18, 0x17, |
221 | // // 0x00, 0x00, | ||
222 | // }; | ||
221 | memcpy(uxn_ram + PAGE_PROGRAM, uxn_rom, sizeof(uxn_rom)); | 223 | memcpy(uxn_ram + PAGE_PROGRAM, uxn_rom, sizeof(uxn_rom)); |
222 | 224 | ||
223 | // Initialize stack and device memory. | 225 | // Initialize stack and device memory. |
@@ -271,18 +273,18 @@ main(void) { | |||
271 | 273 | ||
272 | uxn_eval_asm(PAGE_PROGRAM); | 274 | uxn_eval_asm(PAGE_PROGRAM); |
273 | 275 | ||
274 | txt_printf("\nROM"); | 276 | // txt_printf("\nROM"); |
275 | for (size_t i = 0; i < 64; i++) { | 277 | // for (size_t i = 0; i < 64; i++) { |
276 | if (i % 8 == 0) { | 278 | // if (i % 8 == 0) { |
277 | txt_printf("\n"); | 279 | // txt_printf("\n"); |
278 | } | 280 | // } |
279 | txt_printf("%02x ", uxn_ram[i + PAGE_PROGRAM]); | 281 | // txt_printf("%02x ", uxn_ram[i + PAGE_PROGRAM]); |
280 | } | 282 | // } |
281 | txt_printf("\n"); | 283 | // txt_printf("\n"); |
282 | 284 | ||
283 | txt_printf("WST ("); | 285 | txt_printf("WST ("); |
284 | txt_printf("SIZE: %d)", wst_ptr - (uintptr_t)wst); | 286 | txt_printf("SIZE: %d)", wst_ptr - (uintptr_t)wst); |
285 | for (size_t i = 0; i < 64; i++) { | 287 | for (size_t i = 0; i < 32; i++) { |
286 | if (i % 8 == 0) { | 288 | if (i % 8 == 0) { |
287 | txt_printf("\n"); | 289 | txt_printf("\n"); |
288 | } | 290 | } |
@@ -292,19 +294,19 @@ main(void) { | |||
292 | txt_printf("%02x ", wst[i]); | 294 | txt_printf("%02x ", wst[i]); |
293 | } | 295 | } |
294 | } | 296 | } |
295 | // txt_printf("\n\n"); | 297 | txt_printf("\n\n"); |
296 | // txt_printf("RST ("); | 298 | txt_printf("RST ("); |
297 | // txt_printf("SIZE: %d)", rst_ptr - (uintptr_t)rst); | 299 | txt_printf("SIZE: %d)", rst_ptr - (uintptr_t)rst); |
298 | // for (size_t i = 0; i < 64; i++) { | 300 | for (size_t i = 0; i < 32; i++) { |
299 | // if (i % 8 == 0) { | 301 | if (i % 8 == 0) { |
300 | // txt_printf("\n"); | 302 | txt_printf("\n"); |
301 | // } | 303 | } |
302 | // if (i >= (rst_ptr - (uintptr_t)rst)) { | 304 | if (i >= (rst_ptr - (uintptr_t)rst)) { |
303 | // txt_printf("%02x ", 0); | 305 | txt_printf("%02x ", 0); |
304 | // } else { | 306 | } else { |
305 | // txt_printf("%02x ", rst[i]); | 307 | txt_printf("%02x ", rst[i]); |
306 | // } | 308 | } |
307 | // } | 309 | } |
308 | // txt_printf("\n\n"); | 310 | // txt_printf("\n\n"); |
309 | // txt_printf("RAM (ZP)\n"); | 311 | // txt_printf("RAM (ZP)\n"); |
310 | // for (size_t i = 0; i < 64; i++) { | 312 | // for (size_t i = 0; i < 64; i++) { |
diff --git a/src/uxn-core.s b/src/uxn-core.s index 5b20e03..905dd42 100644 --- a/src/uxn-core.s +++ b/src/uxn-core.s | |||
@@ -1529,12 +1529,12 @@ jsr2r: | |||
1529 | 1529 | ||
1530 | sthr: | 1530 | sthr: |
1531 | rpop8 r3 | 1531 | rpop8 r3 |
1532 | rpush8 r3 | 1532 | wpush8 r3 |
1533 | b uxn_decode | 1533 | b uxn_decode |
1534 | 1534 | ||
1535 | sth2r: | 1535 | sth2r: |
1536 | rpop16 r3, r5 | 1536 | rpop16 r3, r5 |
1537 | rpush16 r3 | 1537 | wpush16 r3 |
1538 | b uxn_decode | 1538 | b uxn_decode |
1539 | 1539 | ||
1540 | ldzr: | 1540 | ldzr: |
@@ -2375,12 +2375,12 @@ jsr2kr: | |||
2375 | 2375 | ||
2376 | sthkr: | 2376 | sthkr: |
2377 | rpeek8 r3 | 2377 | rpeek8 r3 |
2378 | rpush8 r3 | 2378 | wpush8 r3 |
2379 | b uxn_decode | 2379 | b uxn_decode |
2380 | 2380 | ||
2381 | sth2kr: | 2381 | sth2kr: |
2382 | rpeek16 r3, r5 | 2382 | rpeek16 r3, r5 |
2383 | rpush16 r3 | 2383 | wpush16 r3 |
2384 | b uxn_decode | 2384 | b uxn_decode |
2385 | 2385 | ||
2386 | ldzkr: | 2386 | ldzkr: |