1
0
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:
David Schmenk 2018-04-10 18:11:35 -07:00
parent ce27807cd9
commit 07733cc5a6
3 changed files with 568 additions and 785 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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 {
;*****************