1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2025-02-02 01:30:34 +00:00
This commit is contained in:
David Schmenk 2017-11-27 14:10:45 -08:00
commit 634653bd47
4 changed files with 154 additions and 133 deletions

View File

@ -891,19 +891,19 @@ CALL +INC_IP
+INC_IP +INC_IP
LDA (IP),Y LDA (IP),Y
STA CALLADR+2 STA CALLADR+2
LDA IPH
PHA
LDA IPL
PHA
TYA TYA
CLC
ADC IPL
PHA
LDA IPH
ADC #$00
PHA PHA
CALLADR JSR $FFFF CALLADR JSR $FFFF
PLA PLA
TAY STA IPH
PLA PLA
STA IPL STA IPL
PLA LDY #$00
STA IPH
JMP NEXTOP JMP NEXTOP
;* ;*
;* INDIRECT CALL TO ADDRESS (NATIVE CODE) ;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
@ -913,19 +913,19 @@ ICAL LDA ESTKL,X
LDA ESTKH,X LDA ESTKH,X
STA ICALADR+2 STA ICALADR+2
INX INX
LDA IPH
PHA
LDA IPL
PHA
TYA TYA
CLC
ADC IPL
PHA
LDA IPH
ADC #$00
PHA PHA
ICALADR JSR $FFFF ICALADR JSR $FFFF
PLA PLA
TAY STA IPH
PLA PLA
STA IPL STA IPL
PLA LDY #$00
STA IPH
JMP NEXTOP JMP NEXTOP
;* ;*
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT ;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
@ -941,9 +941,9 @@ ENTER INY
DEC IFPH DEC IFPH
+ INY + INY
LDA (IP),Y LDA (IP),Y
BEQ +
ASL ASL
TAY TAY
BEQ +
- LDA ESTKH,X - LDA ESTKH,X
DEY DEY
STA (IFP),Y STA (IFP),Y

View File

@ -1429,25 +1429,25 @@ CALL +INC_IP
+INC_IP +INC_IP
LDA (IP),Y LDA (IP),Y
STA TMPH STA TMPH
TYA
CLC
ADC IPL
PHA
LDA IPH LDA IPH
PHA ADC #$00
LDA IPL
PHA
TYA
PHA PHA
JSR JMPTMP JSR JMPTMP
PLA PLA
TAY STA IPH
PLA PLA
STA IPL STA IPL
PLA
STA IPH
LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STA OPPAGE STA OPPAGE
!IF SELFMODIFY { !IF SELFMODIFY {
BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2
BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2
} }
LDY #$00
JMP NEXTOP JMP NEXTOP
; ;
CALLX +INC_IP CALLX +INC_IP
@ -1456,29 +1456,29 @@ CALLX +INC_IP
+INC_IP +INC_IP
LDA (IP),Y LDA (IP),Y
STA TMPH STA TMPH
TYA
CLC
ADC IPL
PHA
LDA IPH LDA IPH
PHA ADC #$00
LDA IPL
PHA
TYA
PHA PHA
STA ALTRDOFF STA ALTRDOFF
;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
JSR JMPTMP JSR JMPTMP
;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE ;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
STA ALTRDON STA ALTRDON
PLA PLA
TAY STA IPH
PLA PLA
STA IPL STA IPL
PLA
STA IPH
LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STA OPPAGE STA OPPAGE
!IF SELFMODIFY { !IF SELFMODIFY {
BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2
BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2
} }
LDY #$00
JMP NEXTOP JMP NEXTOP
;* ;*
;* INDIRECT CALL TO ADDRESS (NATIVE CODE) ;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
@ -1488,25 +1488,25 @@ ICAL LDA ESTKL,X
LDA ESTKH,X LDA ESTKH,X
STA TMPH STA TMPH
INX INX
TYA
CLC
ADC IPL
PHA
LDA IPH LDA IPH
PHA ADC #$00
LDA IPL
PHA
TYA
PHA PHA
JSR JMPTMP JSR JMPTMP
PLA PLA
TAY STA IPH
PLA PLA
STA IPL STA IPL
PLA
STA IPH
LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STA OPPAGE STA OPPAGE
!IF SELFMODIFY { !IF SELFMODIFY {
BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2
BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2
} }
LDY #$00
JMP NEXTOP JMP NEXTOP
; ;
ICALX LDA ESTKL,X ICALX LDA ESTKL,X
@ -1514,11 +1514,12 @@ ICALX LDA ESTKL,X
LDA ESTKH,X LDA ESTKH,X
STA TMPH STA TMPH
INX INX
TYA
CLC
ADC IPL
PHA
LDA IPH LDA IPH
PHA ADC #$00
LDA IPL
PHA
TYA
PHA PHA
STA ALTRDOFF STA ALTRDOFF
;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
@ -1526,17 +1527,16 @@ ICALX LDA ESTKL,X
;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE ;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
STA ALTRDON STA ALTRDON
PLA PLA
TAY STA IPH
PLA PLA
STA IPL STA IPL
PLA
STA IPH
LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STA OPPAGE STA OPPAGE
!IF SELFMODIFY { !IF SELFMODIFY {
BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2
BIT LCRWEN+LCBNK2 BIT LCRWEN+LCBNK2
} }
LDY #$00
JMP NEXTOP JMP NEXTOP
;* ;*
;* JUMP INDIRECT TRHOUGH TMP ;* JUMP INDIRECT TRHOUGH TMP
@ -1559,9 +1559,9 @@ ENTER INY
STA IFPH STA IFPH
INY INY
LDA (IP),Y LDA (IP),Y
BEQ +
ASL ASL
TAY TAY
BEQ +
- LDA ESTKH,X - LDA ESTKH,X
DEY DEY
STA (IFP),Y STA (IFP),Y

View File

@ -1048,23 +1048,23 @@ CALL +INC_IP
+INC_IP +INC_IP
LDA (IP),Y LDA (IP),Y
STA CALLADR+2 STA CALLADR+2
LDA IPX TYA
CLC
ADC IPL
PHA PHA
LDA IPH LDA IPH
ADC #$00
PHA PHA
LDA IPL LDA IPX
PHA
TYA
PHA PHA
CALLADR JSR $FFFF CALLADR JSR $FFFF
PLA PLA
TAY STA IPX
PLA
STA IPL
PLA PLA
STA IPH STA IPH
PLA PLA
STA IPX STA IPL
LDY #$00
JMP NEXTOP JMP NEXTOP
;* ;*
;* INDIRECT CALL TO ADDRESS (NATIVE CODE) ;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
@ -1074,23 +1074,23 @@ ICAL LDA ESTKL,X
LDA ESTKH,X LDA ESTKH,X
STA ICALADR+2 STA ICALADR+2
INX INX
LDA IPX TYA
CLC
ADC IPL
PHA PHA
LDA IPH LDA IPH
ADC #$00
PHA PHA
LDA IPL LDA IPX
PHA
TYA
PHA PHA
ICALADR JSR $FFFF ICALADR JSR $FFFF
PLA PLA
TAY STA IPX
PLA
STA IPL
PLA PLA
STA IPH STA IPH
PLA PLA
STA IPX STA IPL
LDY #$00
JMP NEXTOP JMP NEXTOP
;* ;*
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT ;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
@ -1109,9 +1109,9 @@ ENTER INY
STA IFPH STA IFPH
INY INY
LDA (IP),Y LDA (IP),Y
BEQ +
ASL ASL
TAY TAY
BEQ +
- LDA ESTKH,X - LDA ESTKH,X
DEY DEY
STA (IFP),Y STA (IFP),Y

View File

@ -1113,118 +1113,133 @@ CALL +INC_IP
LDA (IP16),Y LDA (IP16),Y
STA TMP STA TMP
+INC_IP +INC_IP
EMUSTK STY IPY EMUSTK SEC ; SWITCH TO EMULATED MODE
SEC ; SWITCH TO EMULATED MODE
XCE XCE
!AS !AS
TSX ; COPY HW EVAL STACK TO ZP EVAL STACK STY IPY
TXA TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK
EOR #$FF
SEC SEC
SBC HWSP ADC HWSP ; STACK DEPTH = (HWSP - SP)/2
LSR LSR
LDX ESP EOR #$FF
SEC
ADC ESP ; ESP - STACK DEPTH
TAY TAY
BEQ + TAX
- DEX BRA +
PLA - PLA
STA ESTKL,X STA ESTKL,X
PLA PLA
STA ESTKH,X STA ESTKH,X
DEY INX
+ CPX ESP
BNE - BNE -
+ LDA IP16H
PHA
LDA IP16L
PHA
LDA IPY LDA IPY
CLC
ADC IP16L
PHA
LDA IP16H
ADC #$00
PHA PHA
PHX PHX
TYX
JSR JMPTMP JSR JMPTMP
PLY ; COPY RETURN VALUES TO HW EVAL STACK PLY ; MOVE RETURN VALUES TO HW EVAL STACK
STY ESP STY ESP
PLY
PLA
STA IP16L
PLA PLA
STA IP16H STA IP16H
CPX ESP PLA
BEQ + STA IP16L
- LDA ESTKH,X STX TMPL
TYX
BRA +
- DEX
LDA ESTKH,X
PHA PHA
LDA ESTKL,X LDA ESTKL,X
PHA PHA
INX + CPX TMPL
CPX ESP
BNE - BNE -
+ CLC ; SWITCH BACK TO NATIVE MODE CLC ; SWITCH BACK TO NATIVE MODE
XCE XCE
REP #$20 ; 16 BIT A/M REP #$20 ; 16 BIT A/M
SEP #$10 ; 8 BIT X,Y SEP #$10 ; 8 BIT X,Y
!AL !AL
TSX
STX HWSP
LDX #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDX #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STX OP16PAGE STX OP16PAGE
LDY #$00
JMP NEXTOP16 JMP NEXTOP16
; ;
CALLX +INC_IP CALLX +INC_IP
LDA (IP16),Y LDA (IP16),Y
STA TMP STA TMP
+INC_IP +INC_IP
EMUSTKX STY IPY EMUSTKX SEC ; SWITCH TO EMULATED MODE
SEC ; SWITCH TO EMULATED MODE
XCE XCE
!AS !AS
TSX ; COPY HW EVAL STACK TO ZP EVAL STACK STY IPY
TXA TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK
EOR #$FF
SEC SEC
SBC HWSP ADC HWSP ; STACK DEPTH = (HWSP - SP)/2
LSR LSR
LDX ESP EOR #$FF
SEC
ADC ESP ; ESP - STACK DEPTH
TAY TAY
BEQ + TAX
- DEX BRA +
PLA - PLA
STA ESTKL,X STA ESTKL,X
PLA PLA
STA ESTKH,X STA ESTKH,X
DEY INX
+ CPX ESP
BNE - BNE -
+ LDA IP16H
PHA
LDA IP16L
PHA
LDA IPY LDA IPY
CLC
ADC IP16L
PHA
LDA IP16H
ADC #$00
PHA PHA
PHX PHX
TYX
STX ALTRDOFF STX ALTRDOFF
;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
JSR JMPTMP JSR JMPTMP
;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE ;SEI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
STX ALTRDON STX ALTRDON
PLY ; COPY RETURN VALUES TO HW EVAL STACK PLY ; MOVE RETURN VALUES TO HW EVAL STACK
STY ESP STY ESP
PLY
PLA
STA IP16L
PLA PLA
STA IP16H STA IP16H
CPX ESP PLA
BEQ + STA IP16L
- LDA ESTKH,X STX TMPL
TYX
BRA +
- DEX
LDA ESTKH,X
PHA PHA
LDA ESTKL,X LDA ESTKL,X
PHA PHA
INX + CPX TMPL
CPX ESP
BNE - BNE -
+ CLC ; SWITCH BACK TO NATIVE MODE CLC ; SWITCH BACK TO NATIVE MODE
XCE XCE
REP #$20 ; 16 BIT A/M REP #$20 ; 16 BIT A/M
SEP #$10 ; 8 BIT X,Y SEP #$10 ; 8 BIT X,Y
!AL !AL
TSX
STX HWSP
LDX #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDX #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STX OP16PAGE STX OP16PAGE
LDY #$00
JMP NEXTOP16 JMP NEXTOP16
;* ;*
;* INDIRECT CALL TO ADDRESS (NATIVE CODE) ;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
;* ;*
@ -1259,10 +1274,10 @@ ENTER INY
!AS !AS
INY INY
LDA (IP16),Y LDA (IP16),Y
BEQ +
ASL ASL
TAY TAY
BEQ + LDX ESP ; MOVE PARAMETERS TO CALL FRAME
LDX ESP
- LDA ESTKH,X - LDA ESTKH,X
DEY DEY
STA (IFP),Y STA (IFP),Y
@ -1283,22 +1298,25 @@ LEAVEX STX ALTRDOFF
;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
LEAVE SEP #$20 ; 8 BIT A/M LEAVE SEP #$20 ; 8 BIT A/M
!AS !AS
TSX ; COPY HW EVAL STACK TO ZP EVAL STACK TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK
TXA EOR #$FF
LDX ESP
SEC SEC
SBC HWSP ADC HWSP ; STACK DEPTH = (HWSP - SP)/2
LSR LSR
BEQ + EOR #$FF
SEC
ADC ESP ; ESP - STACK DEPTH
TAY TAY
- DEX TAX
PLA BRA +
- PLA
STA ESTKL,X STA ESTKL,X
PLA PLA
STA ESTKH,X STA ESTKH,X
DEY INX
+ CPX ESP
BNE - BNE -
+ PLA ; DEALLOCATE POOL + FRAME PLA ; DEALLOCATE POOL + FRAME
REP #$20 ; 16 BIT A/M REP #$20 ; 16 BIT A/M
!AL !AL
AND #$00FF AND #$00FF
@ -1315,22 +1333,25 @@ RETX STX ALTRDOFF
;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE ;CLI UNTIL I KNOW WHAT TO DO WITH THE UNENHANCED IIE
RET SEP #$20 ; 8 BIT A/M RET SEP #$20 ; 8 BIT A/M
!AS !AS
TSX ; COPY HW EVAL STACK TO ZP EVAL STACK TSC ; MOVE HW EVAL STACK TO ZP EVAL STACK
TXA EOR #$FF
LDX ESP
SEC SEC
SBC HWSP ADC HWSP ; STACK DEPTH = (HWSP - SP)/2
LSR LSR
BEQ + EOR #$FF
SEC
ADC ESP ; ESP - STACK DEPTH
TAY TAY
- DEX TAX
PLA BRA +
- PLA
STA ESTKL,X STA ESTKL,X
PLA PLA
STA ESTKH,X STA ESTKH,X
DEY INX
+ CPX ESP
BNE - BNE -
+ REP #$20 ; 16 BIT A/M REP #$20 ; 16 BIT A/M
!AL !AL
LDA IFP ; DEALLOCATE POOL LDA IFP ; DEALLOCATE POOL
STA PP STA PP