1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2024-07-23 02:29:02 +00:00

Finished updating ops $B0-$BE

This commit is contained in:
David Schmenk 2018-03-27 14:02:09 -07:00
parent 169d347754
commit 1e05ab789e

View File

@ -194,7 +194,7 @@ def compiler(defptr)#0
A_IS_TOSL = FALSE
i = 0
if ^bytecode == $58
//puts("ENTER "); puti(^(bytecode+1)); //putc(',');puti(^(bytecode+2))
//putc('$'); puth(codeptr);//puts(":[0] ENTER "); puti(^(bytecode+1)); putc(',');puti(^(bytecode+2)); putln
//
// Call into VM
//
@ -211,7 +211,7 @@ def compiler(defptr)#0
//
*codeptr = $00A0; codeptr = codeptr + 2 // LDY #$00
while isule(codeptr, codemax)
//putc('$'); puth(codeptr); //putc(':')
//putc('$'); puth(codeptr); putc(':')
//putc('['); puti(i); //puts("] ")
opcode = ^(bytecode+i)
if opcode & 1
@ -260,8 +260,6 @@ def compiler(defptr)#0
// Compile this bad boy...
//
if opcode < $20 // CONSTANT NYBBLE
// CN,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E
// CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E
//puts("CN $"); putb(^(bytecode+i)/2)
if A_IS_TOSL & TOSL_DIRTY
*codeptr = $D095+(VX<<8) // STA ESTKL,X
@ -283,7 +281,6 @@ def compiler(defptr)#0
A_IS_TOSL = TOSL_DIRTY
else
when opcode
// MINUS1,BREQ,BRNE,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E
is $20 // MINUS ONE
//puts("MINUS_ONE")
if A_IS_TOSL & TOSL_DIRTY
@ -511,7 +508,6 @@ def compiler(defptr)#0
codeptr = codeptr + 12 + j
A_IS_TOSL = FALSE
break
// DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E
is $32 // DROP2
//puts("DROP2")
VX++ // INX
@ -633,7 +629,6 @@ def compiler(defptr)#0
codeptr = codeptr + 2
A_IS_TOSL = TOSL_DIRTY
break
// ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
is $40 // ISEQ
//puts("ISEQ")
if not A_IS_TOSL
@ -926,7 +921,6 @@ def compiler(defptr)#0
//codeptr = codeptr + 2
A_IS_TOSL = FALSE
break
// BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E
is $50 // BRNCH
i++
dest = i + *(bytecode+i)
@ -1135,7 +1129,6 @@ def compiler(defptr)#0
codeptr = codeptr + 6
A_IS_TOSL = TOSL_DIRTY
break
// LB,LW,LLB,LLW,LAB,LAW,DLB,DLW ; 60 62 64 66 68 6A 6C 6E
is $60 // LB
//puts("LB")
if not A_IS_TOSL
@ -1370,7 +1363,6 @@ def compiler(defptr)#0
fin
A_IS_TOSL = TOSL_CLEAN
break
// SB,SW,SLB,SLW,SAB,SAW,DAB,DAW ; 70 72 74 76 78 7A 7C 7E
is $70 // SB
//puts("SB")
if not A_IS_TOSL
@ -1570,7 +1562,6 @@ def compiler(defptr)#0
codeptr = codeptr + 10
i++
break
// LNOT,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 80 82 84 86 88 8A 8C 8E
is $80 // NOT
//puts("NOT")
if not A_IS_TOSL
@ -1662,15 +1653,15 @@ def compiler(defptr)#0
//puts("MUL,DIV,MOD,SHL,SHR")
// when opcode
// is $86
// puts("MUL")
// //puts("MUL")
// is $88
// puts("DIV")
// //puts("DIV")
// is $8A
// puts("MOD")
// //puts("MOD")
// is $9A
// puts("SHL")
// //puts("SHL")
// is $9C
// puts("SHR")
// //puts("SHR")
// wend
//
// Call into VM
@ -1737,7 +1728,6 @@ def compiler(defptr)#0
codeptr = codeptr + 7
A_IS_TOSL = TOSL_DIRTY
break
// NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 90 92 94 96 98 9A 9C 9E
is $90 // NEG
//puts("NEG")
if A_IS_TOSL & TOSL_DIRTY
@ -1895,7 +1885,6 @@ def compiler(defptr)#0
codeptr = codeptr + 14
A_IS_TOSL = FALSE
break
// BRGT,BRLT,INCBRLE,ADDBRLE,DECBRGE,SUBBRGE,BRAND,BROR ; A0 A2 A4 A6 A8 AA AC AE
is $A0 // BRGT - FOR/NEXT SPECIFIC TEST & BRANCH
i++
dest = i + *(bytecode+i)
@ -2334,8 +2323,7 @@ def compiler(defptr)#0
codeptr = codeptr + 7
A_IS_TOSL = FALSE
break
// ADDLB,ADDLW,ADDAB,ADDAW,IDXLB,IDXLW,IDXAB,IDXAW ; B0 B2 B4 B6 B8 BA BC BE
is $B0
is $B0 // ADDLB
i++
//puts("ADDLB "); puti(^(bytecode+i))
if not A_IS_TOSL
@ -2343,25 +2331,32 @@ def compiler(defptr)#0
codeptr = codeptr + 2
fin
if ^(bytecode+i) <> 0
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = ^(bytecode+i); codeptr++
*codeptr = $A0+(^(bytecode+i)<<8) // LDY #imm
codeptr = codeptr + 2
fin
^codeptr = $18; codeptr++ // CLC
^codeptr = $71; codeptr++ // ADC (zp),Y
^codeptr = $E0; codeptr++ // IFP
^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 = $E071 // ADC (IFP),Y
//^codeptr = $71; codeptr++ // ADC (zp),Y
//^codeptr = $E0; codeptr++ // IFP
codeptr=>3 = $0290 // BCC +2
//^codeptr = $90; codeptr++ // BCC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>5 = $C0F6+(VX<<8) // INC ESTKH,X
//^codeptr = $F6; codeptr++ // INC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr = codeptr + 7
if ^(bytecode+i) <> 0
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = $00; codeptr++ // $00
*codeptr = $00A0 // LDY #$00
codeptr = codeptr + 2
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
fin
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
A_IS_TOSL = TOSL_DIRTY
break
is $B2
is $B2 // ADDLW
i++
//puts("ADDLW "); puti(^(bytecode+i))
if not A_IS_TOSL
@ -2369,70 +2364,94 @@ def compiler(defptr)#0
codeptr = codeptr + 2
fin
if ^(bytecode+i) <> 0
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = ^(bytecode+i); codeptr++
*codeptr = $A0+(^(bytecode+i)<<8) // LDY #imm
codeptr = codeptr + 2
fin
^codeptr = $18; codeptr++ // CLC
^codeptr = $71; codeptr++ // ADC (zp),Y
^codeptr = $E0; codeptr++ // IFP
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $C8; codeptr++ // INY
^codeptr = $71; codeptr++ // ADC (zp),Y
^codeptr = $E0; codeptr++ // IFP
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr->0 = $18 // CLC
//^codeptr = $18; codeptr++ // CLC
codeptr=>1 = $E071 // ADC (IFP),Y
//^codeptr = $71; codeptr++ // ADC (zp),Y
//^codeptr = $E0; codeptr++ // IFP
codeptr=>3 = $D095+(VX<<8) // STA ESTKL,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>5 = $C0B5+(VX<<8) // LDA ESTKH,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr->7 = $C8 // INY
//^codeptr = $C8; codeptr++ // INY
codeptr=>8 = $E071 // ADC (IFP),Y
//^codeptr = $71; codeptr++ // ADC (zp),Y
//^codeptr = $E0; codeptr++ // IFP
codeptr=>10 = $C095+(VX<<8) // STA ESTKH,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
if ^(bytecode+i) <> 0
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = $00; codeptr++ // $00
codeptr=>12 = $00A0 // LDY #$00
codeptr = codeptr + 14
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
else
^codeptr = $88; codeptr++ // DEY
codeptr->12 = $88 // DEY
codeptr = codeptr + 13
//^codeptr = $88; codeptr++ // DEY
fin
A_IS_TOSL = FALSE
A_IS_TOSL = FALSE
break
is $B4
is $B4 // ADDAB
i++
//puts("ADDAB $"); puth(*(bytecode+i))
if not A_IS_TOSL
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $18; codeptr++ // CLC
^codeptr = $6D; codeptr++ // ADC abs
*codeptr = *(bytecode+i); codeptr = codeptr + 2
^codeptr = $90; codeptr++ // BCC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $F6; codeptr++ // INC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>0 = $6D18 // CLC; ADC abs
//^codeptr = $18; codeptr++ // CLC
//^codeptr = $6D; codeptr++ // ADC abs
codeptr=>2 = *(bytecode+i)
//*codeptr = *(bytecode+i); codeptr = codeptr + 2
codeptr=>4 = $0290 // BCC +2
//^codeptr = $90; codeptr++ // BCC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>6 = $C0F6+(VX<<8) // INC ESTKH,X
//^codeptr = $F6; codeptr++ // INC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr = codeptr + 8
A_IS_TOSL = TOSL_DIRTY
i++
break
is $B6
is $B6 // ADDAW
i++
//puts("ADDAW $"); puth(*(bytecode+i))
if not A_IS_TOSL
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $18; codeptr++ // CLC
^codeptr = $6D; codeptr++ // ADC abs
*codeptr = *(bytecode+i); codeptr = codeptr + 2
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $B5; codeptr++ // LDA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $6D; codeptr++ // ADC abs
*codeptr = *(bytecode+i)+1; codeptr = codeptr + 2
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>0 = $6D18 // CLC; ADC abs
//^codeptr = $18; codeptr++ // CLC
//^codeptr = $6D; codeptr++ // ADC abs
codeptr=>2 = *(bytecode+i)
//*codeptr = *(bytecode+i); codeptr = codeptr + 2
codeptr=>4 = $D095+(VX<<8) // STA ESTKL,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>6 = $C0B5+(VX<<8) // LDA ESTKH,X
//^codeptr = $B5; codeptr++ // LDA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr->8 = $6D // ADC abs
//^codeptr = $6D; codeptr++ // ADC abs
codeptr=>9 = *(bytecode+i)+1
//*codeptr = *(bytecode+i)+1; codeptr = codeptr + 2
codeptr=>11 = $C095+(VX<<8) // STA ESTKH,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr = codeptr + 13
A_IS_TOSL = FALSE
i++
break
is $B8
is $B8 // IDXLB
i++
//puts("IDXLB "); puti(^(bytecode+i))
if A_IS_TOSL & TOSL_DIRTY
@ -2440,34 +2459,46 @@ def compiler(defptr)#0
codeptr = codeptr + 2
fin
if ^(bytecode+i) <> 0
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = ^(bytecode+i); codeptr++
*codeptr = $A0+(^(bytecode+i)<<8) // LDY #imm
codeptr = codeptr + 2
fin
^codeptr = $B1; codeptr++ // LDA (zp),Y
^codeptr = $E0; codeptr++ // IFP
*codeptr = $E0B1 // LDA (IFP),Y
codeptr = codeptr + 2
//^codeptr = $B1; codeptr++ // LDA (zp),Y
//^codeptr = $E0; codeptr++ // IFP
if ^(bytecode+i) <> 0
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = $00; codeptr++ // $00
*codeptr = $00A0 // LDY #$00
codeptr = codeptr + 2
fin
^codeptr = $0A; codeptr++ // ASL
^codeptr = $90; codeptr++ // BCC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $C8; codeptr++ // INY
^codeptr = $18; codeptr++ // CLC
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $98; codeptr++ // TYA
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = $00; codeptr++ // $00
A_IS_TOSL = FALSE
codeptr->0 = $0A // ASL
//^codeptr = $0A; codeptr++ // ASL
codeptr=>1 = $0290 // BCC +2
//^codeptr = $90; codeptr++ // BCC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>3 = $18C8 // INY; CLC
//^codeptr = $C8; codeptr++ // INY
//^codeptr = $18; codeptr++ // CLC
codeptr=>5 = $D075+(VX<<8) // ADC ESTKL,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>7 = $D095+(VX<<8) // STA ESTKL,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr->9 = $98 // TYA
//^codeptr = $98; codeptr++ // TYA
codeptr=>10 = $C075+(VX<<8) // ADC ESTKH,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>12 = $C095+(VX<<8) // STA ESTKH,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>14 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
codeptr = codeptr + 16
A_IS_TOSL = FALSE
break
is $BA
is $BA // IDXLW
i++
//puts("IDXLW "); puti(^(bytecode+i))
if A_IS_TOSL & TOSL_DIRTY
@ -2475,60 +2506,87 @@ def compiler(defptr)#0
codeptr = codeptr + 2
fin
if ^(bytecode+i) <> 0
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = ^(bytecode+i); codeptr++
*codeptr = $A0+(^(bytecode+i)<<8) // LDY #imm
codeptr = codeptr + 2
fin
^codeptr = $B1; codeptr++ // LDA (zp),Y
^codeptr = $E0; codeptr++ // IFP
^codeptr = $0A; codeptr++ // ASL
^codeptr = $85; codeptr++ // STA zp
^codeptr = $E7; codeptr++ // $E7:TMPL
^codeptr = $C8; codeptr++ // INY
^codeptr = $B1; codeptr++ // LDA (zp),Y
^codeptr = $E0; codeptr++ // IFP
^codeptr = $2A; codeptr++ // ROL
^codeptr = $A8; codeptr++ // TAY
^codeptr = $A5; codeptr++ // LDA zp
^codeptr = $E7; codeptr++ // $E7:TMPL
^codeptr = $18; codeptr++ // CLC
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $98; codeptr++ // TYA
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = $00; codeptr++ // $00
codeptr=>0 = $E0B1 // LDA (IFP),Y
//^codeptr = $B1; codeptr++ // LDA (zp),Y
//^codeptr = $E0; codeptr++ // IFP
codeptr->2 = $0A // ASL
//^codeptr = $0A; codeptr++ // ASL
codeptr=>3 = $E785 // STA $E7:TMPL
//^codeptr = $85; codeptr++ // STA zp
//^codeptr = $E7; codeptr++ // $E7:TMPL
codeptr->5 = $C8 // INY
//^codeptr = $C8; codeptr++ // INY
codeptr=>6 = $E0B1 // LDA (IFP),Y
//^codeptr = $B1; codeptr++ // LDA (zp),Y
//^codeptr = $E0; codeptr++ // IFP
codeptr=>8 = $A82A // ROL; TAY
//^codeptr = $2A; codeptr++ // ROL
//^codeptr = $A8; codeptr++ // TAY
codeptr=>10 = $E7A5 // LDA $E7:TMPL
//^codeptr = $A5; codeptr++ // LDA zp
//^codeptr = $E7; codeptr++ // $E7:TMPL
codeptr->12 = $18 // CLC
//^codeptr = $18; codeptr++ // CLC
codeptr=>13 = $D075+(VX<<8) // ADC ESTKL,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>15 = $D095+(VX<<8) // STA ESTKL,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr->17 = $98 // TAY
//^codeptr = $98; codeptr++ // TYA
codeptr=>18 = $C075+(VX<<8) // ADC ESTKLH,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>20 = $C095+(VX<<8) // STA ESTKLH,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>22 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
codeptr = codeptr + 24
A_IS_TOSL = FALSE
break
is $BC
is $BC // IDXAB
i++
//puts("IDXAB $"); puth(*(bytecode+i))
if A_IS_TOSL & TOSL_DIRTY
*codeptr = $D095+(VX<<8) // STA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $AD; codeptr++ // LDA abs
*codeptr = *(bytecode+i); codeptr = codeptr + 2
^codeptr = $0A; codeptr++ // ASL
^codeptr = $90; codeptr++ // BCC rel
^codeptr = $02; codeptr++ // +2
^codeptr = $C8; codeptr++ // INY
^codeptr = $18; codeptr++ // CLC
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $98; codeptr++ // TYA
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = $00; codeptr++ // $00
codeptr->0 = $AD // LDA abs
//^codeptr = $AD; codeptr++ // LDA abs
codeptr=>1 = *(bytecode+i)
//*codeptr = *(bytecode+i); codeptr = codeptr + 2
codeptr->3 = $0A // ASL
//^codeptr = $0A; codeptr++ // ASL
codeptr=>4 = $0290 // BCC +2
//^codeptr = $90; codeptr++ // BCC rel
//^codeptr = $02; codeptr++ // +2
codeptr=>6 = $18C8 // INY; CLC
//^codeptr = $C8; codeptr++ // INY
//^codeptr = $18; codeptr++ // CLC
codeptr=>8 = $D075+(VX<<8) // ADC ESTKL,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>10 = $D095+(VX<<8) // STA ESTKL,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr->12 = $98 // TYA
//^codeptr = $98; codeptr++ // TYA
codeptr=>13 = $C075+(VX<<8) // ADC ESTKH,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>15 = $C095+(VX<<8) // STA ESTKLH,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>17 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
codeptr = codeptr + 19
A_IS_TOSL = FALSE
i++
break
@ -2539,29 +2597,45 @@ def compiler(defptr)#0
*codeptr = $D095+(VX<<8) // STA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $AD; codeptr++ // LDA abs
*codeptr = *(bytecode+i); codeptr = codeptr + 2
^codeptr = $0A; codeptr++ // ASL
^codeptr = $85; codeptr++ // STA zp
^codeptr = $E7; codeptr++ // $E7:TMPL
^codeptr = $AD; codeptr++ // LDA abs
*codeptr = *(bytecode+i)+1; codeptr = codeptr + 2
^codeptr = $2A; codeptr++ // ROL
^codeptr = $A8; codeptr++ // TAY
^codeptr = $A5; codeptr++ // LDA zp
^codeptr = $E7; codeptr++ // $E7:TMPL
^codeptr = $18; codeptr++ // CLC
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $D0+VX; codeptr++ // ESTKL
^codeptr = $98; codeptr++ // TYA
^codeptr = $75; codeptr++ // ADC zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = $00; codeptr++ // $00
codeptr->0 = $AD // LDA abs
//^codeptr = $AD; codeptr++ // LDA abs
codeptr=>1 = *(bytecode+i)
//*codeptr = *(bytecode+i); codeptr = codeptr + 2
codeptr->3 = $0A // ASL
//^codeptr = $0A; codeptr++ // ASL
codeptr=>4 = $E785 // STA $E7:TMPL
//^codeptr = $85; codeptr++ // STA zp
//^codeptr = $E7; codeptr++ // $E7:TMPL
codeptr->6 = $AD // LDA abs
//^codeptr = $AD; codeptr++ // LDA abs
codeptr=>7 = *(bytecode+i)+1
//*codeptr = *(bytecode+i)+1; codeptr = codeptr + 2
codeptr=>9 = $A82A // ROL; TAY
//^codeptr = $2A; codeptr++ // ROL
//^codeptr = $A8; codeptr++ // TAY
codeptr=>11 = $E7A5 // LDA $E7:TMPL
//^codeptr = $A5; codeptr++ // LDA zp
//^codeptr = $E7; codeptr++ // $E7:TMPL
codeptr->13 = $18 // CLC
//^codeptr = $18; codeptr++ // CLC
codeptr=>14 = $D075+(VX<<8) // ADC ESTKL,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr=>16 = $D095+(VX<<8) // STA ESTKL,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr->18 = $98 // TYA
//^codeptr = $98; codeptr++ // TYA
codeptr=>19 = $C075+(VX<<8) // ADC ESTKH,X
//^codeptr = $75; codeptr++ // ADC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>21 = $C095+(VX<<8) // STA ESTKLH,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>23 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
codeptr = codeptr + 25
A_IS_TOSL = FALSE
i++
break
@ -2588,7 +2662,7 @@ def compiler(defptr)#0
//getc
return
fin
//getc
//if opcode == $B6; getc; fin
loop
//
// If we got here. we ran out of code buffer space. Overwrite interpreter