mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-03-25 21:30:44 +00:00
JIT 65802 WIP
This commit is contained in:
parent
ce27807cd9
commit
07733cc5a6
File diff suppressed because it is too large
Load Diff
@ -315,7 +315,7 @@ def compiler(defptr)#0
|
||||
VX-- // DEX
|
||||
if VY == j
|
||||
^codeptr = $98; codeptr++ // TYA -> LDA #imm
|
||||
|
||||
|
||||
else
|
||||
*codeptr = $A9+(j<<8) // LDA #imm
|
||||
codeptr = codeptr + 2
|
||||
@ -944,7 +944,6 @@ def compiler(defptr)#0
|
||||
is $7A // SAW
|
||||
dest = *(bytecode+i+1)
|
||||
i = i + 2
|
||||
//puts("SAW $"); puth(dest)
|
||||
if not A_IS_TOSL
|
||||
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
|
||||
codeptr = codeptr + 2
|
||||
@ -952,9 +951,10 @@ def compiler(defptr)#0
|
||||
codeptr->0 = $8D // STA abs
|
||||
codeptr=>1 = dest
|
||||
if opcode == $78
|
||||
//puts("SAB $"); puth(*(bytecode+i))
|
||||
//puts("SAB $"); puth(dest)
|
||||
codeptr = codeptr + 3
|
||||
else
|
||||
//puts("SAW $"); puth(dest)
|
||||
codeptr=>3 = $C0B5+(VX<<8) // LDA ESTKH,X
|
||||
codeptr->5 = $8D // STA abs+1
|
||||
codeptr=>6 = dest+1
|
||||
@ -967,7 +967,6 @@ def compiler(defptr)#0
|
||||
is $7E // DAW
|
||||
dest = *(bytecode+i+1)
|
||||
i = i + 2
|
||||
//puts("DAW $"); puth(*(bytecode+i))
|
||||
if not A_IS_TOSL
|
||||
*codeptr = $D0B5+(VX<<8) // LDA ESTKL,X
|
||||
codeptr = codeptr + 2
|
||||
@ -976,7 +975,7 @@ def compiler(defptr)#0
|
||||
codeptr->0 = $8D // STA abs
|
||||
codeptr=>1 = dest
|
||||
if opcode == $7C
|
||||
//puts("DAB $"); puth(*(bytecode+i))
|
||||
//puts("DAB $"); puth(dest)
|
||||
codeptr = codeptr + 3
|
||||
if VY <> 0
|
||||
*codeptr = $00A0 // LDY #$00
|
||||
@ -986,6 +985,7 @@ def compiler(defptr)#0
|
||||
*codeptr = $C094+(VX<<8) // STY ESTKH,X
|
||||
codeptr = codeptr + 2
|
||||
else
|
||||
//puts("DAW $"); puth(dest)
|
||||
codeptr=>3 = $C0B4+(VX<<8) // LDY ESTKH,X
|
||||
codeptr->5 = $8C // STY abs+1
|
||||
codeptr=>6 = dest+1
|
||||
|
@ -84,6 +84,14 @@ NOS = $03 ; TOS-1
|
||||
REP #$20 ; 16 BIT A/M
|
||||
!AL
|
||||
}
|
||||
!MACRO INDEX8 {
|
||||
SEP #$10 ; 8 BIT X/Y
|
||||
!AS
|
||||
}
|
||||
!MACRO INDEX16 {
|
||||
REP #$10 ; 16 BIT X/Y
|
||||
!AL
|
||||
}
|
||||
;******************************
|
||||
;* *
|
||||
;* INTERPRETER INITIALIZATION *
|
||||
@ -460,7 +468,7 @@ PAGE0 = *
|
||||
!PSEUDOPC DROP {
|
||||
PLA ; DROP @ $EF
|
||||
INY ; NEXTOP @ $F0
|
||||
LDX $FFFF,Y ; FETCHOP @ $F3, IP MAPS OVER $FFFF @ $F4
|
||||
LDX $FFFF,Y ; FETCHOP @ $F1, IP MAPS OVER $FFFF @ $F2
|
||||
JMP (OPTBL,X) ; OPIDX AND OPPAGE MAP OVER OPTBL
|
||||
}
|
||||
PAGE3 = *
|
||||
@ -1981,57 +1989,13 @@ RET SEC ; SWITCH TO EMULATION MODE
|
||||
PLP
|
||||
RTS
|
||||
;*
|
||||
;* RETURN TO NATIVE CODE (EMULATION MODE FOR NOW, ACTUALLY)
|
||||
;* RETURN TO NATIVE CODE
|
||||
;*
|
||||
NATV TYA ; FLATTEN IP
|
||||
SEC
|
||||
ADC IP
|
||||
STA IP
|
||||
SEC ; SWITCH TO EMULATION MODE
|
||||
XCE
|
||||
!AS
|
||||
;+ACCMEM8 ; 8 BIT A/M
|
||||
TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK
|
||||
EOR #$FF
|
||||
SEC
|
||||
ADC HWSP ; STACK DEPTH = (HWSP - SP)/2
|
||||
LSR
|
||||
!IF DEBUG {
|
||||
PHA
|
||||
CLC
|
||||
ADC #$80+'0'
|
||||
STA $7D0+31
|
||||
PLA
|
||||
}
|
||||
EOR #$FF
|
||||
SEC
|
||||
ADC ESP ; ESP - STACK DEPTH
|
||||
TAX
|
||||
CPX ESP
|
||||
BEQ ++
|
||||
TAY
|
||||
- PLA
|
||||
STA ESTKL,X
|
||||
PLA
|
||||
STA ESTKH,X
|
||||
INX
|
||||
CPX ESP
|
||||
BNE -
|
||||
!IF DEBUG {
|
||||
TSX
|
||||
CPX HWSP
|
||||
BEQ +
|
||||
LDX #$80+'V'
|
||||
STX $7D0+30
|
||||
- LDX $C000
|
||||
BPL -
|
||||
LDX $C010
|
||||
+
|
||||
}
|
||||
TYX
|
||||
++ LDA PSR
|
||||
PHA
|
||||
PLP
|
||||
+INDEX16 ; SET 16 BIT X/Y
|
||||
JMP (IP)
|
||||
!IF DEBUG {
|
||||
;*****************
|
||||
|
Loading…
x
Reference in New Issue
Block a user