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

Updates ops $80-$8E

This commit is contained in:
David Schmenk 2018-03-25 23:03:29 -07:00
parent 26a03d8e0b
commit 9922127a41

View File

@ -1563,54 +1563,67 @@ def compiler(defptr)#0
//^codeptr = $B4; codeptr++ // LDY zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr->5 = $8C // STY abs
codeptr=>7 = *(bytecode+i)+1
codeptr=>6 = *(bytecode+i)+1
//^codeptr = $8C; codeptr++ // STY abs
//*codeptr = *(bytecode+i)+1; codeptr = codeptr + 2
codeptr=>9 = $00A0 // LDY #$00
codeptr=>8 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
codeptr = codeptr + 11
codeptr = codeptr + 10
i++
break
// LNOT,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 80 82 84 86 88 8A 8C 8E
is $80
is $80 // NOT
//puts("NOT")
if not A_IS_TOSL
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
codeptr = codeptr + 2
fin
^codeptr = $15; codeptr++ // ORA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
^codeptr = $F0; codeptr++ // BEQ rel
^codeptr = $02; codeptr++ // +2
^codeptr = $A9; codeptr++ // LDA #imm
^codeptr = $FF; codeptr++ // $FF
^codeptr = $49; codeptr++ // EOR #imm
^codeptr = $FF; codeptr++ // $FF
^codeptr = $95; codeptr++ // STA zp,X
^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>0 = $C015+(VX<<8) // ORA ESTKH,X
//^codeptr = $15; codeptr++ // ORA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
codeptr=>2 = $02F0 // BEQ +2
//^codeptr = $F0; codeptr++ // BEQ rel
//^codeptr = $02; codeptr++ // +2
codeptr=>4 = $FFA9 // LDA #$FF
//^codeptr = $A9; codeptr++ // LDA #imm
//^codeptr = $FF; codeptr++ // $FF
codeptr=>6 = $FF49 // EOR #$FF
//^codeptr = $49; codeptr++ // EOR #imm
//^codeptr = $FF; codeptr++ // $FF
codeptr=>8 = $C095+(VX<<8) // STA ESTKH,X
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr = codeptr + 10
A_IS_TOSL = TOSL_DIRTY
break
is $82
is $82 // ADD
//puts("ADD")
if not A_IS_TOSL
*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 = $C085+(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
VX++ // INX
codeptr = codeptr + 11
A_IS_TOSL = FALSE
break
is $84
@ -1619,20 +1632,28 @@ 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 = ($D085+$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 = ($C085+$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
VX++ // INX
codeptr = codeptr + 13
A_IS_TOSL = FALSE
break
is $86 // MUL
@ -1661,46 +1682,61 @@ def compiler(defptr)#0
codeptr = codeptr + 2
fin
codeptr, VX = resolveX(codeptr, VX)
^codeptr = $20; codeptr++ // JSR INTERP
*codeptr = $3D0; codeptr = codeptr + 2
^codeptr = opcode; codeptr++ // OPCODE
^codeptr = $C0; codeptr++ // NATV CODE
^codeptr = $A0; codeptr++ // LDY #imm
^codeptr = $00; codeptr++ // $00
codeptr->0 = $20 // JSR INTERP
codeptr=>1 = $3D0 // INTERP
//^codeptr = $20; codeptr++ // JSR INTERP
//*codeptr = $3D0; codeptr = codeptr + 2
codeptr=>3 = $C000+opcode // OPCODE; NATV CODE
//^codeptr = opcode; codeptr++ // OPCODE
//^codeptr = $C0; codeptr++ // NATV CODE
codeptr=>5 = $00A0 // LDY #$00
//^codeptr = $A0; codeptr++ // LDY #imm
//^codeptr = $00; codeptr++ // $00
codeptr = codeptr + 7
A_IS_TOSL = FALSE
break
is $8C
break
is $8C // INCR
//puts("INCR")
if not A_IS_TOSL
*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 = $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 = $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 = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
codeptr = codeptr + 7
A_IS_TOSL = TOSL_DIRTY
break
is $8E
is $8E // DECR
//puts("DECR")
if not A_IS_TOSL
*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 = $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 = $02B0 // BCS +2
//^codeptr = $B0; codeptr++ // BCS rel
//^codeptr = $02; codeptr++ // +2
codeptr=>5 = $C0D6+(VX<<8) // DEC ESTKH,X
//^codeptr = $D6; codeptr++ // DEC zp,X
//^codeptr = $C0+VX; codeptr++ // ESTKH
//^codeptr = $95; codeptr++ // STA zp,X
//^codeptr = $D0+VX; codeptr++ // ESTKL
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