main pita/uxn12 / etc / tests / opctest.tal
   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