mirror of
https://github.com/dschmenk/PLASMA.git
synced 2024-10-18 22:24:28 +00:00
Only adjust frame pointer for ENTER/LEAVE
This commit is contained in:
parent
3b2c80b718
commit
5ac6a556c8
@ -26,7 +26,7 @@ OPPAGE = OPIDX+1
|
||||
INY
|
||||
BNE *+4
|
||||
INC IPH
|
||||
}
|
||||
}
|
||||
;*
|
||||
;* INTERPRETER HEADER+INITIALIZATION
|
||||
;*
|
||||
@ -945,7 +945,6 @@ ICALADR JSR $FFFF
|
||||
;*
|
||||
ENTER INY
|
||||
LDA (IP),Y
|
||||
PHA ; SAVE ON STACK FOR LEAVE
|
||||
EOR #$FF
|
||||
SEC
|
||||
ADC IFPL
|
||||
@ -970,7 +969,8 @@ ENTER INY
|
||||
;*
|
||||
;* LEAVE FUNCTION
|
||||
;*
|
||||
LEAVE PLA
|
||||
LEAVE +INC_IP
|
||||
LDA (IP),Y
|
||||
CLC
|
||||
ADC IFPL
|
||||
STA IFPL
|
||||
|
@ -197,14 +197,6 @@ DINTRP PLA
|
||||
PLA
|
||||
ADC #$00
|
||||
STA IPH
|
||||
LDA IFPH
|
||||
PHA ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA IFPL
|
||||
PHA ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA PPL ; SET FP TO PP
|
||||
STA IFPL
|
||||
LDA PPH
|
||||
STA IFPH
|
||||
LDY #$00
|
||||
!IF SELFMODIFY {
|
||||
BEQ +
|
||||
@ -224,14 +216,6 @@ IINTRP PLA
|
||||
LDA (TMP),Y
|
||||
STA IPL
|
||||
DEY
|
||||
LDA IFPH
|
||||
PHA ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA IFPL
|
||||
PHA ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA PPL ; SET FP TO PP
|
||||
STA IFPL
|
||||
LDA PPH
|
||||
STA IFPH
|
||||
+ LDA #>OPTBL
|
||||
STA OPPAGE
|
||||
!IF SELFMODIFY {
|
||||
@ -254,14 +238,6 @@ IINTRPX PHP
|
||||
LDA (TMP),Y
|
||||
STA IPL
|
||||
DEY
|
||||
LDA IFPH
|
||||
PHA ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA IFPL
|
||||
PHA ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA PPL ; SET FP TO PP
|
||||
STA IFPL
|
||||
LDA PPH
|
||||
STA IFPH
|
||||
LDA #>OPXTBL
|
||||
STA OPPAGE
|
||||
STA ALTRDON
|
||||
@ -1540,7 +1516,11 @@ JMPTMP JMP (TMP)
|
||||
;*
|
||||
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
|
||||
;*
|
||||
ENTER INY
|
||||
ENTER LDA IFPH
|
||||
PHA ; SAVE ON STACK FOR LEAVE
|
||||
LDA IFPL
|
||||
PHA
|
||||
INY
|
||||
LDA (IP),Y
|
||||
EOR #$FF ; ALLOCATE FRAME
|
||||
SEC
|
||||
@ -1571,7 +1551,6 @@ ENTER INY
|
||||
;*
|
||||
LEAVEX +INC_IP
|
||||
LDA (IP),Y
|
||||
STA ALTRDOFF
|
||||
CLC
|
||||
ADC IFPL
|
||||
STA PPL
|
||||
@ -1582,6 +1561,7 @@ LEAVEX +INC_IP
|
||||
STA IFPL
|
||||
PLA
|
||||
STA IFPH
|
||||
RETX STA ALTRDOFF
|
||||
LDA PSR
|
||||
PHA
|
||||
PLP
|
||||
@ -1598,20 +1578,6 @@ LEAVE +INC_IP
|
||||
STA IFPL
|
||||
PLA
|
||||
STA IFPH
|
||||
RTS
|
||||
;
|
||||
RETX STA ALTRDOFF
|
||||
LDA PSR
|
||||
PHA
|
||||
PLP
|
||||
RET LDA IFPL ; DEALLOCATE POOL
|
||||
STA PPL
|
||||
LDA IFPH
|
||||
STA PPH
|
||||
PLA ; RESTORE PREVIOUS FRAME
|
||||
STA IFPL
|
||||
PLA
|
||||
STA IFPH
|
||||
RTS
|
||||
RET RTS
|
||||
VMEND = *
|
||||
}
|
||||
|
@ -130,6 +130,7 @@ INTERP PLA
|
||||
PLA
|
||||
ADC #$00
|
||||
STA IPH
|
||||
|
||||
LDA IFPH
|
||||
PHA ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA IFPL
|
||||
@ -138,6 +139,7 @@ INTERP PLA
|
||||
STA IFPL
|
||||
LDA PPH
|
||||
STA IFPH
|
||||
|
||||
LDY #$00
|
||||
STY IPX
|
||||
JMP FETCHOP
|
||||
@ -158,6 +160,7 @@ XINTERP PLA
|
||||
LDA (TMP),Y
|
||||
STA IPL
|
||||
DEY
|
||||
|
||||
LDA IFPH
|
||||
PHA ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA IFPL
|
||||
@ -166,6 +169,7 @@ XINTERP PLA
|
||||
STA IFPL
|
||||
LDA PPH
|
||||
STA IFPH
|
||||
|
||||
JMP FETCHOP
|
||||
;*
|
||||
;* INTERNAL DIVIDE ALGORITHM
|
||||
@ -1108,7 +1112,11 @@ ICALADR JSR $FFFF
|
||||
;*
|
||||
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
|
||||
;*
|
||||
ENTER INY
|
||||
ENTER LDA IFPH
|
||||
PHA ; SAVE ON STACK FOR LEAVE
|
||||
LDA IFPL
|
||||
PHA
|
||||
INY
|
||||
LDA (IP),Y
|
||||
PHA ; SAVE ON STACK FOR LEAVE
|
||||
EOR #$FF
|
||||
@ -1138,7 +1146,8 @@ ENTER INY
|
||||
;*
|
||||
;* LEAVE FUNCTION
|
||||
;*
|
||||
LEAVE PLA
|
||||
LEAVE +INC_IP
|
||||
LDA (IP),Y
|
||||
CLC
|
||||
ADC IFPL
|
||||
STA PPL
|
||||
@ -1149,17 +1158,7 @@ LEAVE PLA
|
||||
STA IFPL
|
||||
PLA
|
||||
STA IFPH
|
||||
RTS
|
||||
;
|
||||
RET LDA IFPL ; DEALLOCATE POOL
|
||||
STA PPL
|
||||
LDA IFPH
|
||||
STA PPH
|
||||
PLA ; RESTORE PREVIOUS FRAME
|
||||
STA IFPL
|
||||
PLA
|
||||
STA IFPH
|
||||
RTS
|
||||
RET RTS
|
||||
SOSCMD = *
|
||||
!SOURCE "vmsrc/soscmd.a"
|
||||
SEGEND = *
|
||||
|
@ -265,9 +265,6 @@ DINTRP PHP
|
||||
PLA
|
||||
INC
|
||||
STA IP
|
||||
PEI (IFP) ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA PP ; SET FP TO PP
|
||||
STA IFP
|
||||
STX ESP
|
||||
TSX
|
||||
STX HWSP
|
||||
@ -295,10 +292,7 @@ IINTRP PHP
|
||||
LDA (TOS,S),Y
|
||||
DEY
|
||||
STA IP
|
||||
LDA IFP
|
||||
STA TOS,S ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA PP ; SET FP TO PP
|
||||
STA IFP
|
||||
PLA
|
||||
STX ESP
|
||||
TSX
|
||||
STX HWSP
|
||||
@ -325,10 +319,7 @@ IINTRPX PHP
|
||||
LDA (TOS,S),Y
|
||||
DEY
|
||||
STA IP
|
||||
LDA IFP
|
||||
STA TOS,S ; SAVE ON STACK FOR LEAVE/RET
|
||||
LDA PP ; SET FP TO PP
|
||||
STA IFP
|
||||
PLA
|
||||
STX ESP
|
||||
TSX
|
||||
STX HWSP
|
||||
@ -1542,7 +1533,8 @@ JMPTMP JMP (TMP)
|
||||
;*
|
||||
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
|
||||
;*
|
||||
ENTER INY
|
||||
ENTER PEI (IFP) ; SAVE ON STACK FOR LEAVE
|
||||
INY
|
||||
LDA (IP),Y
|
||||
AND #$00FF
|
||||
!IF DEBUG {
|
||||
@ -1684,10 +1676,6 @@ RET +ACCMEM8 ; 8 BIT A/M
|
||||
}
|
||||
TYX
|
||||
+ACCMEM16
|
||||
LDA IFP ; DEALLOCATE POOL
|
||||
STA PP
|
||||
PLA ; RESTORE PREVIOUS FRAME
|
||||
STA IFP
|
||||
SEC ; SWITCH TO EMULATED MODE
|
||||
XCE
|
||||
!AS
|
||||
|
Loading…
Reference in New Issue
Block a user