1
0
mirror of https://github.com/dschmenk/PLASMA.git synced 2024-08-21 21:29:08 +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
LDA (IP),Y
STA CALLADR+2
LDA IPH
PHA
LDA IPL
PHA
TYA
CLC
ADC IPL
PHA
LDA IPH
ADC #$00
PHA
CALLADR JSR $FFFF
PLA
TAY
STA IPH
PLA
STA IPL
PLA
STA IPH
LDY #$00
JMP NEXTOP
;*
;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
@ -913,19 +913,19 @@ ICAL LDA ESTKL,X
LDA ESTKH,X
STA ICALADR+2
INX
LDA IPH
PHA
LDA IPL
PHA
TYA
CLC
ADC IPL
PHA
LDA IPH
ADC #$00
PHA
ICALADR JSR $FFFF
PLA
TAY
STA IPH
PLA
STA IPL
PLA
STA IPH
LDY #$00
JMP NEXTOP
;*
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
@ -941,9 +941,9 @@ ENTER INY
DEC IFPH
+ INY
LDA (IP),Y
BEQ +
ASL
TAY
BEQ +
- LDA ESTKH,X
DEY
STA (IFP),Y

View File

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

View File

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

View File

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