~rabbits/uxnlin

3ee2938d53562f992297c30822940c6132986297 — neauoire 4 months ago 1511b56
Migrated to = rune
1 files changed, 200 insertions(+), 199 deletions(-)

M src/uxnlin.tal
M src/uxnlin.tal => src/uxnlin.tal +200 -199
@@ 404,214 404,215 @@ JMP2r
@ldaksth "LDAk 20 "STH $1
@inc2ora "INC2 20 "ORA $1


(
@|rules )

@rules2

	"STH   $1 "STHr   $1 :redundance
	"STH2  $1 "STH2r  $1 :redundance
	"STHr  $1 "STH    $1 :redundance
	"STH2r $1 "STH2   $1 :redundance
	"DUP   $1 "SWP    $1 :redundance
	"DUP2  $1 "SWP2   $1 :redundance
	"SWP   $1 "SWP    $1 :redundance
	"SWP2  $1 "SWP2   $1 :redundance
	"SWPr  $1 "SWPr   $1 :redundance
	"SWP2r $1 "SWP2r  $1 :redundance
	"DUP   $1 "POP    $1 :redundance
	"DUP2  $1 "POP2   $1 :redundance
	"STH   $1 "STHkr  $1 :redundance
	"STH2  $1 "STH2kr $1 :redundance
	"STHr  $1 "STHk   $1 :redundance
	"STH2r $1 "STH2k  $1 :redundance
	"JMP2r $1 "JMP2r  $1 :redundance
	"JMP2  $1 "JMP2r  $1 :redundance
	"JMP2  $1 "BRK    $1 :redundance
	"JMP   $1 "BRK    $1 :redundance
	"BRK   $1 "BRK    $1 :redundance
	"SWP   $1 "ADD    $1 :redundance
	"SWP2  $1 "ADD2   $1 :redundance
	"SWP   $1 "MUL    $1 :redundance
	"SWP2  $1 "MUL2   $1 :redundance
	"SWP   $1 "EQU    $1 :redundance
	"SWP2  $1 "EQU2   $1 :redundance
	"SWP   $1 "NEQ    $1 :redundance
	"SWP2  $1 "NEQ2   $1 :redundance
	"#ff   $1 "GTH    $1 :redundance
	"#ffff $1 "GTH2   $1 :redundance
	"#00   $1 "LTH    $1 :redundance
	"#0000 $1 "LTH2   $1 :redundance
	"#00   $1 "ADD    $1 :redundance
	"#0000 $1 "ADD2   $1 :redundance
	"#00   $1 "SUB    $1 :redundance
	"#0000 $1 "SUB2   $1 :redundance
	"#01   $1 "MUL    $1 :redundance
	"#0001 $1 "MUL2   $1 :redundance
	"#01   $1 "DIV    $1 :redundance
	"#0001 $1 "DIV2   $1 :redundance
	"#ff   $1 "AND    $1 :redundance
	"#ffff $1 "AND2   $1 :redundance
	"#00   $1 "ORA    $1 :redundance
	"#0000 $1 "ORA2   $1 :redundance
	"#00   $1 "EOR    $1 :redundance
	"#0000 $1 "EOR2   $1 :redundance
	"#00   $1 "SFT    $1 :redundance
	"#00   $1 "SFT2   $1 :redundance
	"AND   $1 "JMP    $1 :unsafe
	"ORA   $1 "JMP    $1 :unsafe
	"EOR   $1 "JMP    $1 :unsafe
	";__   $1 "STH2   $1 :unstashed
	".__   $1 "STH    $1 :unstashed
	"#__   $1 "STH    $1 :unstashed
	"#____ $1 "STH2   $1 :unstashed
	"LDZ $1 "STH $1 :latestack
	"LDZ2 $1 "STH2 $1 :latestack
	"DEIk $1 "STH $1 :latestack
	"DEI2k $1 "STH2 $1 :latestack
	"LDZk $1 "STH $1 :latestack
	"LDZ2k $1 "STH2 $1 :latestack
	"DEI $1 "STH $1 :latestack
	"DEI2 $1 "STH2 $1 :latestack
	"STH2r $1 "ADD $1 :eagerstack
	"STH2r $1 "SUB $1 :eagerstack
	"STH2r $1 "MUL $1 :eagerstack
	"STH2r $1 "DIV $1 :eagerstack
	"STH2r $1 "EQU $1 :eagerstack
	"STH2r $1 "NEQ $1 :eagerstack
	"STH2r $1 "GTH $1 :eagerstack
	"STH2r $1 "LTH $1 :eagerstack
	"STH2 $1 "ADDr $1 :eagerstack
	"STH2 $1 "SUBr $1 :eagerstack
	"STH2 $1 "MULr $1 :eagerstack
	"STH2 $1 "DIVr $1 :eagerstack
	"STH2 $1 "EQUr $1 :eagerstack
	"STH2 $1 "NEQr $1 :eagerstack
	"STH2 $1 "GTHr $1 :eagerstack
	"STH2 $1 "LTHr $1 :eagerstack
	"#__   $1 "#__    $1 :combine
	"DUP   $1 "DUP    $1 :keep
	"DUP2  $1 "DUP2   $1 :keep
	"DUP   $1 "INC    $1 :keep
	"DUP2  $1 "INC2   $1 :keep
	"DUP   $1 "STH    $1 :keep
	"DUP2  $1 "STH2   $1 :keep
	"DUP   $1 "LDA    $1 :keep
	"DUP2  $1 "LDA2   $1 :keep
	"DUP   $1 "LDR    $1 :keep
	"DUP2  $1 "LDR2   $1 :keep
	"DUP   $1 "LDZ    $1 :keep
	"DUP2  $1 "LDZ2   $1 :keep
	"DUP   $1 "DEI    $1 :keep
	"DUP2  $1 "DEI2   $1 :keep
	"DUP2  $1 "SWP2   $1 :swpk
	"DUP2  $1 "OVR    $1 :ovrk
	"OVR   $1 "DUP2   $1 :ovrk
	"DUP2  $1 "EQU    $1 :equk
	"DUP2  $1 "NEQ    $1 :neqk
	"DUP2  $1 "GTH    $1 :gthk
	"DUP2  $1 "LTH    $1 :lthk
	"DUP2  $1 "ADD    $1 :addk
	"DUP2  $1 "SUB    $1 :subk
	"DUP2  $1 "MUL    $1 :mulk
	"DUP2  $1 "DIV    $1 :divk
	"DUP2  $1 "AND    $1 :andk
	"DUP2  $1 "ORA    $1 :orak
	"DUP2  $1 "EOR    $1 :eork
	"DUP2  $1 "SFT    $1 :sftk
	"SWP   $1 "POP    $1 :nip
	"SWP2  $1 "POP2   $1 :nip2
	"#01   $1 "ADD    $1 :inc
	"#0001 $1 "ADD2   $1 :inc2
	"#02   $1 "ADD    $1 :inc-twice
	"#0002 $1 "ADD2   $1 :inc2-twice
	"POP   $1 "POP    $1 :pop2
	"NIP   $1 "POP    $1 :pop2
	"POPr  $1 "POPr   $1 :pop2r
	"POP   $1 "NIP    $1 :pop2
	"OVR   $1 "OVR    $1 :dup2
	"#0101 $1 "EQU2   $1 :and
	"#0000 $1 "NEQ2   $1 :ora
	"#0000 $1 "GTH2   $1 :ora
	"#ffff $1 "NEQ2 $1 :inc2ora
	"#02   $1 "DIV    $1 :sft01
	"#0002 $1 "DIV2   $1 :sft201
	"#04   $1 "DIV    $1 :sft02
	"#0004 $1 "DIV2   $1 :sft202
	"#08   $1 "DIV    $1 :sft03
	"#0008 $1 "DIV2   $1 :sft203
	"#10   $1 "DIV    $1 :sft04
	"#0010 $1 "DIV2   $1 :sft204
	"#20   $1 "DIV    $1 :sft05
	"#0020 $1 "DIV2   $1 :sft205
	"#40   $1 "DIV    $1 :sft06
	"#0040 $1 "DIV2   $1 :sft206
	"#80   $1 "DIV    $1 :sft07
	"#0080 $1 "DIV2   $1 :sft207
	"#02   $1 "MUL    $1 :sft10
	"#0002 $1 "MUL2   $1 :sft210
	"#04   $1 "MUL    $1 :sft20
	"#0004 $1 "MUL2   $1 :sft220
	"#08   $1 "MUL    $1 :sft30
	"#0008 $1 "MUL2   $1 :sft230
	"#10   $1 "MUL    $1 :sft40
	"#0010 $1 "MUL2   $1 :sft240
	"#20   $1 "MUL    $1 :sft50
	"#0020 $1 "MUL2   $1 :sft250
	"#40   $1 "MUL    $1 :sft60
	"#0040 $1 "MUL2   $1 :sft260
	"#80   $1 "MUL    $1 :sft70
	"#0080 $1 "MUL2   $1 :sft270
	"#00   $1 "#01    $1 :inck
	"#0000 $1 "#0001  $1 :inc2k
	"#10   $1 "SFT    $1 :dupadd
	"#10   $1 "SFT2   $1 :dup2add2
	"JSR2  $1 "JMP2r  $1 :jmp2
	"JSR   $1 "JMP2r  $1 :jmp
	"STH2kr $1 "LDA $1 :ldakrsthr
	"STH2k $1 "LDAr $1 :ldaksth
	"#ff $1 "NEQ $1 :inc
	"STH   $1 "STHr   $1 =redundance
	"STH2  $1 "STH2r  $1 =redundance
	"STHr  $1 "STH    $1 =redundance
	"STH2r $1 "STH2   $1 =redundance
	"DUP   $1 "SWP    $1 =redundance
	"DUP2  $1 "SWP2   $1 =redundance
	"SWP   $1 "SWP    $1 =redundance
	"SWP2  $1 "SWP2   $1 =redundance
	"SWPr  $1 "SWPr   $1 =redundance
	"SWP2r $1 "SWP2r  $1 =redundance
	"DUP   $1 "POP    $1 =redundance
	"DUP2  $1 "POP2   $1 =redundance
	"STH   $1 "STHkr  $1 =redundance
	"STH2  $1 "STH2kr $1 =redundance
	"STHr  $1 "STHk   $1 =redundance
	"STH2r $1 "STH2k  $1 =redundance
	"JMP2r $1 "JMP2r  $1 =redundance
	"JMP2  $1 "JMP2r  $1 =redundance
	"JMP2  $1 "BRK    $1 =redundance
	"JMP   $1 "BRK    $1 =redundance
	"BRK   $1 "BRK    $1 =redundance
	"SWP   $1 "ADD    $1 =redundance
	"SWP2  $1 "ADD2   $1 =redundance
	"SWP   $1 "MUL    $1 =redundance
	"SWP2  $1 "MUL2   $1 =redundance
	"SWP   $1 "EQU    $1 =redundance
	"SWP2  $1 "EQU2   $1 =redundance
	"SWP   $1 "NEQ    $1 =redundance
	"SWP2  $1 "NEQ2   $1 =redundance
	"#ff   $1 "GTH    $1 =redundance
	"#ffff $1 "GTH2   $1 =redundance
	"#00   $1 "LTH    $1 =redundance
	"#0000 $1 "LTH2   $1 =redundance
	"#00   $1 "ADD    $1 =redundance
	"#0000 $1 "ADD2   $1 =redundance
	"#00   $1 "SUB    $1 =redundance
	"#0000 $1 "SUB2   $1 =redundance
	"#01   $1 "MUL    $1 =redundance
	"#0001 $1 "MUL2   $1 =redundance
	"#01   $1 "DIV    $1 =redundance
	"#0001 $1 "DIV2   $1 =redundance
	"#ff   $1 "AND    $1 =redundance
	"#ffff $1 "AND2   $1 =redundance
	"#00   $1 "ORA    $1 =redundance
	"#0000 $1 "ORA2   $1 =redundance
	"#00   $1 "EOR    $1 =redundance
	"#0000 $1 "EOR2   $1 =redundance
	"#00   $1 "SFT    $1 =redundance
	"#00   $1 "SFT2   $1 =redundance
	"AND   $1 "JMP    $1 =unsafe
	"ORA   $1 "JMP    $1 =unsafe
	"EOR   $1 "JMP    $1 =unsafe
	";__   $1 "STH2   $1 =unstashed
	".__   $1 "STH    $1 =unstashed
	"#__   $1 "STH    $1 =unstashed
	"#____ $1 "STH2   $1 =unstashed
	"LDZ $1 "STH $1 =latestack
	"LDZ2 $1 "STH2 $1 =latestack
	"DEIk $1 "STH $1 =latestack
	"DEI2k $1 "STH2 $1 =latestack
	"LDZk $1 "STH $1 =latestack
	"LDZ2k $1 "STH2 $1 =latestack
	"DEI $1 "STH $1 =latestack
	"DEI2 $1 "STH2 $1 =latestack
	"STH2r $1 "ADD $1 =eagerstack
	"STH2r $1 "SUB $1 =eagerstack
	"STH2r $1 "MUL $1 =eagerstack
	"STH2r $1 "DIV $1 =eagerstack
	"STH2r $1 "EQU $1 =eagerstack
	"STH2r $1 "NEQ $1 =eagerstack
	"STH2r $1 "GTH $1 =eagerstack
	"STH2r $1 "LTH $1 =eagerstack
	"STH2 $1 "ADDr $1 =eagerstack
	"STH2 $1 "SUBr $1 =eagerstack
	"STH2 $1 "MULr $1 =eagerstack
	"STH2 $1 "DIVr $1 =eagerstack
	"STH2 $1 "EQUr $1 =eagerstack
	"STH2 $1 "NEQr $1 =eagerstack
	"STH2 $1 "GTHr $1 =eagerstack
	"STH2 $1 "LTHr $1 =eagerstack
	"#__   $1 "#__    $1 =combine
	"DUP   $1 "DUP    $1 =keep
	"DUP2  $1 "DUP2   $1 =keep
	"DUP   $1 "INC    $1 =keep
	"DUP2  $1 "INC2   $1 =keep
	"DUP   $1 "STH    $1 =keep
	"DUP2  $1 "STH2   $1 =keep
	"DUP   $1 "LDA    $1 =keep
	"DUP2  $1 "LDA2   $1 =keep
	"DUP   $1 "LDR    $1 =keep
	"DUP2  $1 "LDR2   $1 =keep
	"DUP   $1 "LDZ    $1 =keep
	"DUP2  $1 "LDZ2   $1 =keep
	"DUP   $1 "DEI    $1 =keep
	"DUP2  $1 "DEI2   $1 =keep
	"DUP2  $1 "SWP2   $1 =swpk
	"DUP2  $1 "OVR    $1 =ovrk
	"OVR   $1 "DUP2   $1 =ovrk
	"DUP2  $1 "EQU    $1 =equk
	"DUP2  $1 "NEQ    $1 =neqk
	"DUP2  $1 "GTH    $1 =gthk
	"DUP2  $1 "LTH    $1 =lthk
	"DUP2  $1 "ADD    $1 =addk
	"DUP2  $1 "SUB    $1 =subk
	"DUP2  $1 "MUL    $1 =mulk
	"DUP2  $1 "DIV    $1 =divk
	"DUP2  $1 "AND    $1 =andk
	"DUP2  $1 "ORA    $1 =orak
	"DUP2  $1 "EOR    $1 =eork
	"DUP2  $1 "SFT    $1 =sftk
	"SWP   $1 "POP    $1 =nip
	"SWP2  $1 "POP2   $1 =nip2
	"#01   $1 "ADD    $1 =inc
	"#0001 $1 "ADD2   $1 =inc2
	"#02   $1 "ADD    $1 =inc-twice
	"#0002 $1 "ADD2   $1 =inc2-twice
	"POP   $1 "POP    $1 =pop2
	"NIP   $1 "POP    $1 =pop2
	"POPr  $1 "POPr   $1 =pop2r
	"POP   $1 "NIP    $1 =pop2
	"OVR   $1 "OVR    $1 =dup2
	"#0101 $1 "EQU2   $1 =and
	"#0000 $1 "NEQ2   $1 =ora
	"#0000 $1 "GTH2   $1 =ora
	"#ffff $1 "NEQ2 $1 =inc2ora
	"#02   $1 "DIV    $1 =sft01
	"#0002 $1 "DIV2   $1 =sft201
	"#04   $1 "DIV    $1 =sft02
	"#0004 $1 "DIV2   $1 =sft202
	"#08   $1 "DIV    $1 =sft03
	"#0008 $1 "DIV2   $1 =sft203
	"#10   $1 "DIV    $1 =sft04
	"#0010 $1 "DIV2   $1 =sft204
	"#20   $1 "DIV    $1 =sft05
	"#0020 $1 "DIV2   $1 =sft205
	"#40   $1 "DIV    $1 =sft06
	"#0040 $1 "DIV2   $1 =sft206
	"#80   $1 "DIV    $1 =sft07
	"#0080 $1 "DIV2   $1 =sft207
	"#02   $1 "MUL    $1 =sft10
	"#0002 $1 "MUL2   $1 =sft210
	"#04   $1 "MUL    $1 =sft20
	"#0004 $1 "MUL2   $1 =sft220
	"#08   $1 "MUL    $1 =sft30
	"#0008 $1 "MUL2   $1 =sft230
	"#10   $1 "MUL    $1 =sft40
	"#0010 $1 "MUL2   $1 =sft240
	"#20   $1 "MUL    $1 =sft50
	"#0020 $1 "MUL2   $1 =sft250
	"#40   $1 "MUL    $1 =sft60
	"#0040 $1 "MUL2   $1 =sft260
	"#80   $1 "MUL    $1 =sft70
	"#0080 $1 "MUL2   $1 =sft270
	"#00   $1 "#01    $1 =inck
	"#0000 $1 "#0001  $1 =inc2k
	"#10   $1 "SFT    $1 =dupadd
	"#10   $1 "SFT2   $1 =dup2add2
	"JSR2  $1 "JMP2r  $1 =jmp2
	"JSR   $1 "JMP2r  $1 =jmp
	"STH2kr $1 "LDA $1 =ldakrsthr
	"STH2k $1 "LDAr $1 =ldaksth
	"#ff $1 "NEQ $1 =inc

&end

@rules3

	"DUP  $1 "#__   $1 "SWP   $1 :00ovr
	"DUP2 $1 "#____ $1 "SWP2  $1 :0000ovr2
	"ROT  $1 "ROT   $1 "ROT   $1 :redundance
	"ROT2 $1 "ROT2  $1 "ROT2  $1 :redundance
	"SFT  $1 "#__   $1 "SFT   $1 :combine
	"SFT2 $1 "#__   $1 "SFT   $1 :combine
	"SFT  $1 "#__   $1 "SFT2  $1 :combine
	"SFT2 $1 "#__   $1 "SFT2  $1 :combine
	"OVR  $1 "OVR   $1 "EQU   $1 :keep
	"OVR2 $1 "OVR2  $1 "EQU2  $1 :keep
	"OVR  $1 "OVR   $1 "NEQ   $1 :keep
	"OVR2 $1 "OVR2  $1 "NEQ2  $1 :keep
	"OVR  $1 "OVR   $1 "GTH   $1 :keep
	"OVR2 $1 "OVR2  $1 "GTH2  $1 :keep
	"OVR  $1 "OVR   $1 "LTH   $1 :keep
	"OVR2 $1 "OVR2  $1 "LTH2  $1 :keep
	"OVR  $1 "OVR   $1 "ADD   $1 :keep
	"OVR2 $1 "OVR2  $1 "ADD2  $1 :keep
	"OVR  $1 "OVR   $1 "SUB   $1 :keep
	"OVR2 $1 "OVR2  $1 "SUB2  $1 :keep
	"OVR  $1 "OVR   $1 "MUL   $1 :keep
	"OVR2 $1 "OVR2  $1 "MUL2  $1 :keep
	"OVR  $1 "OVR   $1 "DIV   $1 :keep
	"OVR2 $1 "OVR2  $1 "DIV2  $1 :keep
	"OVR  $1 "OVR   $1 "AND   $1 :keep
	"OVR2 $1 "OVR2  $1 "AND2  $1 :keep
	"OVR  $1 "OVR   $1 "ORA   $1 :keep
	"OVR2 $1 "OVR2  $1 "ORA2  $1 :keep
	"OVR  $1 "OVR   $1 "EOR   $1 :keep
	"OVR2 $1 "OVR2  $1 "EOR2  $1 :keep
	"OVR  $1 "OVR   $1 "SWP   $1 :keep
	"OVR2 $1 "OVR2  $1 "SWP2  $1 :keep
	"DUP2 $1 "#0000 $1 "EQU2  $1 :orak00equ
	"OVR  $1 "OVR   $1 "OVR   $1 :ovrk
	"OVR2 $1 "OVR2  $1 "OVR2  $1 :ovr2k
	"STH  $1 "SWP   $1 "STHr  $1 :rotswp
	"STH2 $1 "SWP2  $1 "STH2r $1 :rot2swp2
	"DUP  $1 "#__   $1 "SWP   $1 =00ovr
	"DUP2 $1 "#____ $1 "SWP2  $1 =0000ovr2
	"ROT  $1 "ROT   $1 "ROT   $1 =redundance
	"ROT2 $1 "ROT2  $1 "ROT2  $1 =redundance
	"SFT  $1 "#__   $1 "SFT   $1 =combine
	"SFT2 $1 "#__   $1 "SFT   $1 =combine
	"SFT  $1 "#__   $1 "SFT2  $1 =combine
	"SFT2 $1 "#__   $1 "SFT2  $1 =combine
	"OVR  $1 "OVR   $1 "EQU   $1 =keep
	"OVR2 $1 "OVR2  $1 "EQU2  $1 =keep
	"OVR  $1 "OVR   $1 "NEQ   $1 =keep
	"OVR2 $1 "OVR2  $1 "NEQ2  $1 =keep
	"OVR  $1 "OVR   $1 "GTH   $1 =keep
	"OVR2 $1 "OVR2  $1 "GTH2  $1 =keep
	"OVR  $1 "OVR   $1 "LTH   $1 =keep
	"OVR2 $1 "OVR2  $1 "LTH2  $1 =keep
	"OVR  $1 "OVR   $1 "ADD   $1 =keep
	"OVR2 $1 "OVR2  $1 "ADD2  $1 =keep
	"OVR  $1 "OVR   $1 "SUB   $1 =keep
	"OVR2 $1 "OVR2  $1 "SUB2  $1 =keep
	"OVR  $1 "OVR   $1 "MUL   $1 =keep
	"OVR2 $1 "OVR2  $1 "MUL2  $1 =keep
	"OVR  $1 "OVR   $1 "DIV   $1 =keep
	"OVR2 $1 "OVR2  $1 "DIV2  $1 =keep
	"OVR  $1 "OVR   $1 "AND   $1 =keep
	"OVR2 $1 "OVR2  $1 "AND2  $1 =keep
	"OVR  $1 "OVR   $1 "ORA   $1 =keep
	"OVR2 $1 "OVR2  $1 "ORA2  $1 =keep
	"OVR  $1 "OVR   $1 "EOR   $1 =keep
	"OVR2 $1 "OVR2  $1 "EOR2  $1 =keep
	"OVR  $1 "OVR   $1 "SWP   $1 =keep
	"OVR2 $1 "OVR2  $1 "SWP2  $1 =keep
	"DUP2 $1 "#0000 $1 "EQU2  $1 =orak00equ
	"OVR  $1 "OVR   $1 "OVR   $1 =ovrk
	"OVR2 $1 "OVR2  $1 "OVR2  $1 =ovr2k
	"STH  $1 "SWP   $1 "STHr  $1 =rotswp
	"STH2 $1 "SWP2  $1 "STH2r $1 =rot2swp2

&end