1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2024-10-02 20:55:30 +00:00

Update ops $A0-$AE

This commit is contained in:
David Schmenk 2018-03-26 16:51:09 -07:00
parent 15c779d63b
commit 818a2b14ea

View File

@ -1896,7 +1896,7 @@ def compiler(defptr)#0
A_IS_TOSL = FALSE
break
// BRGT,BRLT,INCBRLE,ADDBRLE,DECBRGE,SUBBRGE,BRAND,BROR ; A0 A2 A4 A6 A8 AA AC AE
is $A0
is $A0 // BRGT - FOR/NEXT SPECIFIC TEST & BRANCH
i++
dest = i + *(bytecode+i)
//puts("BRGT "); puti(dest)
@ -1906,31 +1906,44 @@ def compiler(defptr)#0
*codeptr = $D095+(VX<<8) // STA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $50; codeptr++ // BVC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $80; codeptr++ // $80
^codeptr = $10; codeptr++ // BPL rel
^codeptr = $05; codeptr++ // +5
^codeptr = $E8; codeptr++ // INX
^codeptr = $E8; codeptr++ // INX
^codeptr = $4C; codeptr++ // JMP abs
*codeptr = addrxlate=>[dest]
if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr - *jitcodeptr
codeptr=>0 = ($D0B5+$0100)+(VX<<8) // LDA ESTKL+1,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr=>2 = $D0D5+(VX<<8) // CMP ESTKL,X
//^codeptr = $D5; codeptr++ // CMP zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>4 = ($C0B5+$0100)+(VX<<8) // LDA ESTKH+1,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>6 = $C0F5+(VX<<8) // SBC ESTKH
//^codeptr = $F5; codeptr++ // SBC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>8 = $0250 // BVC +2
//^codeptr = $50; codeptr++ // BVC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>10 = $8049 // EOR #$80
//^codeptr = $49; codeptr++ // EOR #imm
//^codeptr = $80; codeptr++ // $80
codeptr=>12 = $0510 // BPL +5
//^codeptr = $10; codeptr++ // BPL rel
//^codeptr = $05; codeptr++ // +5
codeptr=>14 = $E8E8 // INX; INX
//^codeptr = $E8; codeptr++ // INX
//^codeptr = $E8; codeptr++ // INX
codeptr->16 = $4C // JMP abs
//^codeptr = $4C; codeptr++ // JMP abs
codeptr=>17 = addrxlate=>[dest]
//*codeptr = addrxlate=>[dest]
if not (codeptr->18 & $80) // Unresolved address list
//if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr + 17 - *jitcodeptr
//addrxlate=>[dest] = codeptr - *jitcodeptr
fin
codeptr = codeptr + 2
A_IS_TOSL = FALSE
codeptr = codeptr + 19
//codeptr = codeptr + 2
A_IS_TOSL = FALSE
break
is $A2
is $A2 // BRLT - FOR/NEXT SPECIFIC TEST & BRANCH
i++
dest = i + *(bytecode+i)
//puts("BRLT "); puti(dest)
@ -1940,32 +1953,46 @@ def compiler(defptr)#0
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2
elsif A_IS_TOSL & TOSL_DIRTY
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
*codeptr = $D095+(VX<<8) // STA ESTKL,X
codeptr = codeptr + 2
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
fin
^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $50; codeptr++ // BVC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $80; codeptr++ // $80
^codeptr = $10; codeptr++ // BPL rel
^codeptr = $05; codeptr++ // +5
^codeptr = $E8; codeptr++ // INX
^codeptr = $E8; codeptr++ // INX
^codeptr = $4C; codeptr++ // JMP abs
*codeptr = addrxlate=>[dest]
if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr - *jitcodeptr
codeptr=>0 = ($D0D5+$0100)+(VX<<8) // CMP ESTKL+1,X
//^codeptr = $D5; codeptr++ // CMP zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr=>2 = $C0B5+(VX<<8) // LDA ESTKH,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>4 = ($C0F5+$0100)+(VX<<8) // SBC ESTKH+1
//^codeptr = $F5; codeptr++ // SBC zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>6 = $0250 // BVC +2
//^codeptr = $50; codeptr++ // BVC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>8 = $8049 // EOR #$80
//^codeptr = $49; codeptr++ // EOR #imm
//^codeptr = $80; codeptr++ // $80
codeptr=>10 = $0510 // BPL +5
//^codeptr = $10; codeptr++ // BPL rel
//^codeptr = $05; codeptr++ // +5
codeptr=>12 = $E8E8 // INX; INX
//^codeptr = $E8; codeptr++ // INX
//^codeptr = $E8; codeptr++ // INX
codeptr->14 = $4C // JMP abs
//^codeptr = $4C; codeptr++ // JMP abs
codeptr=>15 = addrxlate=>[dest]
//*codeptr = addrxlate=>[dest]
if not (codeptr->16 & $80) // Unresolved address list
//if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr + 15 - *jitcodeptr
//addrxlate=>[dest] = codeptr - *jitcodeptr
fin
codeptr = codeptr + 2
A_IS_TOSL = FALSE
codeptr = codeptr + 17
//codeptr = codeptr + 2
A_IS_TOSL = FALSE
break
is $A4
is $A4 // INCBRLE - FOR/NEXT SPECIFIC INC & TEST & BRANCH
i++
dest = i + *(bytecode+i)
//puts("INCBRLE "); puti(dest)
@ -1977,44 +2004,62 @@ def compiler(defptr)#0
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $18; codeptr++ // CLC
^codeptr = $69; codeptr++ // ADC #imm
^codeptr = $01; codeptr++ // $01
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $90; codeptr++ // BCC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $F6; codeptr++ // INC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr->0 = $18 // CLC
//^codeptr = $18; codeptr++ // CLC
codeptr=>1 = $0169 // ADC #$01
//^codeptr = $69; codeptr++ // ADC #imm
//^codeptr = $01; codeptr++ // $01
codeptr=>3 = $D095+(VX<<8) // STA ESTKL,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>5 = $0290 // BCC +2
//^codeptr = $90; codeptr++ // BCC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>7 = $C0F6+(VX<<8) // INC ESTKH,X
//^codeptr = $F6; codeptr++ // INC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr, VX = resolveX(codeptr + 9, VX)
//
// BRLE
//
codeptr, VX = resolveX(codeptr, VX)
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $50; codeptr++ // BVC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $80; codeptr++ // $80
^codeptr = $30; codeptr++ // BMI rel
^codeptr = $03; codeptr++ // +3
^codeptr = $4C; codeptr++ // JMP abs
*codeptr = addrxlate=>[dest]
if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr - *jitcodeptr
codeptr=>0 = ($D0B5+$0100)+(VX<<8) // LDA ESTKL+1,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr=>2 = $D0D5+(VX<<8) // CMP ESTKL,X
//^codeptr = $D5; codeptr++ // CMP zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>4 = ($C0B5+$0100)+(VX<<8) // LDA ESTKH+1,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>6 = $C0F5+(VX<<8) // SBC ESTKH
//^codeptr = $F5; codeptr++ // SBC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>8 = $0250 // BVC +2
//^codeptr = $50; codeptr++ // BVC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>10 = $8049 // EOR #$80
//^codeptr = $49; codeptr++ // EOR #imm
//^codeptr = $80; codeptr++ // $80
codeptr=>12 = $0330 // BMI +3
//^codeptr = $30; codeptr++ // BMI rel
//^codeptr = $03; codeptr++ // +3
codeptr->14 = $4C // JMP abs
//^codeptr = $4C; codeptr++ // JMP abs
codeptr=>15 = addrxlate=>[dest]
//*codeptr = addrxlate=>[dest]
if not (codeptr->16 & $80) // Unresolved address list
//if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr + 15 - *jitcodeptr
//addrxlate=>[dest] = codeptr - *jitcodeptr
fin
codeptr = codeptr + 2
^codeptr = $E8; codeptr++ // INX
^codeptr = $E8; codeptr++ // INX
//codeptr = codeptr + 2
codeptr=>17 = $E8E8 // INX; INX
//^codeptr = $E8; codeptr++ // INX
//^codeptr = $E8; codeptr++ // INX
codeptr = codeptr + 19
A_IS_TOSL = FALSE
break
is $A6
is $A6 // ADDBRLE - FOR/NEXT SPECIFIC ADD & TEST & BRANCH
i++
dest = i + *(bytecode+i)
//puts("ADDBRLE "); puti(dest)
@ -2026,47 +2071,65 @@ def compiler(defptr)#0
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $18; codeptr++ // CLC
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
//VX++ //^codeptr = $E8; codeptr++ // INX
codeptr->0 = $18 // CLC
//^codeptr = $18; codeptr++ // CLC
codeptr=>1 = ($D075+$0100)+(VX<<8) // ADC ESTKL+1,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr=>3 = ($D095+$0100)+(VX<<8) // STA ESTKL+1,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr=>5 = $C0B5+(VX<<8) // LDA ESTKH,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>7 = ($C075+$0100)+(VX<<8) // ADC ESTKH+1,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>9 = ($C095+$0100)+(VX<<8) // STA ESTKH+1,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr, VX = resolveX(codeptr + 11, VX + 1) //VX++ // INX
//
// BRLE
//
codeptr, VX = resolveX(codeptr, VX + 1)
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $50; codeptr++ // BVC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $80; codeptr++ // $80
^codeptr = $30; codeptr++ // BMI rel
^codeptr = $03; codeptr++ // +3
^codeptr = $4C; codeptr++ // JMP abs
*codeptr = addrxlate=>[dest]
if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr - *jitcodeptr
codeptr=>0 = ($D0B5+$0100)+(VX<<8) // LDA ESTKL+1,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr=>2 = $D0D5+(VX<<8) // CMP ESTKL,X
//^codeptr = $D5; codeptr++ // CMP zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>4 = ($C0B5+$0100)+(VX<<8) // LDA ESTKH+1,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>6 = $C0F5+(VX<<8) // SBC ESTKH
//^codeptr = $F5; codeptr++ // SBC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>8 = $0250 // BVC +2
//^codeptr = $50; codeptr++ // BVC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>10 = $8049 // EOR #$80
//^codeptr = $49; codeptr++ // EOR #imm
//^codeptr = $80; codeptr++ // $80
codeptr=>12 = $0330 // BMI +3
//^codeptr = $30; codeptr++ // BMI rel
//^codeptr = $03; codeptr++ // +3
codeptr->14 = $4C // JMP abs
//^codeptr = $4C; codeptr++ // JMP abs
codeptr=>15 = addrxlate=>[dest]
//*codeptr = addrxlate=>[dest]
if not (codeptr->16 & $80) // Unresolved address list
//if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr + 15 - *jitcodeptr
//addrxlate=>[dest] = codeptr - *jitcodeptr
fin
codeptr = codeptr + 2
^codeptr = $E8; codeptr++ // INX
^codeptr = $E8; codeptr++ // INX
//codeptr = codeptr + 2
codeptr=>17 = $E8E8 // INX; INX
//^codeptr = $E8; codeptr++ // INX
//^codeptr = $E8; codeptr++ // INX
codeptr = codeptr + 19
A_IS_TOSL = FALSE
break
is $A8
is $A8 // DECBRGR - FOR/NEXT SPECIFIC DEC & TEST & BRANCH
i++
dest = i + *(bytecode+i)
//puts("DECBRGE "); puti(dest)
@ -2078,44 +2141,61 @@ def compiler(defptr)#0
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $38; codeptr++ // SEC
^codeptr = $E9; codeptr++ // SBC #imm
^codeptr = $01; codeptr++ // $01
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $B0; codeptr++ // BCS rel
^codeptr = $02; codeptr++ // +2
^codeptr = $D6; codeptr++ // DEC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr->0 = $38 // SEC
//^codeptr = $38; codeptr++ // SEC
codeptr=>1 = $01E9 // SBC #$01
//^codeptr = $E9; codeptr++ // SBC #imm
//^codeptr = $01; codeptr++ // $01
codeptr=>3 = $D095+(VX<<8) // STA ESTKL,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>5 = $02B0 // BCS +2
//^codeptr = $B0; codeptr++ // BCS rel
//^codeptr = $02; codeptr++ // +2
codeptr=>7 = $C0D6+(VX<<8) // DEC ESTKH,X
//^codeptr = $D6; codeptr++ // DEC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr, VX = resolveX(codeptr + 9, VX)
//
// BRGE
//
codeptr, VX = resolveX(codeptr, VX)
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $50; codeptr++ // BVC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $80; codeptr++ // $80
^codeptr = $30; codeptr++ // BMI rel
^codeptr = $03; codeptr++ // +3
^codeptr = $4C; codeptr++ // JMP abs
*codeptr = addrxlate=>[dest]
if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr - *jitcodeptr
codeptr=>0 = ($D0D5+$0100)+(VX<<8) // CMP ESTKL+1,X
//^codeptr = $D5; codeptr++ // CMP zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr=>2 = $C0B5+(VX<<8) // LDA ESTKH,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>4 = ($C0F5+$0100)+(VX<<8) // SBC ESTKH+1,X
//^codeptr = $F5; codeptr++ // SBC zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>6 = $0250 // BVC +2
//^codeptr = $50; codeptr++ // BVC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>8 = $8049 // EOR #$80
//^codeptr = $49; codeptr++ // EOR #imm
//^codeptr = $80; codeptr++ // $80
codeptr=>10 = $0330 // BMI +3
//^codeptr = $30; codeptr++ // BMI rel
//^codeptr = $03; codeptr++ // +3
codeptr->12 = $4C // JMP abs
//^codeptr = $4C; codeptr++ // JMP abs
codeptr=>13 = addrxlate=>[dest]
//*codeptr = addrxlate=>[dest]
if not (codeptr->14 & $80) // Unresolved address list
//if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr + 13 - *jitcodeptr
//addrxlate=>[dest] = codeptr - *jitcodeptr
fin
codeptr = codeptr + 2
^codeptr = $E8; codeptr++ // INX
^codeptr = $E8; codeptr++ // INX
//codeptr = codeptr + 2
codeptr=>15 = $E8E8 // INX; INX
//^codeptr = $E8; codeptr++ // INX
//^codeptr = $E8; codeptr++ // INX
codeptr = codeptr + 17
A_IS_TOSL = FALSE
break
is $AA
is $AA // SUBBRGE - FOR/NEXT SPECIFIC SUB & TEST & BRANCH
i++
dest = i + *(bytecode+i)
//puts("SUBBRGE "); puti(dest)
@ -2127,98 +2207,131 @@ def compiler(defptr)#0
*codeptr = $D095+(VX<<8) // STA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $38; codeptr++ // SEC
^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
//VX++ //^codeptr = $E8; codeptr++ // INX
codeptr=>0 = ($D0B5+$0100)+(VX<<8) // LDA ESTKL+1,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr->2 = $38 // SEC
//^codeptr = $38; codeptr++ // SEC
codeptr=>3 = $D0F5+(VX<<8) // SBC ESTKL,X
//^codeptr = $F5; codeptr++ // SBC zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>5 = ($D095+$0100)+(VX<<8) // STA ESTKL+1,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr=>7 = ($C0B5+$0100)+(VX<<8) // LDA ESTKH+1,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>9 = $C0F5+(VX<<8) // SBC ESTKH,X
//^codeptr = $F5; codeptr++ // SBC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>11 = ($C095+$0100)+(VX<<8) // STA ESTKH+1,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr, VX = resolveX(codeptr + 13, VX + 1) //VX++ // INX
//
// BRGE
//
codeptr, VX = resolveX(codeptr, VX + 1)
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $D5; codeptr++ // CMP zp,X
^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $F5; codeptr++ // SBC zp,X
^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
^codeptr = $50; codeptr++ // BVC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $80; codeptr++ // $80
^codeptr = $30; codeptr++ // BMI rel
^codeptr = $03; codeptr++ // +3
^codeptr = $4C; codeptr++ // JMP abs
*codeptr = addrxlate=>[dest]
if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr - *jitcodeptr
codeptr=>0 = $D0B5+(VX<<8) // LDA ESTKL,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>2 = ($D0D5+$0100)+(VX<<8) // CMP ESTKL+1,X
//^codeptr = $D5; codeptr++ // CMP zp,X
//^codeptr = $D0+1+VX; codeptr++ // ESTKL+1
codeptr=>4 = $C0B5+(VX<<8) // LDA ESTKH,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>6 = ($C0F5+$0100)+(VX<<8) // SBC ESTKH+1,X
//^codeptr = $F5; codeptr++ // SBC zp,X
//^codeptr = $C0+1+VX; codeptr++ // ESTKH+1
codeptr=>8 = $0250 // BVC +2
//^codeptr = $50; codeptr++ // BVC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>10 = $8049 // EOR #$80
//^codeptr = $49; codeptr++ // EOR #imm
//^codeptr = $80; codeptr++ // $80
codeptr=>12 = $0330 // BMI +3
//^codeptr = $30; codeptr++ // BMI rel
//^codeptr = $03; codeptr++ // +3
codeptr->14 = $4C // JMP abs
//^codeptr = $4C; codeptr++ // JMP abs
codeptr=>15 = addrxlate=>[dest]
//*codeptr = addrxlate=>[dest]
if not (codeptr->16 & $80) // Unresolved address list
//if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr + 15 - *jitcodeptr
//addrxlate=>[dest] = codeptr - *jitcodeptr
fin
codeptr = codeptr + 2
^codeptr = $E8; codeptr++ // INX
^codeptr = $E8; codeptr++ // INX
//codeptr = codeptr + 2
codeptr=>17 = $E8E8 // INX; INX
//^codeptr = $E8; codeptr++ // INX
//^codeptr = $E8; codeptr++ // INX
codeptr = codeptr + 19
A_IS_TOSL = FALSE
break
is $AC
is $AC // BRAND - LOGICAL AND SPECIFIC BRANCH
i++
dest = i + *(bytecode+i)
i++
//puts("BRAND "); puti(dest)
codeptr, VX = resolveX(codeptr, VX)
if not A_IS_TOSL
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2
elsif A_IS_TOSL & TOSL_DIRTY
*codeptr = $D095+(VX<<8) // STA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $15; codeptr++ // ORA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $D0; codeptr++ // BNE rel
^codeptr = $03; codeptr++ // +3
^codeptr = $4C; codeptr++ // JMP abs
*codeptr = addrxlate=>[dest]
if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr - *jitcodeptr
codeptr=>0 = $C015+(VX<<8) // ORA ESTKH,X
//^codeptr = $15; codeptr++ // ORA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>2 = $03D0 // BNE +3
//^codeptr = $D0; codeptr++ // BNE rel
//^codeptr = $03; codeptr++ // +3
codeptr->4 = $4C // JMP abs
//^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
codeptr = codeptr + 2
^codeptr = $E8; codeptr++ // INX VX++ ???
//codeptr = codeptr + 2
VX++ // INX
codeptr = codeptr + 7
A_IS_TOSL = FALSE
break
is $AE
is $AE // BROR - LOGICAL OR SPECIFIC BRANCH
i++
dest = i + *(bytecode+i)
i++
//puts("BROR "); puti(dest)
codeptr, VX = resolveX(codeptr, VX)
if not A_IS_TOSL
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2
elsif A_IS_TOSL & TOSL_DIRTY
*codeptr = $D095+(VX<<8) // STA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $15; codeptr++ // ORA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $F0; codeptr++ // BEQ rel
^codeptr = $03; codeptr++ // +3
^codeptr = $4C; codeptr++ // JMP abs
*codeptr = addrxlate=>[dest]
if not (*codeptr & $8000) // Unresolved address list
addrxlate=>[dest] = codeptr - *jitcodeptr
codeptr=>0 = $C015+(VX<<8) // ORA ESTKH,X
//^codeptr = $15; codeptr++ // ORA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>2 = $03F0 // BEQ +3
//^codeptr = $F0; codeptr++ // BEQ rel
//^codeptr = $03; codeptr++ // +3
codeptr->4 = $4C // JMP abs
//^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
codeptr = codeptr + 2
^codeptr = $E8; codeptr++ // INX // VX++ ???
//codeptr = codeptr + 2
VX++ // INX
codeptr = codeptr + 7
A_IS_TOSL = FALSE
break
// ADDLB,ADDLW,ADDAB,ADDAW,IDXLB,IDXLW,IDXAB,IDXAW ; B0 B2 B4 B6 B8 BA BC BE