mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-04-05 03:37:43 +00:00
IP fixup cleanup
This commit is contained in:
parent
2a6dbee706
commit
2175ce0d78
@ -52,48 +52,12 @@ OPIDX = FETCHOP+6
|
||||
OPPAGE = OPIDX+1
|
||||
STRBUF = $0280
|
||||
INTERP = $03D0
|
||||
;*
|
||||
;* INTERPRETER INSTRUCTION POINTER INCREMENT MACRO
|
||||
;*
|
||||
!MACRO FIX_IP {
|
||||
TYA
|
||||
CLC
|
||||
ADC IPL
|
||||
STA IPL
|
||||
BCC +
|
||||
INC IPH
|
||||
+ LDY #$00
|
||||
}
|
||||
!MACRO FIXJMP_IP .TARGET {
|
||||
BMI +
|
||||
JMP .TARGET
|
||||
+ TYA
|
||||
CLC
|
||||
ADC IPL
|
||||
STA IPL
|
||||
BCC +
|
||||
INC IPH
|
||||
+ LDY #$00
|
||||
JMP .TARGET
|
||||
}
|
||||
!MACRO INCJMP_IP .TARGET {
|
||||
INY
|
||||
JMP .TARGET
|
||||
+ TYA
|
||||
CLC
|
||||
ADC IPL
|
||||
STA IPL
|
||||
BCC +
|
||||
INC IPH
|
||||
+ LDY #$00
|
||||
JMP .TARGET
|
||||
}
|
||||
;******************************
|
||||
;* *
|
||||
;* INTERPRETER INITIALIZATION *
|
||||
;* *
|
||||
;******************************
|
||||
* = $2000
|
||||
* = $2000
|
||||
LDX #$FE
|
||||
TXS
|
||||
LDX #$00
|
||||
@ -753,17 +717,22 @@ CB LDA #$00
|
||||
;*
|
||||
;* LOAD ADDRESS & LOAD CONSTANT WORD (SAME THING, WITH OR WITHOUT FIXUP)
|
||||
;*
|
||||
LA DEX
|
||||
INY ;+INC_IP
|
||||
- TYA ; RENORMALIZE IP
|
||||
CLC
|
||||
ADC IPL
|
||||
STA IPL
|
||||
BCC +
|
||||
INC IPH
|
||||
+ LDY #$FF
|
||||
LA INY ;+INC_IP
|
||||
BMI -
|
||||
DEX
|
||||
LDA (IP),Y
|
||||
STA ESTKL,X
|
||||
INY
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
LDA (IP),Y
|
||||
STA ESTKH,X
|
||||
JMP NEXTOP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
CW DEX
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
@ -791,7 +760,7 @@ CS DEX
|
||||
TAY
|
||||
JMP NEXTOP
|
||||
;
|
||||
CSX DEX
|
||||
CSX DEX
|
||||
INY ;+INC_IP
|
||||
TYA ; NORMALIZE IP
|
||||
CLC
|
||||
@ -913,9 +882,16 @@ LWX LDA ESTKL,X
|
||||
;*
|
||||
;* LOAD ADDRESS OF LOCAL FRAME OFFSET
|
||||
;*
|
||||
- TYA ; RENORMALIZE IP
|
||||
CLC
|
||||
ADC IPL
|
||||
STA IPL
|
||||
BCC +
|
||||
INC IPH
|
||||
+ LDY #$FF
|
||||
LLA INY ;+INC_IP
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
BMI -
|
||||
LDA (IP),Y
|
||||
DEX
|
||||
CLC
|
||||
ADC IFPL
|
||||
@ -924,8 +900,6 @@ LLA INY ;+INC_IP
|
||||
ADC IFPH
|
||||
STA ESTKH,X
|
||||
JMP NEXTOP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
;*
|
||||
;* LOAD VALUE FROM LOCAL FRAME OFFSET
|
||||
;*
|
||||
@ -1077,7 +1051,8 @@ SLB INY ;+INC_IP
|
||||
LDA ESTKL,X
|
||||
STA (IFP),Y
|
||||
LDY IPY
|
||||
+FIXJMP_IP DROP
|
||||
BMI FIXDROP
|
||||
JMP DROP
|
||||
SLW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STY IPY
|
||||
@ -1088,7 +1063,16 @@ SLW INY ;+INC_IP
|
||||
LDA ESTKH,X
|
||||
STA (IFP),Y
|
||||
LDY IPY
|
||||
+FIXJMP_IP DROP
|
||||
BMI FIXDROP
|
||||
JMP DROP
|
||||
FIXDROP TYA
|
||||
LDY #$00
|
||||
CLC
|
||||
ADC IPL
|
||||
STA IPL
|
||||
BCC +
|
||||
INC IPH
|
||||
+ JMP DROP
|
||||
;*
|
||||
;* STORE VALUE TO LOCAL FRAME OFFSET WITHOUT POPPING STACK
|
||||
;*
|
||||
@ -1114,18 +1098,23 @@ DLW INY ;+INC_IP
|
||||
;*
|
||||
;* STORE VALUE TO ABSOLUTE ADDRESS
|
||||
;*
|
||||
- TYA ; RENORMALIZE IP
|
||||
CLC
|
||||
ADC IPL
|
||||
STA IPL
|
||||
BCC +
|
||||
INC IPH
|
||||
+ LDY #$FF
|
||||
SAB INY ;+INC_IP
|
||||
BMI -
|
||||
LDA (IP),Y
|
||||
STA ESTKH-2,X
|
||||
INY ;+INC_IP
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
LDA (IP),Y
|
||||
STA ESTKH-1,X
|
||||
LDA ESTKL,X
|
||||
STA (ESTKH-2,X)
|
||||
JMP DROP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
SAW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
@ -1140,7 +1129,8 @@ SAW INY ;+INC_IP
|
||||
LDA ESTKH,X
|
||||
STA (TMP),Y
|
||||
LDY IPY
|
||||
+FIXJMP_IP DROP
|
||||
BMI FIXDROP
|
||||
JMP DROP
|
||||
;*
|
||||
;* STORE VALUE TO ABSOLUTE ADDRESS WITHOUT POPPING STACK
|
||||
;*
|
||||
@ -1240,7 +1230,17 @@ BRTRU INX
|
||||
ORA ESTKL-1,X
|
||||
BNE BRNCH
|
||||
NOBRNCH INY ;+INC_IP
|
||||
+INCJMP_IP NEXTOP
|
||||
INY
|
||||
BMI FIXNEXT
|
||||
JMP NEXTOP
|
||||
FIXNEXT TYA
|
||||
LDY #$00
|
||||
CLC
|
||||
ADC IPL
|
||||
STA IPL
|
||||
BCC +
|
||||
INC IPH
|
||||
+ JMP NEXTOP
|
||||
BRFLS INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
|
@ -72,37 +72,6 @@ INTERP = $03D0
|
||||
TOS = $01 ; TOS
|
||||
NOS = $03 ; TOS-1
|
||||
;*
|
||||
;* INTERPRETER INSTRUCTION POINTER INCREMENT MACRO
|
||||
;*
|
||||
!MACRO FIX_IP {
|
||||
TYA
|
||||
CLC
|
||||
ADC IP
|
||||
STA IP
|
||||
LDY #$00
|
||||
}
|
||||
!MACRO FIXJMP_IP .TARGET {
|
||||
BMI +
|
||||
JMP .TARGET
|
||||
+ TYA
|
||||
CLC
|
||||
ADC IP
|
||||
STA IP
|
||||
LDY #$00
|
||||
JMP .TARGET
|
||||
}
|
||||
!MACRO INCJMP_IP .TARGET {
|
||||
INY
|
||||
BMI +
|
||||
JMP .TARGET
|
||||
+ TYA
|
||||
CLC
|
||||
ADC IP
|
||||
STA IP
|
||||
LDY #$00
|
||||
JMP .TARGET
|
||||
}
|
||||
;*
|
||||
;* ACCUM/MEM SIZE MACROS
|
||||
;*
|
||||
!MACRO ACCMEM8 {
|
||||
@ -797,7 +766,10 @@ CB INY ;+INC_IP
|
||||
LA INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
PHA
|
||||
+INCJMP_IP NEXTOP
|
||||
INY
|
||||
BMI +
|
||||
JMP NEXTOP
|
||||
+ JMP FIXNEXT
|
||||
CW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
PHA
|
||||
@ -931,16 +903,19 @@ LWX TYX
|
||||
;*
|
||||
;* LOAD ADDRESS OF LOCAL FRAME OFFSET
|
||||
;*
|
||||
- TYA
|
||||
CLC
|
||||
ADC IP
|
||||
STA IP
|
||||
LDY #$FF
|
||||
LLA INY ;+INC_IP
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
BMI -
|
||||
LDA (IP),Y
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC IFP
|
||||
PHA
|
||||
JMP NEXTOP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
;*
|
||||
;* LOAD VALUE FROM LOCAL FRAME OFFSET
|
||||
;*
|
||||
@ -1083,9 +1058,14 @@ SW TYX
|
||||
;* STORE VALUE TO LOCAL FRAME OFFSET
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
- TYA
|
||||
CLC
|
||||
ADC IP
|
||||
STA IP
|
||||
LDY #$FF
|
||||
SLB INY ;+INC_IP
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
BMI -
|
||||
LDA (IP),Y
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC IFP
|
||||
@ -1094,8 +1074,6 @@ SLB INY ;+INC_IP
|
||||
TAX
|
||||
SLBSTX STX $FFFF
|
||||
JMP NEXTOP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
} ELSE {
|
||||
SLB INY ;+INC_IP
|
||||
TYX
|
||||
@ -1106,7 +1084,9 @@ SLB INY ;+INC_IP
|
||||
STA (IFP),Y
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
TXY
|
||||
+FIXJMP_IP NEXTOP
|
||||
BMI +
|
||||
JMP NEXTOP
|
||||
+ JMP FIXNEXT
|
||||
}
|
||||
SLW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
@ -1115,7 +1095,9 @@ SLW INY ;+INC_IP
|
||||
PLA
|
||||
STA (IFP),Y
|
||||
TXY
|
||||
+FIXJMP_IP NEXTOP
|
||||
BMI +
|
||||
JMP NEXTOP
|
||||
+ JMP FIXNEXT
|
||||
;*
|
||||
;* STORE VALUE TO LOCAL FRAME OFFSET WITHOUT POPPING STACK
|
||||
;*
|
||||
@ -1160,7 +1142,10 @@ SAB INY ;+INC_IP
|
||||
PLA
|
||||
TAX
|
||||
SABSTX STX $FFFF
|
||||
+INCJMP_IP NEXTOP
|
||||
INY
|
||||
BMI +
|
||||
JMP NEXTOP
|
||||
+ JMP FIXNEXT
|
||||
} ELSE {
|
||||
SAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
@ -1169,14 +1154,20 @@ SAB INY ;+INC_IP
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
STA (TMP)
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
+INCJMP_IP NEXTOP
|
||||
INY
|
||||
BMI +
|
||||
JMP NEXTOP
|
||||
+ JMP FIXNEXT
|
||||
}
|
||||
SAW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMP
|
||||
PLA
|
||||
STA (TMP)
|
||||
+INCJMP_IP NEXTOP
|
||||
INY
|
||||
BMI +
|
||||
JMP NEXTOP
|
||||
+ JMP FIXNEXT
|
||||
;*
|
||||
;* STORE VALUE TO ABSOLUTE ADDRESS WITHOUT POPPING STACK
|
||||
;*
|
||||
@ -1269,7 +1260,15 @@ ISLT PLA
|
||||
BRTRU PLA
|
||||
BNE BRNCH
|
||||
NOBRNCH INY ;+INC_IP
|
||||
+INCJMP_IP NEXTOP
|
||||
INY
|
||||
BMI FIXNEXT
|
||||
JMP NEXTOP
|
||||
FIXNEXT TYA
|
||||
CLC
|
||||
ADC IP
|
||||
STA IP
|
||||
LDY #$00
|
||||
JMP NEXTOP
|
||||
BRFLS PLA
|
||||
BNE NOBRNCH
|
||||
BRNCH TYA ; FLATTEN IP
|
||||
|
Loading…
x
Reference in New Issue
Block a user