mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-02-21 08:29:13 +00:00
Clean-up around call/return
This commit is contained in:
parent
337c6557e2
commit
21f926a763
@ -92,44 +92,6 @@ NOS = $03 ; TOS-1
|
||||
REP #$10 ; 16 BIT X/Y
|
||||
!AL
|
||||
}
|
||||
;*
|
||||
;* HW STACK <-> ZP STACK COPIES
|
||||
;*
|
||||
!MACRO STACKTOZP {
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK
|
||||
SEC
|
||||
SBC HWSP ; STACK DEPTH = (HWSP - SP)/2
|
||||
LSR ; CARRY BETTER BE CLEAR AFTER THIS
|
||||
ADC ESP ; ESP - STACK DEPTH
|
||||
TAX
|
||||
CPX ESP
|
||||
BEQ +
|
||||
TAY
|
||||
- PLA
|
||||
STA ESTKL,Y
|
||||
PLA
|
||||
STA ESTKH,Y
|
||||
INY
|
||||
CPY ESP
|
||||
BNE -
|
||||
+
|
||||
}
|
||||
!MACRO ZPTOSTACK {
|
||||
TSX ; RESTORE BASELINE HWSP
|
||||
STX HWSP
|
||||
CPY TMPL
|
||||
BEQ +
|
||||
TYX
|
||||
- DEX
|
||||
LDA ESTKH,X
|
||||
PHA
|
||||
LDA ESTKL,X
|
||||
PHA
|
||||
CPX TMPL
|
||||
BNE -
|
||||
+
|
||||
}
|
||||
;******************************
|
||||
;* *
|
||||
;* INTERPRETER INITIALIZATION *
|
||||
@ -1632,26 +1594,19 @@ ICAL PLA
|
||||
CALL INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
INY
|
||||
EMUSTK STA TMP ; CALL THROUGH JMPTMP LATER
|
||||
EMUSTK STA TMP
|
||||
TYA ; FLATTEN IP
|
||||
SEC
|
||||
ADC IP
|
||||
STA IP
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
SEC ; SWITCH TO EMULATION MODE
|
||||
XCE
|
||||
!AS
|
||||
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
|
||||
SBC HWSP ; STACK DEPTH = (HWSP - SP)/2
|
||||
CMP #$80
|
||||
ROR
|
||||
ADC ESP ; ESP - STACK DEPTH
|
||||
TAX
|
||||
TAY
|
||||
@ -1664,24 +1619,11 @@ EMUSTK STA TMP ; CALL THROUGH JMPTMP LATER
|
||||
INY
|
||||
CPY ESP
|
||||
BNE -
|
||||
+
|
||||
!IF DEBUG {
|
||||
TXA
|
||||
TSX
|
||||
CPX HWSP
|
||||
BEQ +
|
||||
LDX #$80+'C'
|
||||
STX $7D0+30
|
||||
- LDX $C000
|
||||
BPL -
|
||||
LDX $C010
|
||||
+ TAX
|
||||
}
|
||||
PEI (IP) ; SAVE INSTRUCTION POINTER
|
||||
+ PEI (IP) ; SAVE INSTRUCTION POINTER
|
||||
PHY ; SAVE BASELINE ESP
|
||||
LDA PSR
|
||||
PHA
|
||||
PLP ; CALL IN EMULATION MODE
|
||||
PLP
|
||||
JSR JMPTMP
|
||||
PHP
|
||||
PLA
|
||||
@ -1689,44 +1631,26 @@ EMUSTK STA TMP ; CALL THROUGH JMPTMP LATER
|
||||
SEI
|
||||
CLC ; SWITCH BACK TO NATIVE MODE
|
||||
XCE
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
PLY ; MOVE RETURN VALUES TO HW EVAL STACK
|
||||
STY ESP ; RESTORE BASELINE ESP
|
||||
PLA
|
||||
STA IPL
|
||||
PLA
|
||||
STA IPH
|
||||
!IF DEBUG {
|
||||
TXA
|
||||
EOR #$FF
|
||||
SEC
|
||||
ADC ESP
|
||||
CLC
|
||||
ADC #$80+'0'
|
||||
STA $7D0+32
|
||||
}
|
||||
STA IP
|
||||
STX TMPL
|
||||
TSX ; RESTORE BASELINE HWSP
|
||||
STX HWSP
|
||||
CPY TMPL
|
||||
BEQ +
|
||||
- DEY
|
||||
LDA ESTKH,Y
|
||||
PHA
|
||||
LDA ESTKL,Y
|
||||
PHA
|
||||
LDX ESTKH,Y
|
||||
PHX
|
||||
LDX ESTKL,Y
|
||||
PHX
|
||||
CPY TMPL
|
||||
BNE -
|
||||
+ LDX #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||
!IF DEBUG {
|
||||
LDY LCRWEN+LCBNK2
|
||||
LDY LCRWEN+LCBNK2
|
||||
STX DBG_OP+2
|
||||
LDY LCRDEN+LCBNK2
|
||||
LDX #>DBGTBL
|
||||
}
|
||||
STX OPPAGE
|
||||
LDY #$00
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
JMP FETCHOP
|
||||
;*
|
||||
;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
|
||||
@ -1739,26 +1663,19 @@ ICALX PLA
|
||||
CALLX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
INY
|
||||
EMUSTKX STA TMP ; CALL THROUGH JMPTMP LATER
|
||||
EMUSTKX STA TMP
|
||||
TYA ; FLATTEN IP
|
||||
SEC
|
||||
ADC IP
|
||||
STA IP
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
SEC ; SWITCH TO EMULATION MODE
|
||||
XCE
|
||||
!AS
|
||||
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
|
||||
SBC HWSP ; STACK DEPTH = (HWSP - SP)/2
|
||||
CMP #$80
|
||||
ROR
|
||||
ADC ESP ; ESP - STACK DEPTH
|
||||
TAX
|
||||
TAY
|
||||
@ -1771,25 +1688,12 @@ EMUSTKX STA TMP ; CALL THROUGH JMPTMP LATER
|
||||
INY
|
||||
CPY ESP
|
||||
BNE -
|
||||
+
|
||||
!IF DEBUG {
|
||||
TXA
|
||||
TSX
|
||||
CPX HWSP
|
||||
BEQ +
|
||||
LDX #$80+'X'
|
||||
STX $7D0+30
|
||||
- LDX $C000
|
||||
BPL -
|
||||
LDX $C010
|
||||
+ TAX
|
||||
}
|
||||
PEI (IP) ; SAVE INSTRUCTION POINTER
|
||||
+ PEI (IP) ; SAVE INSTRUCTION POINTER
|
||||
PHY ; SAVE BASELINE ESP
|
||||
STX ALTRDOFF
|
||||
STA ALTRDOFF
|
||||
LDA PSR
|
||||
PHA
|
||||
PLP ; CALL IN EMULATION MODE
|
||||
PLP
|
||||
JSR JMPTMP
|
||||
PHP
|
||||
PLA
|
||||
@ -1798,50 +1702,28 @@ EMUSTKX STA TMP ; CALL THROUGH JMPTMP LATER
|
||||
STX ALTRDON
|
||||
CLC ; SWITCH BACK TO NATIVE MODE
|
||||
XCE
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
PLY ; MOVE RETURN VALUES TO HW EVAL STACK
|
||||
STY ESP ; RESTORE BASELINE ESP
|
||||
PLA
|
||||
STA IPL
|
||||
PLA
|
||||
STA IPH
|
||||
!IF DEBUG {
|
||||
TXA
|
||||
EOR #$FF
|
||||
SEC
|
||||
ADC ESP
|
||||
CLC
|
||||
ADC #$80+'0'
|
||||
STA $7D0+32
|
||||
}
|
||||
STA IP
|
||||
STX TMPL
|
||||
TSX ; RESTORE BASELINE HWSP
|
||||
STX HWSP
|
||||
CPY TMPL
|
||||
BEQ +
|
||||
- DEY
|
||||
LDA ESTKH,Y
|
||||
PHA
|
||||
LDA ESTKL,Y
|
||||
PHA
|
||||
LDX ESTKH,Y
|
||||
PHX
|
||||
LDX ESTKL,Y
|
||||
PHX
|
||||
CPY TMPL
|
||||
BNE -
|
||||
+ LDX #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||
!IF DEBUG {
|
||||
LDY LCRWEN+LCBNK2
|
||||
LDY LCRWEN+LCBNK2
|
||||
STX DBG_OP+2
|
||||
LDY LCRDEN+LCBNK2
|
||||
LDX #>DBGTBL
|
||||
}
|
||||
STX OPPAGE
|
||||
LDY #$00
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
JMP FETCHOP
|
||||
;*
|
||||
;* JUMP INDIRECT THROUGH TMP
|
||||
;*
|
||||
;JMPTMP JMP (TMP)
|
||||
;*
|
||||
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
|
||||
;*
|
||||
ENTER PEI (IFP) ; SAVE ON STACK FOR LEAVE
|
||||
@ -1850,15 +1732,6 @@ ENTER PEI (IFP) ; SAVE ON STACK FOR LEAVE
|
||||
INY
|
||||
LDA (IP),Y
|
||||
AND #$00FF
|
||||
!IF DEBUG {
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
PHA
|
||||
CLC
|
||||
ADC #$80+'0'
|
||||
STA $7D0+31
|
||||
PLA
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
}
|
||||
EOR #$FFFF ; ALLOCATE FRAME
|
||||
SEC
|
||||
ADC PP
|
||||
@ -1896,19 +1769,10 @@ LEAVEX INY ;+INC_IP
|
||||
STA ALTRDOFF
|
||||
+ STA TMPL
|
||||
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
|
||||
SBC HWSP ; STACK DEPTH = (HWSP - SP)/2
|
||||
CMP #$80
|
||||
ROR
|
||||
ADC ESP ; ESP - STACK DEPTH
|
||||
TAX
|
||||
CPX ESP
|
||||
@ -1921,18 +1785,6 @@ LEAVEX INY ;+INC_IP
|
||||
INY
|
||||
CPY ESP
|
||||
BNE -
|
||||
!IF DEBUG {
|
||||
PHX
|
||||
TSX
|
||||
CPX HWSP
|
||||
BEQ +
|
||||
LDX #$80+'L'
|
||||
STX $7D0+30
|
||||
- LDX $C000
|
||||
BPL -
|
||||
LDX $C010
|
||||
+ PLX
|
||||
}
|
||||
++ +ACCMEM16 ; 16 BIT A/M
|
||||
LDY TMPL ; DEALLOCATE POOL + FRAME
|
||||
TYA
|
||||
@ -1941,26 +1793,23 @@ LEAVEX INY ;+INC_IP
|
||||
STA PP
|
||||
PLA ; RESTORE PREVIOUS FRAME
|
||||
STA IFP
|
||||
LDY PSR
|
||||
PHY
|
||||
PLP ; RETURN IN EMULATION MODE
|
||||
RTS
|
||||
RETX STX ALTRDOFF
|
||||
RET +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 {
|
||||
SEC ; SWITCH TO EMULATION MODE
|
||||
XCE
|
||||
!AS
|
||||
LDA PSR
|
||||
PHA
|
||||
CLC
|
||||
ADC #$80+'0'
|
||||
STA $7D0+31
|
||||
PLA
|
||||
}
|
||||
EOR #$FF
|
||||
PLP
|
||||
RTS ; RETURN IN EMULATION MODE
|
||||
!AL
|
||||
RETX STX ALTRDOFF
|
||||
RET SEC ; SWITCH TO EMULATION MODE
|
||||
XCE
|
||||
!AS
|
||||
TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK
|
||||
SEC
|
||||
SBC HWSP ; STACK DEPTH = (HWSP - SP)/2
|
||||
CMP #$80
|
||||
ROR
|
||||
ADC ESP ; ESP - STACK DEPTH
|
||||
TAX
|
||||
CPX ESP
|
||||
@ -1973,26 +1822,13 @@ RET +ACCMEM8 ; 8 BIT A/M
|
||||
INY
|
||||
CPY ESP
|
||||
BNE -
|
||||
!IF DEBUG {
|
||||
PHX
|
||||
TSX
|
||||
CPX HWSP
|
||||
BEQ +
|
||||
LDX #$80+'X'
|
||||
STX $7D0+30
|
||||
- LDX $C000
|
||||
BPL -
|
||||
LDX $C010
|
||||
+ PLX
|
||||
}
|
||||
++ LDA PSR
|
||||
PHA
|
||||
PLP ; RETURN IN EMULATION MODE
|
||||
RTS
|
||||
PLP
|
||||
RTS ; RETURN IN EMULATION MODE
|
||||
;*
|
||||
;* RETURN TO NATIVE CODE
|
||||
;*
|
||||
!AL
|
||||
NATV TYA ; FLATTEN IP
|
||||
SEC
|
||||
ADC IP
|
||||
|
Loading…
x
Reference in New Issue
Block a user