1( 54K . Opcode Tester )
2
3|100
4
5@on-reset ( -> )
6 ( | PART 1:
7 | LIT2: Puts a short on the stack
8 | LIT: Puts a byte on the stack
9 | #06 DEO: Write to metadata ports
10 | #18 DEO: Write a letter in terminal )
11 ;meta #06 DEO2
12 [ LIT2 "kO ] #18 DEO
13 #18 DEO
14 #2018 DEO
15 ( | PART 2:
16 | LITr: Put a byte on return stack
17 | STH: Move a byte from working stack to return stack
18 | STH2r: Move a short from return stack to working stack )
19 [ LITr "k ] [ LIT "O ] STH
20 STH2r #18 DEO
21 #18 DEO
22 #2018 DEO
23 ( | PART 3:
24 | LIT2r: Put a short on return stack
25 | DUP: Duplicate byte
26 | ADDr: Add bytes on return stack )
27 [ LIT2r "k 4d ] #01 DUP STH
28 ADDr STH
29 ADDr STH2r #18 DEO
30 #18 DEO
31 #2018 DEO
32 ( | PART 4:
33 | JSI: Subroutine to relative short address
34 | JMP2r: Jumps to absolute address on return stack )
35 tests/<print-ok>
36 #2018 DEO
37 ( | PART 5:
38 | POP2: Removes a short from the stack
39 | INC2: Increments short on stack
40 | DUP2: Duplicate short
41 | LDA: load byte from absolute address
42 | JCI: Conditional subroutine to relative short address )
43 ;dict/ok str/<print>
44 #2018 DEO
45 ( | PART 6:
46 | JSR2: Jump to subroutine from short pointer
47 | LDAk: Non-destructive load byte from absolute address )
48 { "Ok $1 }
49 STH2r ;str/<print> JSR2 #2018 DEO
50 ( | PART 7:
51 | Relative distance bytes )
52 tests/<rel>
53 SWP #18 DEO
54 #18 DEO
55 ( | PART 8:
56 | Test every opcode )
57 #1234 #00 STZ2
58 ( sentinel ) #1234 LIT2r 5678
59 ( run tests ) tests/<run>
60 ( sentinel ) #1234 EQU2 LIT2r 5678 EQU2r STHr AND ;dict/sentinel tests/<print>
61 ( | PART 9:
62 | Testing that stacks are circular and wrapping
63 | Storing 12 at -1 and 34 at 0 )
64 POP #12 #34 ADD #46 EQU STH
65 POP #1234 ADD #46 EQU STH
66 POP2 #1111 #2222 ADD2 #3333 EQU2 STHr AND STHr AND ;dict/stack-wrap tests/<print>
67 ( restore stack ) #0000 #0000
68 ( | PART 10:
69 | Testing RAM wrapping
70 | Storing 12 in 0xffff, and 34 in 0x0000 )
71 #1234 #ffff STA2
72 ( LDA ) #0000 LDA #ffff LDA ADD #46 EQU
73 ( LDA2 ) #ffff LDA2 ADD #46 EQU AND ;dict/ram-wrap tests/<print>
74 ( | PART 11:
75 | Testing PC wrapping: split instruction
76 | Storing 80[LIT] in 0xffff, and 55[val8] in 0x0000
77 | Storing 6c[JMP2r] in 0x0001 )
78 #8055 #ffff STA2
79 #6c #01 STZ
80 #ffff JSR2 #55 EQU ;dict/pc-wrap tests/<print>
81 ( | PART 12:
82 | Testing PC wrapping: split value after instruction
83 | Storing a0[LIT2] in 0xfffe,
84 | and 0x55[hi-byte] in 0xffff, and 0xaa[lo-byte] in 0x0000
85 | Storing 6c[JMP2r] in 0x0001 )
86 #a055 #fffe STA2
87 #aa6c #0000 STA2
88 #fffe JSR2 #55aa EQU2 ;dict/pc2-wrap tests/<print>
89 ( | PART 13:
90 | Testing that zero-page is wrapping )
91 #5678 #ff STZ2
92 ( LDZ ) #00 LDZ #ff LDZ ADD #ce EQU
93 ( LDZ2 ) #ff LDZ2 ADD #ce EQU AND ;dict/zp-wrap tests/<print>
94 ( | PART 14:
95 | Testing that device page is wrapping )
96 #1234 #ff DEO2
97 ( DEI ) #00 DEI #ff DEI ADD #46 EQU
98 ( DEI2 ) #ff DEI2 ADD #46 EQU AND ;dict/dev-wrap tests/<print>
99 #0000 DEO
100 #00ff DEO
101 ( | You have a working uxn! )
102 #800f DEO
103 BRK
104
105@str/<print> ( str* -- )
106 LDAk DUP ?{ POP POP2 JMP2r }
107 #18 DEO
108 INC2 !/<print>
109
110@dict/ok "Ok 00
111 &fail "fail 0a 00
112 &pass "pass 0a 00
113 &stack-wrap "Stk-wrap: 20 $1
114 &ram-wrap "Ram-wrap: 20 $1
115 &pc-wrap "Pc1-wrap: 20 $1
116 &pc2-wrap "Pc2-wrap: 20 $1
117 &zp-wrap "Zer-wrap: 20 $1
118 &dev-wrap "Dev-wrap: 20 $1
119 &opc-test "Opc-test: 20 $1
120 &sentinel "Sentinel: 20 $1
121
122(
123@|Relative Distance Bytes )
124
125@meta 00
126 ( name ) "Opctest 0a
127 ( details ) "A 20 "Testing 20 "Program 0a
128 ( author ) "By 20 "Devine 20 "Lu 20 "Linvega 0a
129 ( date ) "9 20 "Jun 20 "2026 $2
130
131(
132@|Tests )
133
134@tests/<run> ( -- )
135 [ LITr 00 ] ;&lut-end ;&lut
136 &>l
137 STHkr #0f AND ?{ #0a18 DEO }
138 STHkr u8/<print>
139 #2018 DEO
140 LDA2k JSR2 #01 EQU ?{ #010f DEO
141 BRK }
142 INC2 INC2 INCr GTH2k ?&>l
143 POP2 POP2 POPr #0a18 DEO
144 #01 ;dict/opc-test !tests/<print>
145
146@tests/<print> ( f name* -- )
147 str/<print>
148 ?{ #010f DEO
149 ;dict/fail !str/<print> }
150 ;dict/pass !str/<print>
151
152@tests/back "O $7c &<rel> ,&back LDR ,&forw LDR JMP2r
153 $7e
154 &forw "k
155
156@tests/<print-ok> ( -- )
157 [ LIT2 "kO ] #18 DEO
158 #18 DEO
159 JMP2r
160
161@u8/<print> ( byte -- )
162 DUP #04 SFT /<print-nibble>
163 ( >> )
164 &<print-nibble> ( byte -- )
165 #0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD #18 DEO
166 JMP2r
167
168(
169@|imm )
170
171@op-brk ( -- pass )
172 ( skip ) #01 JMP2r
173
174@op-jci ( -- pass )
175 ( - ) #12 #01 ?{ INC }
176 #12 EQU
177 ( - ) #34 #00 ?{ INC }
178 #35 EQU AND JMP2r
179
180@op-jmi ( -- pass )
181 ( - ) #12 !{
182 INC }
183 #12 EQU JMP2r
184
185@op-jsi ( -- pass )
186 #12 /t #24 EQU JMP2r
187 &t DUP ADD JMP2r
188
189@op-lit ( -- pass )
190 LIT 12 #12 EQU JMP2r
191
192@op-lit2 ( -- pass )
193 LIT2 1234 #12 #34 EQU2 JMP2r
194
195@op-litr ( -- pass )
196 LITr 12 STHr #12 EQU JMP2r
197
198@op-lit2r ( -- pass )
199 LIT2r 1234 STH2r #1234 EQU2 JMP2r
200
201(
202@|m )
203
204@op-inc ( -- pass )
205 ( - ) #01 INC [ #02 ] EQU
206 ( - ) #ff INC #00 EQU AND
207 ( - ) #fe INC #ff EQU AND
208 ( - ) #00 INC #01 EQU AND JMP2r
209
210@op-pop ( -- pass )
211 ( - ) #0a #0b POP [ #0a ] EQU
212 ( - ) #0a #0b #0c POP POP [ #0a ] EQU AND
213 ( - ) #0a #0b #0c ADD POP [ #0a ] EQU AND
214 ( - ) #0a #0b #0c POP ADD [ #15 ] EQU AND JMP2r
215
216@op-nip ( -- pass )
217 ( - ) #12 #34 #56 NIP ADD [ #68 ] EQU JMP2r
218
219@op-swp ( -- pass )
220 ( - ) #02 #10 SWP DIV [ #08 ] EQU JMP2r
221
222@op-rot ( -- pass )
223 ( - ) #02 #04 #10 ROT DIV ADD [ #0c ] EQU JMP2r
224
225@op-dup ( -- pass )
226 ( - ) #0a #0b DUP ADD ADD [ #20 ] EQU JMP2r
227
228@op-ovr ( -- pass )
229 ( - ) #02 #10 OVR DIV ADD [ #0a ] EQU JMP2r
230
231@op-equ ( -- pass )
232 ( - ) #f8 #f8 EQU #01 EQU
233 ( - ) #01 #01 EQU #01 EQU AND
234 ( - ) #f8 #01 EQU #00 EQU AND
235 ( - ) #00 #ff EQU #00 EQU AND JMP2r
236
237@op-neq ( -- pass )
238 ( - ) #f8 #f8 NEQ #00 EQU
239 ( - ) #01 #01 NEQ #00 EQU AND
240 ( - ) #f8 #01 NEQ #01 EQU AND
241 ( - ) #01 #f8 NEQ #01 EQU AND JMP2r
242
243@op-gth ( -- pass )
244 ( - ) #f8 #f8 GTH #00 EQU
245 ( - ) #01 #01 GTH #00 EQU AND
246 ( - ) #f8 #01 GTH #01 EQU AND
247 ( - ) #01 #f8 GTH #00 EQU AND JMP2r
248
249@op-lth ( -- pass )
250 ( - ) #f8 #f8 LTH #00 EQU
251 ( - ) #01 #01 LTH #00 EQU AND
252 ( - ) #f8 #01 LTH #00 EQU AND
253 ( - ) #01 #ff LTH #01 EQU AND JMP2r
254
255@op-jmp ( -- pass )
256 ( - ) #12 #34 ,&x [ JMP SWP &x ] POP [ #12 ] EQU
257 ( - ) #12 #34 ,&t [ JMP &back ] POP [ #34 ] EQU AND JMP2r
258 &t SWP ,&back JMP
259
260@op-jcn ( -- pass )
261 ( - ) #23 #01 ,&x [ JCN INC &x ] [ #23 ] EQU
262 ( - ) #23 #00 ,&y [ JCN INC &y ] [ #24 ] EQU AND
263 ( - ) #12 #34 #01 ,&t [ JCN &back ] POP [ #34 ] EQU AND
264 ( - ) #12 #34 #00 ,&t [ JCN ] POP [ #12 ] EQU AND JMP2r
265 &t SWP ,&back JMP
266
267@op-jsr ( -- pass )
268 ( - ) #12 #34 ,&routine JSR [ #46 ] EQU JMP2r
269 &routine ADD JMP2r
270
271@op-sth ( -- pass )
272 ( - ) #0a [ STH ] #0b [ STH ] ADDr STHr [ #15 ] EQU JMP2r
273
274@op-ldz ( -- pass )
275 ( - ) #00 LDZ #12 EQU JMP2r
276
277@op-stz ( -- pass )
278 ( - ) #5602 [ STZ ] #02 LDZ #56 EQU JMP2r
279
280@op-ldr ( -- pass )
281 ( advance ) [ !{ &a 12 ( -128 ) $6e &u 34 } ]
282 ( - ) ,&t LDR #12 EQU
283 ( - ) ,&u LDR #34 EQU AND
284 ( -128 ) ,&a LDR #12 EQU AND
285 ( +127 ) ,&b LDR #56 EQU AND [ !{ &t 12 ( +127 ) $77 &b 56 } ] JMP2r
286
287@op-str ( -- pass )
288 ( advance ) [ !{ &a $1 ( -128 ) $63 &u $1 ] }
289 ( - ) #34 ,&t [ STR ] ,&t LDR #34 EQU
290 ( - ) #12 ,&u [ STR ] ,&u LDR #12 EQU AND
291 ( -128 ) [ LIT2 56 _&a ] STR
292 ( +127 ) [ LIT2 56 _&b ] STR
293 [ !{ &t $1 ( +127 ) $7b &b $1 } ]
294 ( - check ) ;&a LDA #56 EQU AND ;&b LDA #56 EQU AND JMP2r
295
296@op-lda ( -- pass )
297 ( - ) ;&value LDA #ef EQU JMP2r
298 &value ef
299
300@op-sta ( -- pass )
301 ( - ) #12 ;&value [ STA ] ;&value LDA #12 EQU JMP2r
302 &value 00
303
304@op-dei ( -- pass )
305 ( skip ) #01 JMP2r
306
307@op-deo ( -- pass )
308 ( skip ) #01 JMP2r
309
310@op-add ( -- pass )
311 ( - ) #ff #00 ADD #ff EQU
312 ( - ) #01 #ff ADD #00 EQU AND
313 ( - ) #ff #ff ADD [ #fe ] EQU AND JMP2r
314
315@op-sub ( -- pass )
316 ( - ) #ff #00 SUB #ff EQU
317 ( - ) #01 #ff SUB [ #02 ] EQU AND
318 ( - ) #ff #ff SUB #00 EQU AND
319 ( - ) #fe #ff SUB #ff EQU AND JMP2r
320
321@op-mul ( -- pass )
322 ( - ) #00 #01 MUL #00 EQU
323 ( - ) #3f #e7 MUL [ #d9 ] EQU AND
324 ( - ) #37 #3f MUL [ #89 ] EQU AND
325 ( - ) #10 #02 MUL [ #20 ] EQU AND JMP2r
326
327@op-div ( -- pass )
328 ( - ) #10 #06 DIV [ #02 ] EQU
329 ( - ) #20 #20 DIV #01 EQU AND
330 ( - ) #34 #01 DIV [ #34 ] EQU AND
331 ( - ) #02 #ef DIV #00 EQU AND
332 ( - ) #02 #00 DIV #00 EQU AND JMP2r
333
334@op-and ( -- pass )
335 ( - ) #fc #3f AND [ #3c ] EQU
336 ( - ) #f0 #0f AND #00 EQU AND
337 ( - ) #ff #3c AND [ #3c ] EQU AND
338 ( - ) #02 #03 AND [ #02 ] EQU AND JMP2r
339
340@op-ora ( -- pass )
341 ( - ) #0f #f0 ORA #ff EQU
342 ( - ) #ab #cd ORA [ #ef ] EQU AND
343 ( - ) #12 #34 ORA [ #36 ] EQU AND
344 ( - ) #88 #10 ORA [ #98 ] EQU AND JMP2r
345
346@op-eor ( -- pass )
347 ( - ) #00 #00 EOR #00 EQU
348 ( - ) #ff #00 EOR #ff EQU AND
349 ( - ) #aa #55 EOR #ff EQU AND
350 ( - ) #ff #ff EOR #00 EQU AND JMP2r
351
352@op-sft ( -- pass )
353 ( - ) #ff #08 SFT #00 EQU
354 ( - ) #ff #e0 SFT #00 EQU AND
355 ( - ) #ff #11 SFT [ #fe ] EQU AND
356 ( - ) #ff #12 SFT [ #7e ] EQU AND
357 ( - ) #ff #00 SFT [ #ff ] EQU AND
358 ( - ) #ff #77 SFT [ #80 ] EQU AND
359 ( - ) #ff #88 SFT [ #00 ] EQU AND
360 ( - ) #ff #ff SFT [ #00 ] EQU AND JMP2r
361
362(
363@|m2 )
364
365@op-inc2 ( -- pass )
366 ( - ) #00ff INC2 [ #0100 ] EQU2
367 ( - ) #ffff INC2 [ #0000 ] EQU2 AND
368 ( - ) #fffe INC2 [ #ffff ] EQU2 AND
369 ( - ) #0000 INC2 [ #0001 ] EQU2 AND JMP2r
370
371@op-pop2 ( -- pass )
372 ( - ) #0a0b #0c0d POP2 [ #0a0b ] EQU2
373 ( - ) #0a0b #0c0d #0e0f POP2 POP2 #0a0b EQU2 AND
374 ( - ) #0a0b #0c0d #0e0f ADD2 POP2 #0a0b EQU2 AND
375 ( - ) #0a0b #0c0d #0e0f POP2 ADD2 #1618 EQU2 AND JMP2r
376
377@op-nip2 ( -- pass )
378 ( - ) #1234 #5678 #9abc NIP2 ADD2 #acf0 EQU2 JMP2r
379
380@op-swp2 ( -- pass )
381 ( - ) #0a0b #0c0d SWP2 NIP2 #0a0b EQU2 JMP2r
382
383@op-rot2 ( -- pass )
384 ( - ) #0a0b #0c0d #0c0f ROT2 ADD2 NIP2 #161a EQU2 JMP2r
385
386@op-dup2 ( -- pass )
387 ( - ) #0a0b DUP2 ADD2 #1416 EQU2 JMP2r
388
389@op-ovr2 ( -- pass )
390 ( - ) #0a0b #0c0d OVR2 NIP2 ADD2 #1416 EQU2 JMP2r
391
392@op-equ2 ( -- pass )
393 ( - ) #f801 #f801 EQU2 #01 EQU
394 ( - ) #01f8 #01f8 EQU2 #01 EQU AND
395 ( - ) #f801 #01f8 EQU2 #00 EQU AND
396 ( - ) #01f8 #f801 EQU2 #00 EQU AND JMP2r
397
398@op-neq2 ( -- pass )
399 ( - ) #f801 #f801 NEQ2 #00 EQU
400 ( - ) #01f8 #01f8 NEQ2 #00 EQU AND
401 ( - ) #f801 #01f8 NEQ2 #01 EQU AND
402 ( - ) #01f8 #f801 NEQ2 #01 EQU AND JMP2r
403
404@op-gth2 ( -- pass )
405 ( - ) #f801 #f801 GTH2 #00 EQU
406 ( - ) #01f8 #01f8 GTH2 #00 EQU AND
407 ( - ) #f801 #01f8 GTH2 #01 EQU AND
408 ( - ) #01f8 #f801 GTH2 #00 EQU AND JMP2r
409
410@op-lth2 ( -- pass )
411 ( - ) #f801 #f801 LTH2 #00 EQU
412 ( - ) #01f8 #01f8 LTH2 #00 EQU AND
413 ( - ) #f801 #01f8 LTH2 #00 EQU AND
414 ( - ) #01f8 #f801 LTH2 #01 EQU AND JMP2r
415
416@op-jmp2 ( -- pass )
417 ( - ) #56 #78 ;&t [ JMP2 SWP &t ] POP #56 EQU JMP2r
418
419@op-jcn2 ( -- pass )
420 ( - ) #23 #01 ;&abs-x [ JCN2 INC &abs-x ] #23 EQU
421 ( - ) #23 #00 ;&abs-y [ JCN2 INC &abs-y ] #24 EQU AND JMP2r
422
423@op-jsr2 ( -- pass )
424 ( - ) #12 ;&t JSR2 #24 EQU JMP2r
425 &t DUP ADD JMP2r
426
427@op-sth2 ( -- pass )
428 ( - ) #1234 [ STH2 ] ADDr STHr #46 EQU JMP2r
429
430@op-ldz2 ( -- pass )
431 ( - ) #00 LDZ2 #1234 EQU2 JMP2r
432
433@op-stz2 ( -- pass )
434 ( - ) #5678 #04 [ STZ2 ] #04 LDZ2 #5678 EQU2 JMP2r
435
436@op-ldr2 ( -- pass )
437 ( advance ) [ !{ &a 1234 ( -128 ) $6a &u 3456 } ]
438 ( - ) ,&t LDR2 #1234 EQU2
439 ( - ) ,&u LDR2 #3456 EQU2 AND
440 ( -128 ) ,&a LDR2 #1234 EQU2 AND
441 ( +127 ) ,&b LDR2 #5678 EQU2 AND [ !{ &t 1234 ( +127 ) $75 &b 5678 } ] JMP2r
442
443@op-str2 ( -- pass )
444 ( advance ) [ !{ &a $2 ( -128 ) $5b &u $2 ] }
445 ( - ) #1234 ,&t [ STR2 ] ,&t LDR2 #1234 EQU2
446 ( - ) #1234 ,&u [ STR2 ] ,&u LDR2 #1234 EQU2 AND
447 ( -128 ) #1234 ,&a STR2
448 ( +127 ) #1234 ,&b STR2
449 [ !{ &t $2 ( +127 ) $7a &b $2 } ]
450 ( - check ) ;&a LDA2 #1234 EQU2 AND ;&b LDA2 #1234 EQU2 AND JMP2r
451
452@op-lda2 ( -- pass )
453 ( - ) ;&t LDA2 #1234 EQU2 JMP2r
454 &t 1234
455
456@op-sta2 ( -- pass )
457 ( - ) #1234 ;&t [ STA2 ] ;&t LDA2 #1234 EQU2 JMP2r
458 &t $2
459
460@op-dei2 ( -- pass )
461 ( skip ) #01 JMP2r
462
463@op-deo2 ( -- pass )
464 ( skip ) #01 JMP2r
465
466@op-add2 ( -- pass )
467 ( - ) #ffff #0000 ADD2 [ #ffff ] EQU2
468 ( - ) #0001 #ffff ADD2 [ #0000 ] EQU2 AND
469 ( - ) #ffff #ffff ADD2 [ #fffe ] EQU2 AND
470 ( - ) #fffe #ffff ADD2 [ #fffd ] EQU2 AND JMP2r
471
472@op-sub2 ( -- pass )
473 ( - ) #ffff #0000 SUB2 [ #ffff ] EQU2
474 ( - ) #0001 #ffff SUB2 [ #0002 ] EQU2 AND
475 ( - ) #ffff #ffff SUB2 [ #0000 ] EQU2 AND
476 ( - ) #fffe #ffff SUB2 [ #ffff ] EQU2 AND JMP2r
477
478@op-mul2 ( -- pass )
479 ( - ) #1000 #0003 MUL2 [ #3000 ] EQU2
480 ( - ) #abcd #1234 MUL2 [ #4fa4 ] EQU2 AND
481 ( - ) #8000 #0200 MUL2 [ #0000 ] EQU2 AND
482 ( - ) #2222 #0003 MUL2 [ #6666 ] EQU2 AND JMP2r
483
484@op-div2 ( -- pass )
485 ( - ) #03e8 #0006 DIV2 [ #00a6 ] EQU2
486 ( - ) #abcd #1234 DIV2 [ #0009 ] EQU2 AND
487 ( - ) #8000 #0200 DIV2 [ #0040 ] EQU2 AND
488 ( - ) #2222 #0003 DIV2 [ #0b60 ] EQU2 AND
489 ( - ) #0202 #0000 DIV2 [ #0000 ] EQU2 AND JMP2r
490
491@op-and2 ( -- pass )
492 ( - ) #f0f0 #00f0 AND2 [ #00f0 ] EQU2
493 ( - ) #aaaa #5555 AND2 [ #0000 ] EQU2 AND
494 ( - ) #ffff #1234 AND2 [ #1234 ] EQU2 AND
495 ( - ) #abcd #0a0c AND2 [ #0a0c ] EQU2 AND JMP2r
496
497@op-ora2 ( -- pass )
498 ( - ) #0f0f #f0f0 ORA2 [ #ffff ] EQU2
499 ( - ) #abab #cdcd ORA2 [ #efef ] EQU2 AND
500 ( - ) #1122 #1234 ORA2 [ #1336 ] EQU2 AND
501 ( - ) #8888 #1000 ORA2 [ #9888 ] EQU2 AND JMP2r
502
503@op-eor2 ( -- pass )
504 ( - ) #ffff #ff00 EOR2 [ #00ff ] EQU2
505 ( - ) #aaaa #5555 EOR2 [ #ffff ] EQU2 AND
506 ( - ) #1122 #1234 EOR2 [ #0316 ] EQU2 AND
507 ( - ) #8888 #1000 EOR2 [ #9888 ] EQU2 AND JMP2r
508
509@op-sft2 ( -- pass )
510 ( - ) #ffff #01 SFT2 [ #7fff ] EQU2
511 ( - ) #ffff #70 SFT2 [ #ff80 ] EQU2 AND
512 ( - ) #ffff #7e SFT2 [ #0180 ] EQU2 AND
513 ( - ) #ffff #e3 SFT2 [ #c000 ] EQU2 AND JMP2r
514
515(
516@|mr )
517
518@op-incr ( -- pass )
519 ( - ) LITr 01 INCr STHr #02 EQU JMP2r
520
521@op-popr ( -- pass )
522 ( - ) LITr 0a LITr 0b POPr STHr #0a EQU JMP2r
523
524@op-nipr ( -- pass )
525 ( - ) LITr 12 LITr 34 LITr 56 NIPr ADDr STHr #68 EQU JMP2r
526
527@op-swpr ( -- pass )
528 ( - ) LITr 02 LITr 03 SWPr POPr STHr #03 EQU JMP2r
529
530@op-rotr ( -- pass )
531 ( - ) LITr 0a LITr 0b LITr 0c ROTr POPr POPr STHr #0b EQU JMP2r
532
533@op-dupr ( -- pass )
534 ( - ) LITr 0a DUPr STHr STHr #0a0a EQU2 JMP2r
535
536@op-ovrr ( -- pass )
537 ( - ) LITr 0a LITr 0b OVRr STHr POPr POPr #0a EQU JMP2r
538
539@op-equr ( -- pass )
540 ( - ) LITr f8 LITr f8 EQUr STHr #01 EQU JMP2r
541
542@op-neqr ( -- pass )
543 ( - ) LITr f8 LITr f8 NEQr STHr #00 EQU JMP2r
544
545@op-gthr ( -- pass )
546 ( - ) LITr f8 LITr f8 GTHr STHr #00 EQU JMP2r
547
548@op-lthr ( -- pass )
549 ( - ) LITr f8 LITr f8 LTHr STHr #00 EQU JMP2r
550
551@op-jmpr ( -- pass )
552 ( - ) LITr _&t [ JMPr ] #01 EQU JMP2r
553 &t #01 JMP2r
554
555@op-jcnr ( -- pass )
556 ( - ) #23 LIT2r 01 _&x [ JCNr INC &x ] [ #23 ] EQU
557 ( - ) #23 LIT2r 00 _&y [ JCNr INC &y ] [ #24 ] EQU AND
558 ( - ) #1234 LIT2r 01 _&t [ JCNr &back ] POP [ #34 ] EQU AND
559 ( - ) #1234 LIT2r 00 _&t [ JCNr ] POP [ #12 ] EQU AND JMP2r
560 &t SWP ,&back JMP
561
562@op-jsrr ( -- pass )
563 LITr 0a LITr _&t JSRr STHr #14 EQU JMP2r
564 &t DUPr ADDr JMP2
565
566@op-sthr ( -- pass )
567 ( - ) LITr 55 [ STHr ] #55 EQU JMP2r
568
569@op-ldzr ( -- pass )
570 ( - ) LITr 00 LDZr STHr #12 EQU JMP2r
571
572@op-stzr ( -- pass )
573 ( - ) LIT2r 5606 [ STZr ] #06 LDZ #56 EQU JMP2r
574
575@op-ldrr ( -- pass )
576 ( advance ) [ !{ &u 34 ] }
577 ( - ) LITr _&t LDRr STHr #12 EQU
578 ( - ) LITr _&u LDRr STHr #34 EQU AND JMP2r
579 &t 12
580
581@op-strr ( -- pass )
582 ( advance ) [ !{ &u $1 ] }
583 ( - ) LITr 34 LITr _&t [ STRr ] ,&t LDR #34 EQU
584 ( - ) LITr 12 LITr _&u [ STRr ] ,&u LDR #12 EQU AND JMP2r
585 &t $1
586
587@op-ldar ( -- pass )
588 ( - ) LIT2r =&value LDAr STHr #ef EQU JMP2r
589 &value ef
590
591@op-star ( -- pass )
592 ( - ) LITr 12 LIT2r =&value [ STAr ] ;&value LDA #12 EQU JMP2r
593 &value 00
594
595@op-deir ( -- pass )
596 ( skip ) #01 JMP2r
597
598@op-deor ( -- pass )
599 ( skip ) #01 JMP2r
600
601@op-addr ( -- pass )
602 ( - ) LITr ff LITr 00 ADDr STHr #ff EQU JMP2r
603
604@op-subr ( -- pass )
605 ( - ) LITr ff LITr 00 SUBr STHr #ff EQU JMP2r
606
607@op-mulr ( -- pass )
608 ( - ) LITr 00 LITr 01 MULr STHr #00 EQU JMP2r
609
610@op-divr ( -- pass )
611 ( - ) LITr 10 LITr 06 DIVr STHr [ #02 ] EQU JMP2r
612
613@op-andr ( -- pass )
614 ( - ) LITr fc LITr 3f ANDr STHr [ #3c ] EQU JMP2r
615
616@op-orar ( -- pass )
617 ( - ) LITr 0f LITr f0 ORAr STHr #ff EQU JMP2r
618
619@op-eorr ( -- pass )
620 ( - ) LITr 00 LITr 00 EORr STHr #00 EQU JMP2r
621
622@op-sftr ( -- pass )
623 ( - ) LITr ff LITr 08 SFTr STHr #00 EQU JMP2r
624
625(
626@|m2r )
627
628@op-inc2r ( -- pass )
629 ( - ) LIT2r 00ff INC2r
630 ( . ) STH2r [ #0100 ] EQU2 JMP2r
631
632@op-pop2r ( -- pass )
633 ( - ) LIT2r 0a0b LIT2r 0c0d POP2r
634 ( . ) STH2r [ #0a0b ] EQU2 JMP2r
635
636@op-nip2r ( -- pass )
637 ( - ) LIT2r 1234 LIT2r 5678 NIP2r
638 ( . ) STH2r #5678 EQU2 JMP2r
639
640@op-swp2r ( -- pass )
641 ( - ) LIT2r 0a0b LIT2r 0c0d SWP2r
642 ( . ) STH2r POP2r #0a0b EQU2 JMP2r
643
644@op-rot2r ( -- pass )
645 ( - ) LIT2r 0a0b LIT2r 0c0d LIT2r 0c0f ROT2r POP2r POP2r
646 ( . ) STH2r #0c0d EQU2 JMP2r
647
648@op-dup2r ( -- pass )
649 ( - ) LIT2r 0a0b DUP2r
650 ( . ) STH2r STH2r ADD2 #1416 EQU2 JMP2r
651
652@op-ovr2r ( -- pass )
653 ( - ) LIT2r 0a0b LIT2r 0c0d OVR2r
654 ( . ) STH2r STH2r
655 ( . ) STH2r ADD2 ADD2 #2023 EQU2 JMP2r
656
657@op-equ2r ( -- pass )
658 ( - ) LIT2r 0a0b LIT2r 0a0b EQU2r STHr #01 EQU
659 ( - ) LIT2r 0a0b LIT2r 0c0d EQU2r STHr #00 EQU AND JMP2r
660
661@op-neq2r ( -- pass )
662 ( - ) LIT2r 0a0b LIT2r 0a0b NEQ2r STHr #00 EQU
663 ( - ) LIT2r 0a0b LIT2r 0c0d NEQ2r STHr #01 EQU AND JMP2r
664
665@op-gth2r ( -- pass )
666 ( - ) LIT2r f801 LIT2r f801 GTH2r STHr #00 EQU
667 ( - ) LIT2r f801 LIT2r 01f8 GTH2r STHr #01 EQU AND JMP2r
668
669@op-lth2r ( -- pass )
670 ( - ) LIT2r f801 LIT2r f801 LTH2r STHr #00 EQU
671 ( - ) LIT2r 01f8 LIT2r f801 LTH2r STHr #01 EQU AND JMP2r
672
673@op-jmp2r ( -- pass )
674 ( - ) #5678 LIT2r =&t [ JMP2r ] SWP &t POP #56 EQU JMP2r
675
676@op-jcn2r ( -- pass )
677 ( - ) #23 LITr 01 LIT2r =&x [ JCN2r INC &x ] #23 EQU
678 ( - ) #23 LITr 00 LIT2r =&y [ JCN2r INC &y ] #24 EQU AND JMP2r
679
680@op-jsr2r ( -- pass )
681 ( - ) LITr 12 LIT2r =&t JSR2r STHr #24 EQU JMP2r
682 &t DUPr ADDr JMP2
683
684@op-sth2r ( -- pass )
685 ( - ) LIT2r 0a0b
686 ( . ) STH2r #0a0b EQU2 JMP2r
687
688@op-ldz2r ( -- pass )
689 ( - ) LITr 00 [ LDZ2r ]
690 ( . ) STH2r #1234 EQU2 JMP2r
691
692@op-stz2r ( -- pass )
693 ( - ) LIT2r 5678 LITr 08 [ STZ2r ] #08 LDZ2 #5678 EQU2 JMP2r
694
695@op-ldr2r ( -- pass )
696 ( advance ) [ !{ &u 1234 ] }
697 ( - ) LITr _&t [ LDR2r ] STH2r #1234 EQU2
698 ( - ) LITr _&u [ LDR2r ] STH2r #1234 EQU2 AND JMP2r
699 &t 1234
700
701@op-str2r ( -- pass )
702 ( advance ) [ !{ &u $2 ] }
703 ( - ) LIT2r 1234 LITr _&t [ STR2r ] ,&t LDR2 #1234 EQU2
704 ( - ) LIT2r 1234 LITr _&u [ STR2r ] ,&u LDR2 #1234 EQU2 AND JMP2r
705 &t $2
706
707@op-lda2r ( -- pass )
708 ( - ) LIT2r =&t [ LDA2r ]
709 ( . ) STH2r #1234 EQU2 JMP2r
710 &t 1234
711
712@op-sta2r ( -- pass )
713 ( - ) LIT2r 1234 LIT2r =&t [ STA2r ] ;&t LDA2 #1234 EQU2 JMP2r
714 &t $2
715
716@op-dei2r ( -- pass )
717 ( skip ) #01 JMP2r
718
719@op-deo2r ( -- pass )
720 ( skip ) #01 JMP2r
721
722@op-add2r ( -- pass )
723 ( - ) LIT2r ffff LIT2r 0000 ADD2r STH2r [ #ffff ] EQU2
724 ( - ) LIT2r 0001 LIT2r ffff ADD2r STH2r [ #0000 ] EQU2 AND
725 ( - ) LIT2r ffff LIT2r ffff ADD2r STH2r [ #fffe ] EQU2 AND
726 ( - ) LIT2r fffe LIT2r ffff ADD2r STH2r [ #fffd ] EQU2 AND JMP2r
727
728@op-sub2r ( -- pass )
729 ( - ) LIT2r ffff LIT2r 0000 SUB2r STH2r [ #ffff ] EQU2
730 ( - ) LIT2r 0001 LIT2r ffff SUB2r STH2r [ #0002 ] EQU2 AND
731 ( - ) LIT2r ffff LIT2r ffff SUB2r STH2r [ #0000 ] EQU2 AND
732 ( - ) LIT2r fffe LIT2r ffff SUB2r STH2r [ #ffff ] EQU2 AND JMP2r
733
734@op-mul2r ( -- pass )
735 ( - ) LIT2r 1000 LIT2r 0003 MUL2r STH2r [ #3000 ] EQU2
736 ( - ) LIT2r abcd LIT2r 1234 MUL2r STH2r [ #4fa4 ] EQU2 AND
737 ( - ) LIT2r 8000 LIT2r 0200 MUL2r STH2r [ #0000 ] EQU2 AND
738 ( - ) LIT2r 2222 LIT2r 0003 MUL2r STH2r [ #6666 ] EQU2 AND JMP2r
739
740@op-div2r ( -- pass )
741 ( - ) LIT2r 03e8 LIT2r 0006 DIV2r STH2r [ #00a6 ] EQU2
742 ( - ) LIT2r abcd LIT2r 1234 DIV2r STH2r [ #0009 ] EQU2 AND
743 ( - ) LIT2r 8000 LIT2r 0200 DIV2r STH2r [ #0040 ] EQU2 AND
744 ( - ) LIT2r 2222 LIT2r 0003 DIV2r STH2r [ #0b60 ] EQU2 AND
745 ( - ) LIT2r 0202 LIT2r 0000 DIV2r STH2r [ #0000 ] EQU2 AND JMP2r
746
747@op-and2r ( -- pass )
748 ( - ) LIT2r f0f0 LIT2r 00f0 AND2r STH2r [ #00f0 ] EQU2
749 ( - ) LIT2r aaaa LIT2r 5555 AND2r STH2r [ #0000 ] EQU2 AND
750 ( - ) LIT2r ffff LIT2r 1234 AND2r STH2r [ #1234 ] EQU2 AND
751 ( - ) LIT2r abcd LIT2r 0a0c AND2r STH2r [ #0a0c ] EQU2 AND JMP2r
752
753@op-ora2r ( -- pass )
754 ( - ) LIT2r 0f0f LIT2r f0f0 ORA2r STH2r [ #ffff ] EQU2
755 ( - ) LIT2r abab LIT2r cdcd ORA2r STH2r [ #efef ] EQU2 AND
756 ( - ) LIT2r 1122 LIT2r 1234 ORA2r STH2r [ #1336 ] EQU2 AND
757 ( - ) LIT2r 8888 LIT2r 1000 ORA2r STH2r [ #9888 ] EQU2 AND JMP2r
758
759@op-eor2r ( -- pass )
760 ( - ) LIT2r ffff LIT2r ff00 EOR2r STH2r [ #00ff ] EQU2
761 ( - ) LIT2r aaaa LIT2r 5555 EOR2r STH2r [ #ffff ] EQU2 AND
762 ( - ) LIT2r 1122 LIT2r 1234 EOR2r STH2r [ #0316 ] EQU2 AND
763 ( - ) LIT2r 8888 LIT2r 1000 EOR2r STH2r [ #9888 ] EQU2 AND JMP2r
764
765@op-sft2r ( -- pass )
766 ( - ) LIT2r ffff LITr 01 SFT2r STH2r [ #7fff ] EQU2
767 ( - ) LIT2r ffff LITr 70 SFT2r STH2r [ #ff80 ] EQU2 AND
768 ( - ) LIT2r ffff LITr 7e SFT2r STH2r [ #0180 ] EQU2 AND
769 ( - ) LIT2r ffff LITr e3 SFT2r STH2r [ #c000 ] EQU2 AND JMP2r
770
771(
772@|mk )
773
774@op-inck ( -- pass )
775 ( - ) #01 INCk #0102 EQU2
776 ( - ) #ff INCk #ff00 EQU2 AND JMP2r
777
778@op-popk ( -- pass )
779 ( - ) #0a #0b POPk #0a0b EQU2 JMP2r
780
781@op-nipk ( -- pass )
782 ( - ) #12 #34 NIPk NIP NIP #34 EQU
783 ( - ) #12 #34 NIPk NIP #1234 EQU2 AND JMP2r
784
785@op-swpk ( -- pass )
786 ( - ) #12 #34 SWPk NIP2 #3412 EQU2
787 ( - ) #12 #34 SWPk POP2 #1234 EQU2 AND JMP2r
788
789@op-rotk ( -- pass )
790 ( - ) #02 #04 #10 ROTk POP POP POP ROT DIV ADD #0c EQU
791 ( - ) #02 #04 #10 ROTk [ STH STH STH ] POP POP POP STHr STHr STHr DIV ADD [ #0c ] EQU AND JMP2r
792
793@op-dupk ( -- pass )
794 ( - ) #0a DUPk EQU SWP [ #0a ] EQU AND
795 ( - ) #ff DUPk EQU SWP #ff EQU AND AND JMP2r
796
797@op-ovrk ( -- pass )
798 ( - ) #02 #10 OVRk POP POP POP #0210 EQU2
799 ( check result ) #02 #10 OVRk NIP NIP DIV ADD [ #0a ] EQU AND JMP2r
800
801@op-equk ( -- pass )
802 ( - ) #0a #0a EQUk ROT [ #0a ] EQU ROT [ #0a ] EQU AND SWP #01 EQU AND
803 ( - ) #0a #0b EQUk ROT [ #0a ] EQU ROT [ #0b ] EQU AND SWP #00 EQU AND AND JMP2r
804
805@op-neqk ( -- pass )
806 ( - ) #0a #0b NEQk ROT [ #0a ] EQU ROT [ #0b ] EQU AND SWP #01 EQU AND
807 ( - ) #0a #0a NEQk ROT [ #0a ] EQU ROT [ #0a ] EQU AND SWP #00 EQU AND AND JMP2r
808
809@op-gthk ( -- pass )
810 ( - ) #f8 #01 GTHk ROT [ #f8 ] EQU ROT #01 EQU AND SWP #01 EQU AND
811 ( - ) #01 #f8 GTHk ROT #01 EQU ROT [ #f8 ] EQU AND SWP #00 EQU AND AND JMP2r
812
813@op-lthk ( -- pass )
814 ( - ) #01 #ff LTHk ROT #01 EQU ROT #ff EQU AND SWP #01 EQU AND
815 ( - ) #f8 #01 LTHk ROT [ #f8 ] EQU ROT #01 EQU AND SWP #00 EQU AND AND JMP2r
816
817@op-jmpk ( -- pass )
818 ( - ) #1234 ,&x [ JMPk SWP &x ] POP2 [ #12 ] EQU
819 ( - ) #1234 ,&t [ JMPk &back ] POP2 [ #34 ] EQU AND JMP2r
820 &t POP SWP ,&back JMPk
821
822@op-jcnk ( -- pass )
823 ( - ) LITr 0a #00 ,&x JCNk INCr &x POP2 STHr #0b EQU
824 ( - ) LITr 0a #01 ,&y JCNk INCr &y POP2 STHr #0a EQU AND JMP2r
825
826@op-jsrk ( -- pass )
827 ( - ) #0a ,&t JSRk #0b EQU JMP2r
828 &t POP INC JMP2r
829
830@op-sthk ( -- pass )
831 ( - ) #08 STHk STHr ADD #10 EQU JMP2r
832
833@op-ldzk ( -- pass )
834 ( - ) #00 LDZk [ #12 ] EQU SWP #00 EQU AND JMP2r
835
836@op-stzk ( -- pass )
837 ( - ) #56 #0a STZk POP2 #0a LDZ [ #56 ] EQU
838 ( - ) #ab #0b STZk #ab0b EQU2 AND JMP2r
839
840@op-ldrk ( -- pass )
841 ( - ) ,&t LDRk [ #12 ] EQU NIP JMP2r
842 &t 12
843
844@op-strk ( -- pass )
845 ( - ) #34 ,&t STRk POP2 ,&t LDR [ #34 ] EQU
846 ( - ) #34 ,&t STRk SWP [ #34 ] EQU NIP AND JMP2r
847 &t $1
848
849@op-ldak ( -- pass )
850 ( - ) ;&t LDAk [ STH ] ;&t EQU2 STHr [ #ef ] EQU AND JMP2r
851 &t ef
852
853@op-stak ( -- pass )
854 ( - ) #12 ;&t STAk POP2 POP ;&t LDA [ #12 ] EQU
855 ( - ) #34 ;&t STAk [ STH2 ] [ #34 ] EQU STH2r ;&t EQU2 AND AND JMP2r
856 &t 00
857
858@op-deik ( -- pass )
859 ( skip ) #01 JMP2r
860
861@op-deok ( -- pass )
862 ( skip ) #01 JMP2r
863
864@op-addk ( -- pass )
865 ( - ) #03 #05 ADDk ROT [ #03 ] EQU ROT [ #05 ] EQU AND SWP [ #08 ] EQU AND
866 ( - ) #ff #01 ADDk ROT #ff EQU ROT #01 EQU AND SWP #00 EQU AND AND JMP2r
867
868@op-subk ( -- pass )
869 ( - ) #ff #00 SUBk ROT #ff EQU ROT #00 EQU AND SWP #ff EQU AND
870 ( - ) #01 #ff SUBk ROT #01 EQU ROT #ff EQU AND SWP [ #02 ] EQU AND AND JMP2r
871
872@op-mulk ( -- pass )
873 ( - ) #03 #04 MULk ROT [ #03 ] EQU ROT [ #04 ] EQU AND SWP [ #0c ] EQU AND
874 ( - ) #10 #02 MULk ROT [ #10 ] EQU ROT [ #02 ] EQU AND SWP [ #20 ] EQU AND AND JMP2r
875
876@op-divk ( -- pass )
877 ( - ) #10 #02 DIVk ROT [ #10 ] EQU ROT [ #02 ] EQU AND SWP [ #08 ] EQU AND
878 ( - ) #34 #01 DIVk ROT [ #34 ] EQU ROT #01 EQU AND SWP [ #34 ] EQU AND AND JMP2r
879
880@op-andk ( -- pass )
881 ( - ) #fc #3f ANDk ROT [ #fc ] EQU ROT [ #3f ] EQU AND SWP [ #3c ] EQU AND
882 ( - ) #ff #aa ANDk ROT #ff EQU ROT [ #aa ] EQU AND SWP [ #aa ] EQU AND AND JMP2r
883
884@op-orak ( -- pass )
885 ( - ) #0f #f0 ORAk ROT [ #0f ] EQU ROT [ #f0 ] EQU AND SWP #ff EQU AND
886 ( - ) #12 #34 ORAk ROT [ #12 ] EQU ROT [ #34 ] EQU AND SWP [ #36 ] EQU AND AND JMP2r
887
888@op-eork ( -- pass )
889 ( - ) #aa #55 EORk ROT [ #aa ] EQU ROT [ #55 ] EQU AND SWP #ff EQU AND
890 ( - ) #ff #ff EORk ROT #ff EQU ROT #ff EQU AND SWP #00 EQU AND AND JMP2r
891
892@op-sftk ( -- pass )
893 ( - ) #ff #11 SFTk ROT #ff EQU ROT [ #11 ] EQU AND SWP [ #fe ] EQU AND
894 ( - ) #ff #12 SFTk ROT #ff EQU ROT [ #12 ] EQU AND SWP [ #7e ] EQU AND AND JMP2r
895
896(
897@|m2k )
898
899@op-inc2k ( -- pass )
900 ( - ) #00ff INC2k ADD2 #01ff EQU2 JMP2r
901
902@op-pop2k ( -- pass )
903 ( - ) #0a0b POP2k #0a0b EQU2 JMP2r
904
905@op-nip2k ( -- pass )
906 ( - ) #1234 #5678 NIP2k #5678 EQU2 STH
907 ( - ) #5678 EQU2 STH
908 ANDr
909 ( - ) #1234 EQU2 STHr AND JMP2r
910
911@op-swp2k ( -- pass )
912 ( - ) #1234 #5678 SWP2k
913 ( | tests )
914 #1234 EQU2 STH
915 #5678 EQU2 STH
916 #5678 EQU2 STH
917 #1234 EQU2 STH
918 ANDr ANDr ANDr STHr JMP2r
919
920@op-rot2k ( -- pass )
921 ( - ) #000a #000b #000c ROT2k
922 ( | tests )
923 #000a EQU2 STH
924 #000c EQU2 STH
925 #000b EQU2 STH
926 #000c EQU2 STH
927 #000b EQU2 STH
928 #000a EQU2 STH
929 ANDr ANDr ANDr ANDr ANDr STHr JMP2r
930
931@op-dup2k ( -- pass )
932 ( - ) #0a0b DUP2k
933 ( | tests )
934 #0a0b EQU2 STH
935 #0a0b EQU2 STH
936 #0a0b EQU2 STH
937 ANDr ANDr STHr JMP2r
938
939@op-ovr2k ( -- pass )
940 ( - ) #0a0b #0c0d OVR2k
941 ( | tests )
942 #0a0b EQU2 STH
943 #0c0d EQU2 STH
944 #0a0b EQU2 STH
945 #0c0d EQU2 STH
946 #0a0b EQU2 STH
947 ANDr ANDr ANDr ANDr STHr JMP2r
948
949@op-equ2k ( -- pass )
950 ( - ) #0a0b #0a0b EQU2k STH
951 EQU2 STHr AND
952 ( - ) #0a0b #0e0f EQU2k #00 EQU STH
953 EQU2 #00 EQU STHr AND AND JMP2r
954
955@op-neq2k ( -- pass )
956 ( - ) #0a0b #0a0b NEQ2k #00 EQU STH
957 NEQ2 #00 EQU STHr AND
958 ( - ) #0a0b #0e0f NEQ2k STH
959 NEQ2 STHr AND AND JMP2r
960
961@op-gth2k ( -- pass )
962 ( - ) #000a #000b GTH2k #00 EQU STH
963 GTH2 #00 EQU STHr AND
964 ( - ) #000b #000a GTH2k STH
965 GTH2 STHr AND AND JMP2r
966
967@op-lth2k ( -- pass )
968 ( - ) #000b #000a LTH2k #00 EQU STH
969 LTH2 #00 EQU STHr AND
970 ( - ) #000a #000b LTH2k STH
971 LTH2 STHr AND AND JMP2r
972
973@op-jmp2k ( -- pass )
974 ( - ) LIT2r 1234 ;&x [ JMP2k SWPr &x ] POP2 STHr POPr #34 EQU
975 ( - ) LIT2r 1234 ;&t [ JMP2k &back ] POP2 POPr STHr #34 EQU AND JMP2r
976 &t POP2 SWPr ;&back JMP2k
977
978@op-jcn2k ( -- pass )
979 ( - ) LITr 0a #00 ;&x JCN2k INCr &x POP2 POP STHr #0b EQU
980 ( - ) LITr 0a #01 ;&y JCN2k INCr &y POP2 POP STHr #0a EQU AND JMP2r
981
982@op-jsr2k ( -- pass )
983 ( - ) #0a ;&t JSR2k #0b EQU JMP2r
984 &t POP2 INC JMP2r
985
986@op-sth2k ( -- pass )
987 ( - ) #0a0b STH2k STH2r EQU2 JMP2r
988
989@op-ldz2k ( -- pass )
990 ( - ) #00 LDZ2k #1234 EQU2 SWP #00 EQU AND JMP2r
991
992@op-stz2k ( -- pass )
993 ( - ) #5678 #05 [ STZ2k ] #05 EQU STH
994 #5678 EQU2 STHr AND #05 LDZ2 #5678 EQU2 AND JMP2r
995
996@op-ldr2k ( -- pass )
997 ( - ) ,&t LDR2k [ LIT2 &t 1234 ] EQU2 NIP JMP2r
998
999@op-str2k ( -- pass )
1000 ( - ) #1234 ,&t STR2k POP [ LIT2 &t $2 ] EQU2 JMP2r
1001
1002@op-lda2k ( -- pass )
1003 ( - ) ;&t LDA2k [ LIT2 &t 1234 ] EQU2 NIP NIP JMP2r
1004
1005@op-sta2k ( -- pass )
1006 ( - ) #1234 ;&t STA2k POP2 [ LIT2 &t $2 ] EQU2 JMP2r
1007
1008@op-dei2k ( -- pass )
1009 ( skip ) #01 JMP2r
1010
1011@op-deo2k ( -- pass )
1012 ( skip ) #01 JMP2r
1013
1014@op-add2k ( -- pass )
1015 #0a0b #0c0d ADD2k
1016 ( | tests )
1017 #1618 EQU2 STH
1018 #0c0d EQU2 STH
1019 #0a0b EQU2 STH
1020 ANDr ANDr STHr JMP2r
1021
1022@op-sub2k ( -- pass )
1023 #0a0b #0c0d SUB2k
1024 ( | tests )
1025 #fdfe EQU2 STH
1026 #0c0d EQU2 STH
1027 #0a0b EQU2 STH
1028 ANDr ANDr STHr JMP2r
1029
1030@op-mul2k ( -- pass )
1031 #0a0b #0c0d MUL2k
1032 ( | tests )
1033 #068f EQU2 STH
1034 #0c0d EQU2 STH
1035 #0a0b EQU2 STH
1036 ANDr ANDr STHr JMP2r
1037
1038@op-div2k ( -- pass )
1039 #0c0d #0003 DIV2k
1040 ( | tests )
1041 #0404 EQU2 STH
1042 #0003 EQU2 STH
1043 #0c0d EQU2 STH
1044 ANDr ANDr STHr JMP2r
1045
1046@op-and2k ( -- pass )
1047 #0c0d #a5a5 AND2k
1048 ( | tests )
1049 #0405 EQU2 STH
1050 #a5a5 EQU2 STH
1051 #0c0d EQU2 STH
1052 ANDr ANDr STHr JMP2r
1053
1054@op-ora2k ( -- pass )
1055 #0c0d #a5a5 ORA2k
1056 ( | tests )
1057 #adad EQU2 STH
1058 #a5a5 EQU2 STH
1059 #0c0d EQU2 STH
1060 ANDr ANDr STHr JMP2r
1061
1062@op-eor2k ( -- pass )
1063 #0c0d #a5a5 EOR2k
1064 ( | tests )
1065 #a9a8 EQU2 STH
1066 #a5a5 EQU2 STH
1067 #0c0d EQU2 STH
1068 ANDr ANDr STHr JMP2r
1069
1070@op-sft2k ( -- pass )
1071 ( - ) #1234 #32 SFT2k
1072 ( | test )
1073 #2468 EQU2 STH
1074 #32 EQU STH
1075 #1234 EQU2 STH
1076 ANDr ANDr STHr JMP2r
1077
1078(
1079@|mkr )
1080
1081@op-inckr ( -- pass )
1082 ( - ) LITr 01 INCkr LIT2r 0102 EQU2r
1083 ( - ) LITr ff INCkr LIT2r ff00 EQU2r ANDr STHr JMP2r
1084
1085@op-popkr ( -- pass )
1086 ( - ) LIT2r 0a0b POPkr LIT2r 0a0b EQU2r STHr JMP2r
1087
1088@op-nipkr ( -- pass )
1089 ( - ) LIT2r 1234 NIPkr NIPr NIPr LITr 34 EQUr
1090 ( - ) LIT2r 1234 NIPkr NIPr LIT2r 1234 EQU2r ANDr STHr JMP2r
1091
1092@op-swpkr ( -- pass )
1093 ( - ) LIT2r 1234 SWPkr NIP2r LIT2r 3412 EQU2r
1094 ( - ) LIT2r 1234 SWPkr POP2r LIT2r 1234 EQU2r ANDr STHr JMP2r
1095
1096@op-rotkr ( -- pass )
1097 LITr 0a LITr 0b LITr 0c ROTkr STH2r #0c0a EQU2 STH2r #0c0b EQU2 STH2r #0a0b EQU2 AND AND JMP2r
1098
1099@op-dupkr ( -- pass )
1100 ( - ) LITr 0a DUPkr
1101 ( . ) STH2r #0a0a EQU2
1102 ( . ) STHr #0a EQU AND JMP2r
1103
1104@op-ovrkr ( -- pass )
1105 ( - ) LIT2r 0a0b OVRkr
1106 ( . ) STH2r #0b0a EQU2
1107 ( . ) STH2r #0b0a EQU2 AND
1108 ( . ) STHr #0a EQU AND JMP2r
1109
1110@op-equkr ( -- pass )
1111 ( - ) LIT2r 0a0a EQUkr ROTr LITr 0a EQUr ROTr LITr 0a EQUr ANDr SWPr LITr 01 EQUr ANDr
1112 ( - ) LIT2r 0a0b EQUkr ROTr LITr 0a EQUr ROTr LITr 0b EQUr ANDr SWPr LITr 00 EQUr ANDr ANDr STHr JMP2r
1113
1114@op-neqkr ( -- pass )
1115 ( - ) LIT2r 0a0b NEQkr ROTr LITr 0a EQUr ROTr LITr 0b EQUr ANDr SWPr LITr 01 EQUr ANDr
1116 ( - ) LIT2r 0a0a NEQkr ROTr LITr 0a EQUr ROTr LITr 0a EQUr ANDr SWPr LITr 00 EQUr ANDr ANDr STHr JMP2r
1117
1118@op-gthkr ( -- pass )
1119 ( - ) LIT2r f801 GTHkr ROTr LITr f8 EQUr ROTr LITr 01 EQUr ANDr SWPr LITr 01 EQUr ANDr
1120 ( - ) LIT2r 01f8 GTHkr ROTr LITr 01 EQUr ROTr LITr f8 EQUr ANDr SWPr LITr 00 EQUr ANDr ANDr STHr JMP2r
1121
1122@op-lthkr ( -- pass )
1123 ( - ) LIT2r 01ff LTHkr ROTr LITr 01 EQUr ROTr LITr ff EQUr ANDr SWPr LITr 01 EQUr ANDr
1124 ( - ) LIT2r f801 LTHkr ROTr LITr f8 EQUr ROTr LITr 01 EQUr ANDr SWPr LITr 00 EQUr ANDr ANDr STHr JMP2r
1125
1126@op-jmpkr ( -- pass )
1127 ( - ) #1234 LITr _&x [ JMPkr SWP &x ] POP POPr [ #12 ] EQU
1128 ( - ) #1234 LITr _&t [ JMPkr &back ] POP POPr [ #34 ] EQU AND JMP2r
1129 &t POPr SWP LITr _&back JMPkr
1130
1131@op-jcnkr ( -- pass )
1132 ( - ) #0a LIT2r 00 _&x JCNkr
1133 INC &x POP2r #0b EQU
1134 ( - ) #0a LIT2r 01 _&y JCNkr
1135 INC &y POP2r #0a EQU AND JMP2r
1136
1137@op-jsrkr ( -- pass )
1138 ( - ) LITr 0a LITr _&t JSRkr STHr #0b EQU JMP2r
1139 &t POPr INCr JMP2
1140
1141@op-sthkr ( -- pass )
1142 ( - ) LIT2r 0a0b STH2kr STH2r EQU2 JMP2r
1143
1144@op-ldzkr ( -- pass )
1145 ( - ) LITr 00 LDZkr STH2r #0012 EQU2 JMP2r
1146
1147@op-stzkr ( -- pass )
1148 ( - ) LITr 56 LITr 0a STZkr
1149 POP2r LITr 0a LDZr LITr 56 EQUr
1150 ( - ) LITr ab LITr 0b STZkr
1151 LIT2r ab0b EQU2r ANDr STHr JMP2r
1152
1153@op-ldrkr ( -- pass )
1154 ( - ) LITr _&t LDRkr [ LITr 12 ] EQUr NIPr STHr JMP2r
1155 &t 12
1156
1157@op-strkr ( -- pass )
1158 ( - ) LITr 34 LITr _&t STRkr
1159 POP2r LITr _&t LDRr [ LITr 34 ] EQUr
1160 ( - ) LITr 34 LITr _&t STRkr
1161 SWPr [ LITr 34 ] EQUr NIPr ANDr STHr JMP2r
1162 &t $1
1163
1164@op-ldakr ( -- pass )
1165 ( - ) LIT2r =&t LDAkr [ STHr ] LIT2r =&t EQU2r STH
1166 [ LITr ef ] EQUr ANDr STHr JMP2r
1167 &t ef
1168
1169@op-stakr ( -- pass )
1170 ( - ) LITr 12 LIT2r =&t STAkr
1171 POP2r POPr LIT2r =&t LDAr [ LITr 12 ] EQUr
1172 ( - ) LITr 34 LIT2r =&t STAkr
1173 [ STH2r ] [ LITr 34 ] EQUr STH2
1174 LIT2r =&t EQU2r ANDr ANDr STHr JMP2r
1175 &t 00
1176
1177@op-deikr ( -- pass )
1178 ( skip ) #01 JMP2r
1179
1180@op-deokr ( -- pass )
1181 ( skip ) #01 JMP2r
1182
1183@op-addkr ( -- pass )
1184 ( - ) LITr 03 LITr 05 ADDkr ROTr LITr 03 EQUr ROTr LITr 05 EQUr ANDr SWPr LITr 08 EQUr ANDr
1185 ( - ) LITr ff LITr 01 ADDkr ROTr LITr ff EQUr ROTr LITr 01 EQUr ANDr SWPr LITr 00 EQUr ANDr ANDr STHr JMP2r
1186
1187@op-subkr ( -- pass )
1188 ( - ) LITr ff LITr 00 SUBkr ROTr LITr ff EQUr ROTr LITr 00 EQUr ANDr SWPr LITr ff EQUr ANDr
1189 ( - ) LITr 01 LITr ff SUBkr ROTr LITr 01 EQUr ROTr LITr ff EQUr ANDr SWPr LITr 02 EQUr ANDr ANDr STHr JMP2r
1190
1191@op-mulkr ( -- pass )
1192 ( - ) LITr 03 LITr 04 MULkr ROTr LITr 03 EQUr ROTr LITr 04 EQUr ANDr SWPr LITr 0c EQUr ANDr
1193 ( - ) LITr 10 LITr 02 MULkr ROTr LITr 10 EQUr ROTr LITr 02 EQUr ANDr SWPr LITr 20 EQUr ANDr ANDr STHr JMP2r
1194
1195@op-divkr ( -- pass )
1196 ( - ) LITr 10 LITr 02 DIVkr ROTr LITr 10 EQUr ROTr LITr 02 EQUr ANDr SWPr LITr 08 EQUr ANDr
1197 ( - ) LITr 34 LITr 01 DIVkr ROTr LITr 34 EQUr ROTr LITr 01 EQUr ANDr SWPr LITr 34 EQUr ANDr ANDr STHr JMP2r
1198
1199@op-andkr ( -- pass )
1200 ( - ) LITr fc LITr 3f ANDkr ROTr LITr fc EQUr ROTr LITr 3f EQUr ANDr SWPr LITr 3c EQUr ANDr
1201 ( - ) LITr ff LITr aa ANDkr ROTr LITr ff EQUr ROTr LITr aa EQUr ANDr SWPr LITr aa EQUr ANDr ANDr STHr JMP2r
1202
1203@op-orakr ( -- pass )
1204 ( - ) LITr 0f LITr f0 ORAkr ROTr LITr 0f EQUr ROTr LITr f0 EQUr ANDr SWPr LITr ff EQUr ANDr
1205 ( - ) LITr 12 LITr 34 ORAkr ROTr LITr 12 EQUr ROTr LITr 34 EQUr ANDr SWPr LITr 36 EQUr ANDr ANDr STHr JMP2r
1206
1207@op-eorkr ( -- pass )
1208 ( - ) LITr aa LITr 55 EORkr ROTr LITr aa EQUr ROTr LITr 55 EQUr ANDr SWPr LITr ff EQUr ANDr
1209 ( - ) LITr ff LITr ff EORkr ROTr LITr ff EQUr ROTr LITr ff EQUr ANDr SWPr LITr 00 EQUr ANDr ANDr STHr JMP2r
1210
1211@op-sftkr ( -- pass )
1212 ( - ) LITr ff LITr 11 SFTkr ROTr LITr ff EQUr ROTr LITr 11 EQUr ANDr SWPr LITr fe EQUr ANDr
1213 ( - ) LITr ff LITr 12 SFTkr ROTr LITr ff EQUr ROTr LITr 12 EQUr ANDr SWPr LITr 7e EQUr ANDr ANDr STHr JMP2r
1214
1215(
1216@|m2kr )
1217
1218@op-inc2kr ( -- pass )
1219 ( - ) LIT2r 00ff INC2kr ADD2r LIT2r 01ff EQU2r STHr JMP2r
1220
1221@op-pop2kr ( -- pass )
1222 ( - ) LIT2r 0a0b POP2kr LIT2r 0a0b EQU2r STHr JMP2r
1223
1224@op-nip2kr ( -- pass )
1225 ( - ) LIT2r 1234 LIT2r 5678 NIP2kr LIT2r 5678 EQU2r STHr
1226 ( - ) LIT2r 5678 EQU2r STHr AND
1227 ( - ) LIT2r 1234 EQU2r STH
1228 ANDr STHr JMP2r
1229
1230@op-swp2kr ( -- pass )
1231 ( - ) LIT2r 1234 LIT2r 5678 SWP2kr
1232 ( | tests )
1233 LIT2r 1234 EQU2r STHr LIT2r 5678 EQU2r STHr LIT2r 5678 EQU2r STHr LIT2r 1234 EQU2r STHr AND AND AND JMP2r
1234
1235@op-rot2kr ( -- pass )
1236 ( - ) LIT2r 1234 LIT2r 5678 LIT2r 9abc ROT2kr STH2r #1234 EQU2 STH2r #9abc EQU2 STH2r #5678 EQU2 STH2r #9abc EQU2 STH2r #5678 EQU2 STH2r #1234 EQU2 AND AND AND AND AND JMP2r
1237
1238@op-dup2kr ( -- pass )
1239 ( - ) LIT2r 1234 DUP2kr ADD2r ADD2r STH2r #369c EQU2 JMP2r
1240
1241@op-ovr2kr ( -- pass )
1242 ( - ) LIT2r 0a0b LIT2r 0c0d OVR2kr STH2r #0a0b EQU2 STH2r #0c0d EQU2 STH2r #0a0b EQU2 STH2r #0c0d EQU2 STH2r #0a0b EQU2 AND AND AND AND JMP2r
1243
1244@op-equ2kr ( -- pass )
1245 ( - ) LIT2r 0a0b LIT2r 0a0b EQU2kr STHr EQU2r STH
1246 ANDr
1247 ( - ) LIT2r 0a0b LIT2r 0e0f EQU2kr LITr 00 EQUr STHr EQU2r LITr 00 EQUr STH
1248 ANDr ANDr STHr JMP2r
1249
1250@op-neq2kr ( -- pass )
1251 ( - ) LIT2r 0a0b LIT2r 0a0b NEQ2kr LITr 00 EQUr STHr NEQ2r LITr 00 EQUr STH
1252 ANDr
1253 ( - ) LIT2r 0a0b LIT2r 0e0f NEQ2kr STHr NEQ2r STH
1254 ANDr ANDr STHr JMP2r
1255
1256@op-gth2kr ( -- pass )
1257 ( - ) LIT2r 000a LIT2r 000b GTH2kr LITr 00 EQUr STHr GTH2r LITr 00 EQUr STH
1258 ANDr
1259 ( - ) LIT2r 000b LIT2r 000a GTH2kr STHr GTH2r STH
1260 ANDr ANDr STHr JMP2r
1261
1262@op-lth2kr ( -- pass )
1263 ( - ) LIT2r 000b LIT2r 000a LTH2kr LITr 00 EQUr STHr LTH2r LITr 00 EQUr STH
1264 ANDr
1265 ( - ) LIT2r 000a LIT2r 000b LTH2kr STHr LTH2r STH
1266 ANDr ANDr STHr JMP2r
1267
1268@op-jmp2kr ( -- pass )
1269 ( - ) #1234 LIT2r =&x [ JMP2kr SWP &x ] POP2r POP #12 EQU
1270 ( - ) #1234 LIT2r =&t [ JMP2kr &back ] POP2r POP #34 EQU AND JMP2r
1271 &t POP2r SWP LIT2r =&back JMP2kr
1272
1273@op-jcn2kr ( -- pass )
1274 ( - ) #0a LITr 00 LIT2r =&x JCN2kr
1275 INC &x POP2r POPr #0b EQU
1276 ( - ) #0a LITr 01 LIT2r =&y JCN2kr
1277 INC &y POP2r POPr #0a EQU AND JMP2r
1278
1279@op-jsr2kr ( -- pass )
1280 ( - ) LITr 0a LIT2r =&t JSR2kr STHr #0b EQU JMP2r
1281 &t POP2r INCr JMP2
1282
1283@op-sth2kr ( -- pass )
1284 ( - ) LIT2r 0a0b STH2kr #0a0b EQU2 #0a0b STH2r EQU2 AND JMP2r
1285
1286@op-ldz2kr ( -- pass )
1287 ( - ) LITr 00 LDZ2kr STH2r #1234 EQU2 STHr #00 EQU AND JMP2r
1288
1289@op-stz2kr ( -- pass )
1290 ( - ) LIT2r 5678 LITr 09 [ STZ2kr ] STHr #09 EQU STH2r #5678 EQU2 AND #09 LDZ2 #5678 EQU2 AND JMP2r
1291
1292@op-ldr2kr ( -- pass )
1293 ( - ) LITr _&t LDR2kr [ LIT2r &t 1234 ] EQU2r NIPr STHr JMP2r
1294
1295@op-str2kr ( -- pass )
1296 ( - ) LIT2r 1234 LITr _&t STR2kr
1297 POPr [ LIT2r &t $2 ] EQU2r STHr JMP2r
1298
1299@op-lda2kr ( -- pass )
1300 ( - ) LIT2r =&t LDA2kr [ LIT2r &t 1234 ] EQU2r NIPr NIPr STHr JMP2r
1301
1302@op-sta2kr ( -- pass )
1303 ( - ) LIT2r 1234 LIT2r =&t STA2kr
1304 POP2r [ LIT2r &t $2 ] EQU2r STHr JMP2r
1305
1306@op-dei2kr ( -- pass )
1307 ( skip ) #01 JMP2r
1308
1309@op-deo2kr ( -- pass )
1310 ( skip ) #01 JMP2r
1311
1312@op-add2kr ( -- pass )
1313 LIT2r 0a0b LIT2r 0c0d ADD2kr
1314 ( | tests )
1315 LIT2r 1618 EQU2r STHr LIT2r 0c0d EQU2r STHr LIT2r 0a0b EQU2r STHr AND AND JMP2r
1316
1317@op-sub2kr ( -- pass )
1318 LIT2r 0a0b LIT2r 0c0d SUB2kr
1319 ( | tests )
1320 LIT2r fdfe EQU2r STHr LIT2r 0c0d EQU2r STHr LIT2r 0a0b EQU2r STHr AND AND JMP2r
1321
1322@op-mul2kr ( -- pass )
1323 LIT2r 0a0b LIT2r 0c0d MUL2kr
1324 ( | tests )
1325 LIT2r 068f EQU2r STHr LIT2r 0c0d EQU2r STHr LIT2r 0a0b EQU2r STHr AND AND JMP2r
1326
1327@op-div2kr ( -- pass )
1328 LIT2r 0c0d LIT2r 0003 DIV2kr
1329 ( | tests )
1330 LIT2r 0404 EQU2r STHr LIT2r 0003 EQU2r STHr LIT2r 0c0d EQU2r STHr AND AND JMP2r
1331
1332@op-and2kr ( -- pass )
1333 LIT2r 0c0d LIT2r a5a5 AND2kr
1334 ( | tests )
1335 LIT2r 0405 EQU2r STHr LIT2r a5a5 EQU2r STHr LIT2r 0c0d EQU2r STHr AND AND JMP2r
1336
1337@op-ora2kr ( -- pass )
1338 LIT2r 0c0d LIT2r a5a5 ORA2kr
1339 ( | tests )
1340 LIT2r adad EQU2r STHr LIT2r a5a5 EQU2r STHr LIT2r 0c0d EQU2r STHr AND AND JMP2r
1341
1342@op-eor2kr ( -- pass )
1343 LIT2r 0c0d LIT2r a5a5 EOR2kr
1344 ( | tests )
1345 LIT2r a9a8 EQU2r STHr LIT2r a5a5 EQU2r STHr LIT2r 0c0d EQU2r STHr AND AND JMP2r
1346
1347@op-sft2kr ( -- pass )
1348 ( - ) LIT2r 1234 LITr 32 SFT2kr LIT2r 2468 EQU2r SWP2r LIT2r 1234 EQU2r ANDr LIT2r 3201 EQU2r STHr JMP2r
1349
1350@tests/lut [
1351 =op-brk =op-inc =op-pop =op-nip
1352 =op-swp =op-rot =op-dup =op-ovr
1353 =op-equ =op-neq =op-gth =op-lth
1354 =op-jmp =op-jcn =op-jsr =op-sth
1355 =op-ldz =op-stz =op-ldr =op-str
1356 =op-lda =op-sta =op-dei =op-deo
1357 =op-add =op-sub =op-mul =op-div
1358 =op-and =op-ora =op-eor =op-sft
1359 =op-jci =op-inc2 =op-pop2 =op-nip2
1360 =op-swp2 =op-rot2 =op-dup2 =op-ovr2
1361 =op-equ2 =op-neq2 =op-gth2 =op-lth2
1362 =op-jmp2 =op-jcn2 =op-jsr2 =op-sth2
1363 =op-ldz2 =op-stz2 =op-ldr2 =op-str2
1364 =op-lda2 =op-sta2 =op-dei2 =op-deo2
1365 =op-add2 =op-sub2 =op-mul2 =op-div2
1366 =op-and2 =op-ora2 =op-eor2 =op-sft2
1367 =op-jmi =op-incr =op-popr =op-nipr
1368 =op-swpr =op-rotr =op-dupr =op-ovrr
1369 =op-equr =op-neqr =op-gthr =op-lthr
1370 =op-jmpr =op-jcnr =op-jsrr =op-sthr
1371 =op-ldzr =op-stzr =op-ldrr =op-strr
1372 =op-ldar =op-star =op-deir =op-deor
1373 =op-addr =op-subr =op-mulr =op-divr
1374 =op-andr =op-orar =op-eorr =op-sftr
1375 =op-jsi =op-inc2r =op-pop2r =op-nip2r
1376 =op-swp2r =op-rot2r =op-dup2r =op-ovr2r
1377 =op-equ2r =op-neq2r =op-gth2r =op-lth2r
1378 =op-jmp2r =op-jcn2r =op-jsr2r =op-sth2r
1379 =op-ldz2r =op-stz2r =op-ldr2r =op-str2r
1380 =op-lda2r =op-sta2r =op-dei2r =op-deo2r
1381 =op-add2r =op-sub2r =op-mul2r =op-div2r
1382 =op-and2r =op-ora2r =op-eor2r =op-sft2r
1383 =op-lit =op-inck =op-popk =op-nipk
1384 =op-swpk =op-rotk =op-dupk =op-ovrk
1385 =op-equk =op-neqk =op-gthk =op-lthk
1386 =op-jmpk =op-jcnk =op-jsrk =op-sthk
1387 =op-ldzk =op-stzk =op-ldrk =op-strk
1388 =op-ldak =op-stak =op-deik =op-deok
1389 =op-addk =op-subk =op-mulk =op-divk
1390 =op-andk =op-orak =op-eork =op-sftk
1391 =op-lit2 =op-inc2k =op-pop2k =op-nip2k
1392 =op-swp2k =op-rot2k =op-dup2k =op-ovr2k
1393 =op-equ2k =op-neq2k =op-gth2k =op-lth2k
1394 =op-jmp2k =op-jcn2k =op-jsr2k =op-sth2k
1395 =op-ldz2k =op-stz2k =op-ldr2k =op-str2k
1396 =op-lda2k =op-sta2k =op-dei2k =op-deo2k
1397 =op-add2k =op-sub2k =op-mul2k =op-div2k
1398 =op-and2k =op-ora2k =op-eor2k =op-sft2k
1399 =op-litr =op-inckr =op-popkr =op-nipkr
1400 =op-swpkr =op-rotkr =op-dupkr =op-ovrkr
1401 =op-equkr =op-neqkr =op-gthkr =op-lthkr
1402 =op-jmpkr =op-jcnkr =op-jsrkr =op-sthkr
1403 =op-ldzkr =op-stzkr =op-ldrkr =op-strkr
1404 =op-ldakr =op-stakr =op-deikr =op-deokr
1405 =op-addkr =op-subkr =op-mulkr =op-divkr
1406 =op-andkr =op-orakr =op-eorkr =op-sftkr
1407 =op-lit2r =op-inc2kr =op-pop2kr =op-nip2kr
1408 =op-swp2kr =op-rot2kr =op-dup2kr =op-ovr2kr
1409 =op-equ2kr =op-neq2kr =op-gth2kr =op-lth2kr
1410 =op-jmp2kr =op-jcn2kr =op-jsr2kr =op-sth2kr
1411 =op-ldz2kr =op-stz2kr =op-ldr2kr =op-str2kr
1412 =op-lda2kr =op-sta2kr =op-dei2kr =op-deo2kr
1413 =op-add2kr =op-sub2kr =op-mul2kr =op-div2kr
1414 =op-and2kr =op-ora2kr =op-eor2kr =op-sft2kr ] &lut-end
1415