1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2025-03-26 12:30:21 +00:00

Update ops $40-$4E

This commit is contained in:
David Schmenk 2018-03-24 21:37:52 -07:00
parent 2c9373c962
commit 23779176d2

View File

@ -520,7 +520,7 @@ def compiler(defptr)#0
VX++ // INX VX++ // INX
A_IS_TOSL = FALSE A_IS_TOSL = FALSE
break break
is $34 is $34 // DUP
//puts("DUP") //puts("DUP")
if A_IS_TOSL & TOSL_DIRTY if A_IS_TOSL & TOSL_DIRTY
*codeptr = $D095+(VX<<8) // STA ESTKL,X *codeptr = $D095+(VX<<8) // STA ESTKL,X
@ -554,7 +554,7 @@ def compiler(defptr)#0
// Should never happen // Should never happen
// //
//break //break
is $38 is $38 // ADDI
i++ i++
//puts("ADDI $"); putb(^(bytecode+i)) //puts("ADDI $"); putb(^(bytecode+i))
if not A_IS_TOSL if not A_IS_TOSL
@ -577,7 +577,7 @@ def compiler(defptr)#0
codeptr = codeptr + 7 codeptr = codeptr + 7
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
is $3A is $3A // SUBI
i++ i++
//puts("SUBI $"); putb(^(bytecode+i)) //puts("SUBI $"); putb(^(bytecode+i))
if not A_IS_TOSL if not A_IS_TOSL
@ -600,7 +600,7 @@ def compiler(defptr)#0
codeptr = codeptr + 7 codeptr = codeptr + 7
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
is $3C is $3C // ANDI
i++ i++
//puts("ANDI $"); putb(^(bytecode+i)) //puts("ANDI $"); putb(^(bytecode+i))
if not A_IS_TOSL if not A_IS_TOSL
@ -618,7 +618,7 @@ def compiler(defptr)#0
codeptr = codeptr + 4 codeptr = codeptr + 4
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
is $3E is $3E // ORI
i++ i++
//puts("ORI $"); putb(^(bytecode+i)) //puts("ORI $"); putb(^(bytecode+i))
if not A_IS_TOSL if not A_IS_TOSL
@ -634,87 +634,115 @@ def compiler(defptr)#0
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
// ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E // ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
is $40 is $40 // ISEQ
//puts("ISEQ") //puts("ISEQ")
if not A_IS_TOSL if not A_IS_TOSL
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X *codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2 codeptr = codeptr + 2
fin fin
^codeptr = $D5; codeptr++ // CMP zp,X codeptr=>0 = ($D0D5+$0100)+(VX<<8) // CMP ESTKL+1,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1 //^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $D0; codeptr++ // BNE rel //^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $07; codeptr++ // +7 codeptr=>2 = $07D0 // BNE +7
^codeptr = $B5; codeptr++ // LDA zp,X //^codeptr = $D0; codeptr++ // BNE rel
^codeptr = $C0+VX; codeptr++ // ESTKH //^codeptr = $07; codeptr++ // +7
^codeptr = $D5; codeptr++ // CMP zp,X codeptr=>4 = $C0B5+(VX<<8) // LDA ESTKH,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D0; codeptr++ // BNE rel //^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $01; codeptr++ // +1 codeptr=>6 = ($C0D5+$0100)+(VX<<8) // CMP ESTKH+1
^codeptr = $88; codeptr++ // DEY //^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $98; codeptr++ // TYA //^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $94; codeptr++ // STY zp,X codeptr=>8 = $01D0 // BNE +1
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $D0; codeptr++ // BNE rel
^codeptr = $A0; codeptr++ // LDY #imm //^codeptr = $01; codeptr++ // +1
^codeptr = $00; codeptr++ // $00 codeptr=>10 = $9888 // DEY TYA
//^codeptr = $88; codeptr++ // DEY
//^codeptr = $98; codeptr++ // TYA
codeptr=>12 = ($C094+$0100)+(VX<<8) // STY ESTKH+1,X
//^codeptr = $94; codeptr++ // STY zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>14 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
VX++ // INX VX++ // INX
//^codeptr = $95; codeptr++ // STA zp,X //^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL //^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr = codeptr + 16
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
is $42 is $42 // ISNE
//puts("ISNE") //puts("ISNE")
if not A_IS_TOSL if not A_IS_TOSL
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X *codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2 codeptr = codeptr + 2
fin fin
^codeptr = $D5; codeptr++ // CMP zp,X codeptr=>0 = ($D0D5+$0100)+(VX<<8) // CMP ESTKL+1,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1 //^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $D0; codeptr++ // BNE rel //^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $06; codeptr++ // +6 codeptr=>2 = $06D0 // BNE +6
^codeptr = $B5; codeptr++ // LDA zp,X //^codeptr = $D0; codeptr++ // BNE rel
^codeptr = $C0+VX; codeptr++ // ESTKH //^codeptr = $06; codeptr++ // +6
^codeptr = $D5; codeptr++ // CMP zp,X codeptr=>4 = $C0B5+(VX<<8) // LDA ESTKH,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $F0; codeptr++ // BEQ rel //^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $01; codeptr++ // +1 codeptr=>6 = ($C0D5+$0100)+(VX<<8) // CMP ESTKH+1
^codeptr = $88; codeptr++ // DEY //^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $98; codeptr++ // TYA //^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $94; codeptr++ // STY zp,X codeptr=>8 = $01F0 // BEQ +1
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $F0; codeptr++ // BEQ rel
^codeptr = $A0; codeptr++ // LDY #imm //^codeptr = $01; codeptr++ // +1
^codeptr = $00; codeptr++ // $00 codeptr=>10 = $9888 // DEY TYA
//^codeptr = $88; codeptr++ // DEY
//^codeptr = $98; codeptr++ // TYA
codeptr=>12 = ($C094+$0100)+(VX<<8) // STY ESTKH+1,X
//^codeptr = $94; codeptr++ // STY zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>14 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
VX++ // INX VX++ // INX
//^codeptr = $95; codeptr++ // STA zp,X //^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL //^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr = codeptr + 16
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
is $44 is $44 // ISGT
//puts("ISGT") //puts("ISGT")
if not A_IS_TOSL if not A_IS_TOSL
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X *codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2 codeptr = codeptr + 2
fin fin
^codeptr = $D5; codeptr++ // CMP zp,X codeptr=>0 = ($D0D5+$0100)+(VX<<8) // CMP ESTKL+1,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1 //^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $B5; codeptr++ // LDA zp,X //^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $C0+VX; codeptr++ // ESTKH codeptr=>2 = $C0B5+(VX<<8) // LDA ESTKH,X
^codeptr = $F5; codeptr++ // SBC zp,X //^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $50; codeptr++ // BVC rel codeptr=>4 = ($C0F5+$0100)+(VX<<8) // SBC ESTKH+1
^codeptr = $02; codeptr++ // +2 //^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $49; codeptr++ // EOR #imm //^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $80; codeptr++ // $80 codeptr=>6 = $0250 // BVC +2
^codeptr = $10; codeptr++ // BPL rel //^codeptr = $50; codeptr++ // BVC rel
^codeptr = $01; codeptr++ // +1 //^codeptr = $02; codeptr++ // +2
^codeptr = $88; codeptr++ // DEY codeptr=>8 = $8049 // EOR #$80
^codeptr = $98; codeptr++ // TYA //^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $94; codeptr++ // STY zp,X //^codeptr = $80; codeptr++ // $80
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 codeptr=>10 = $0110 // BPL +1
^codeptr = $A0; codeptr++ // LDY #imm //^codeptr = $10; codeptr++ // BPL rel
^codeptr = $00; codeptr++ // $00 //^codeptr = $01; codeptr++ // +1
codeptr=>12 = $9888 // DEY TYA
//^codeptr = $88; codeptr++ // DEY
//^codeptr = $98; codeptr++ // TYA
codeptr=>14 = ($C094+$0100)+(VX<<8) // STY ESTKH+1,X
//^codeptr = $94; codeptr++ // STY zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>16 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
VX++ // INX VX++ // INX
//^codeptr = $95; codeptr++ // STA zp,X //^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL //^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr = codeptr + 18
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
is $46 is $46
@ -723,29 +751,40 @@ def compiler(defptr)#0
*codeptr = $D095+(VX<<8) // STA ESTKL,X *codeptr = $D095+(VX<<8) // STA ESTKL,X
codeptr = codeptr + 2 codeptr = codeptr + 2
fin fin
^codeptr = $B5; codeptr++ // LDA zp,X codeptr=>0 = ($D0B5+$0100)+(VX<<8) // LDA ESTKL+1,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1 //^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D5; codeptr++ // CMP zp,X //^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $D0+VX; codeptr++ // ESTKL codeptr=>2 = $D0D5+(VX<<8) // CMP ESTKL,X
^codeptr = $B5; codeptr++ // LDA zp,X //^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $F5; codeptr++ // SBC zp,X codeptr=>4 = ($C0B5+$0100)+(VX<<8) // LDA ESTKH+1,X
^codeptr = $C0+VX; codeptr++ // ESTKH //^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $50; codeptr++ // BVC rel //^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $02; codeptr++ // +2 codeptr=>6 = $C0F5+(VX<<8) // SBC ESTKH
^codeptr = $49; codeptr++ // EOR #imm //^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $80; codeptr++ // $80 //^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $10; codeptr++ // BPL rel codeptr=>8 = $0250 // BVC +2
^codeptr = $01; codeptr++ // +1 //^codeptr = $50; codeptr++ // BVC rel
^codeptr = $88; codeptr++ // DEY //^codeptr = $02; codeptr++ // +2
^codeptr = $98; codeptr++ // TYA codeptr=>10 = $8049 // EOR #$80
^codeptr = $94; codeptr++ // STY zp,X //^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $80; codeptr++ // $80
^codeptr = $A0; codeptr++ // LDY #imm codeptr=>12 = $0110 // BPL +1
^codeptr = $00; codeptr++ // $00 //^codeptr = $10; codeptr++ // BPL rel
//^codeptr = $01; codeptr++ // +1
codeptr=>14 = $9888 // DEY TYA
//^codeptr = $88; codeptr++ // DEY
//^codeptr = $98; codeptr++ // TYA
codeptr=>16 = ($C094+$0100)+(VX<<8) // STY ESTKH+1,X
//^codeptr = $94; codeptr++ // STY zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>18 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
VX++ // INX VX++ // INX
//^codeptr = $95; codeptr++ // STA zp,X //^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL //^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr = codeptr + 20
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
is $48 is $48
@ -754,61 +793,82 @@ def compiler(defptr)#0
*codeptr = $D095+(VX<<8) // STA ESTKL,X *codeptr = $D095+(VX<<8) // STA ESTKL,X
codeptr = codeptr + 2 codeptr = codeptr + 2
fin fin
^codeptr = $B5; codeptr++ // LDA zp,X codeptr=>0 = ($D0B5+$0100)+(VX<<8) // LDA ESTKL+1,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1 //^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D5; codeptr++ // CMP zp,X //^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $D0+VX; codeptr++ // ESTKL codeptr=>2 = $D0D5+(VX<<8) // CMP ESTKL,X
^codeptr = $B5; codeptr++ // LDA zp,X //^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $F5; codeptr++ // SBC zp,X codeptr=>4 = ($C0B5+$0100)+(VX<<8) // LDA ESTKH+1,X
^codeptr = $C0+VX; codeptr++ // ESTKH //^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $50; codeptr++ // BVC rel //^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $02; codeptr++ // +2 codeptr=>6 = $C0F5+(VX<<8) // SBC ESTKH
^codeptr = $49; codeptr++ // EOR #imm //^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $80; codeptr++ // $80 //^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $30; codeptr++ // BMI rel codeptr=>8 = $0250 // BVC +2
^codeptr = $01; codeptr++ // +1 //^codeptr = $50; codeptr++ // BVC rel
^codeptr = $88; codeptr++ // DEY //^codeptr = $02; codeptr++ // +2
^codeptr = $98; codeptr++ // TYA codeptr=>10 = $8049 // EOR #$80
^codeptr = $94; codeptr++ // STY zp,X //^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $80; codeptr++ // $80
^codeptr = $A0; codeptr++ // LDY #imm codeptr=>12 = $0130 // BMI +1
^codeptr = $00; codeptr++ // $00 //^codeptr = $30; codeptr++ // BMI rel
//^codeptr = $01; codeptr++ // +1
codeptr=>14 = $9888 // DEY TYA
//^codeptr = $88; codeptr++ // DEY
//^codeptr = $98; codeptr++ // TYA
codeptr=>16 = ($C094+$0100)+(VX<<8) // STY ESTKH+1,X
//^codeptr = $94; codeptr++ // STY zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>18 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
VX++ // INX VX++ // INX
//^codeptr = $95; codeptr++ // STA zp,X //^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL //^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr = codeptr + 20
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
is $4A is $4A // ISLE
//puts("ISLE") //puts("ISLE")
if not A_IS_TOSL if not A_IS_TOSL
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X *codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2 codeptr = codeptr + 2
fin fin
^codeptr = $D5; codeptr++ // CMP zp,X codeptr=>0 = ($D0D5+$0100)+(VX<<8) // CMP ESTKL+1,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1 //^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $B5; codeptr++ // LDA zp,X //^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $C0+VX; codeptr++ // ESTKH codeptr=>2 = $C0B5+(VX<<8) // LDA ESTKH,X
^codeptr = $F5; codeptr++ // SBC zp,X //^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 //^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $50; codeptr++ // BVC rel codeptr=>4 = ($C0F5+$0100)+(VX<<8) // SBC ESTKH+1
^codeptr = $02; codeptr++ // +2 //^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $49; codeptr++ // EOR #imm //^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $80; codeptr++ // $80 codeptr=>6 = $0250 // BVC +2
^codeptr = $30; codeptr++ // BMI rel //^codeptr = $50; codeptr++ // BVC rel
^codeptr = $01; codeptr++ // +1 //^codeptr = $02; codeptr++ // +2
^codeptr = $88; codeptr++ // DEY codeptr=>8 = $8049 // EOR #$80
^codeptr = $98; codeptr++ // TYA //^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $94; codeptr++ // STY zp,X //^codeptr = $80; codeptr++ // $80
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1 codeptr=>10 = $0130 // BMI +1
^codeptr = $A0; codeptr++ // LDY #imm //^codeptr = $30; codeptr++ // BMI rel
^codeptr = $00; codeptr++ // $00 //^codeptr = $01; codeptr++ // +1
codeptr=>12 = $9888 // DEY TYA
//^codeptr = $88; codeptr++ // DEY
//^codeptr = $98; codeptr++ // TYA
codeptr=>14 = ($C094+$0100)+(VX<<8) // STY ESTKH+1,X
//^codeptr = $94; codeptr++ // STY zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>16 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
VX++ // INX VX++ // INX
//^codeptr = $95; codeptr++ // STA zp,X //^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL //^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr = codeptr + 18
A_IS_TOSL = TOSL_DIRTY A_IS_TOSL = TOSL_DIRTY
break break
is $4C is $4C // BRFLS
i++ i++
dest = i + *(bytecode+i) dest = i + *(bytecode+i)
i++ i++
@ -819,19 +879,26 @@ def compiler(defptr)#0
*codeptr = ($D0B5-$0100)+(VX<<8) // LDA ESTKL-1,X *codeptr = ($D0B5-$0100)+(VX<<8) // LDA ESTKL-1,X
codeptr = codeptr + 2 codeptr = codeptr + 2
fin fin
^codeptr = $15; codeptr++ // ORA zp,X codeptr=>0 = ($C015-$0100)+(VX<<8) // ORA ESTKH-1,X
^codeptr = $C0-1+VX; codeptr++ // ESTKH-1 //^codeptr = $15; codeptr++ // ORA zp,X
^codeptr = $D0; codeptr++ // BNE rel //^codeptr = $C0-1+VX; codeptr++ // ESTKH-1
^codeptr = $03; codeptr++ // +3 codeptr=>2 = $03D0 // BNE +3
^codeptr = $4C; codeptr++ // JMP abs //^codeptr = $D0; codeptr++ // BNE rel
*codeptr = addrxlate=>[dest] //^codeptr = $03; codeptr++ // +3
if not (*codeptr & $8000) // Unresolved address list codeptr->4 = $4C // JMP abs
addrxlate=>[dest] = codeptr - *jitcodeptr //^codeptr = $4C; codeptr++ // JMP abs
codeptr=>5 = addrxlate=>[dest]
//*codeptr = addrxlate=>[dest]
if not (codeptr->6 & $80) // Unresolved address list
//if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr + 5 - *jitcodeptr
//addrxlate=>[dest] = codeptr - *jitcodeptr
fin fin
codeptr = codeptr + 2 codeptr = codeptr + 7
//codeptr = codeptr + 2
A_IS_TOSL = FALSE A_IS_TOSL = FALSE
break break
is $4E is $4E // BRTRU
i++ i++
dest = i + *(bytecode+i) dest = i + *(bytecode+i)
i++ i++
@ -842,16 +909,23 @@ def compiler(defptr)#0
*codeptr = ($D0B5-$0100)+(VX<<8) // LDA ESTKL-1,X *codeptr = ($D0B5-$0100)+(VX<<8) // LDA ESTKL-1,X
codeptr = codeptr + 2 codeptr = codeptr + 2
fin fin
^codeptr = $15; codeptr++ // ORA zp,X codeptr=>0 = ($C015-$0100)+(VX<<8) // ORA ESTKH-1,X
^codeptr = $C0-1+VX; codeptr++ // ESTKH-1 //^codeptr = $15; codeptr++ // ORA zp,X
^codeptr = $F0; codeptr++ // BEQ rel //^codeptr = $C0-1+VX; codeptr++ // ESTKH-1
^codeptr = $03; codeptr++ // +3 codeptr=>2 = $03F0 // BEQ +3
^codeptr = $4C; codeptr++ // JMP abs //^codeptr = $F0; codeptr++ // BEQ rel
*codeptr = addrxlate=>[dest] //^codeptr = $03; codeptr++ // +3
if not (*codeptr & $8000) // Unresolved address list codeptr->4 = $4C // JMP abs
addrxlate=>[dest] = codeptr - *jitcodeptr //^codeptr = $4C; codeptr++ // JMP abs
codeptr=>5 = addrxlate=>[dest]
//*codeptr = addrxlate=>[dest]
if not (codeptr->6 & $80) // Unresolved address list
//if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr + 5 - *jitcodeptr
//addrxlate=>[dest] = codeptr - *jitcodeptr
fin fin
codeptr = codeptr + 2 codeptr = codeptr + 7
//codeptr = codeptr + 2
A_IS_TOSL = FALSE A_IS_TOSL = FALSE
break break
// BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E // BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E