mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-04-07 01:38:18 +00:00
fewer and better checks for IP FIXUP
This commit is contained in:
parent
fbcebe9df3
commit
f24bb421ec
@ -55,14 +55,29 @@ INTERP = $03D0
|
||||
;*
|
||||
;* INTERPRETER INSTRUCTION POINTER INCREMENT MACRO
|
||||
;*
|
||||
!MACRO INC_IP {
|
||||
INY
|
||||
BPL +
|
||||
INC IPH
|
||||
;!MACRO INC_IP {
|
||||
; INY
|
||||
; BPL +
|
||||
; INC IPH
|
||||
; TYA
|
||||
; AND #$7F
|
||||
; TAY
|
||||
;+
|
||||
; }
|
||||
!MACRO FIX_IP {
|
||||
INC IPH
|
||||
TYA
|
||||
AND #$7F
|
||||
TAY
|
||||
+
|
||||
}
|
||||
!MACRO FIXJMP_IP .TARGET {
|
||||
BMI +
|
||||
JMP .TARGET
|
||||
+ INC IPH
|
||||
TYA
|
||||
AND #$7F
|
||||
TAY
|
||||
JMP .TARGET
|
||||
}
|
||||
;******************************
|
||||
;* *
|
||||
@ -730,19 +745,29 @@ CFFB LDA #$FF
|
||||
CB LDA #$00
|
||||
DEX
|
||||
STA ESTKH,X
|
||||
+INC_IP
|
||||
INY
|
||||
LDA (IP),Y
|
||||
STA ESTKL,X
|
||||
JMP NEXTOP
|
||||
;*
|
||||
;* LOAD ADDRESS & LOAD CONSTANT WORD (SAME THING, WITH OR WITHOUT FIXUP)
|
||||
;*
|
||||
LA = *
|
||||
CW DEX
|
||||
INY ;+INC_IP
|
||||
LA DEX
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA ESTKL,X
|
||||
+INC_IP
|
||||
INY
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
STA ESTKH,X
|
||||
JMP NEXTOP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
CW DEX
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA ESTKL,X
|
||||
INY
|
||||
LDA (IP),Y
|
||||
STA ESTKH,X
|
||||
JMP NEXTOP
|
||||
@ -750,7 +775,7 @@ CW DEX
|
||||
;* CONSTANT STRING
|
||||
;*
|
||||
CS DEX
|
||||
INY ;+INC_IP
|
||||
INY ;+INC_IP
|
||||
TYA ; NORMALIZE IP AND SAVE STRING ADDR ON ESTK
|
||||
CLC
|
||||
ADC IPL
|
||||
@ -766,7 +791,7 @@ CS DEX
|
||||
JMP NEXTOP
|
||||
;
|
||||
CSX DEX
|
||||
INY ;+INC_IP
|
||||
INY ;+INC_IP
|
||||
TYA ; NORMALIZE IP
|
||||
CLC
|
||||
ADC IPL
|
||||
@ -875,7 +900,7 @@ LW LDA ESTKL,X
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
;
|
||||
!IF SELFMODIFY {
|
||||
!IF SELFMODIFY {
|
||||
LBX LDA ESTKL,X
|
||||
STA LBXLDA+1
|
||||
LDA ESTKH,X
|
||||
@ -920,8 +945,9 @@ LWX LDA ESTKL,X
|
||||
;*
|
||||
;* LOAD ADDRESS OF LOCAL FRAME OFFSET
|
||||
;*
|
||||
LLA +INC_IP
|
||||
LDA (IP),Y
|
||||
LLA INY ;+INC_IP
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
DEX
|
||||
CLC
|
||||
ADC IFPL
|
||||
@ -930,10 +956,12 @@ LLA +INC_IP
|
||||
ADC IFPH
|
||||
STA ESTKH,X
|
||||
JMP NEXTOP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
;*
|
||||
;* LOAD VALUE FROM LOCAL FRAME OFFSET
|
||||
;*
|
||||
LLB +INC_IP
|
||||
LLB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STY IPY
|
||||
TAY
|
||||
@ -944,7 +972,7 @@ LLB +INC_IP
|
||||
STA ESTKH,X
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
LLW +INC_IP
|
||||
LLW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STY IPY
|
||||
TAY
|
||||
@ -957,7 +985,7 @@ LLW +INC_IP
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
;
|
||||
LLBX +INC_IP
|
||||
LLBX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STY IPY
|
||||
TAY
|
||||
@ -970,7 +998,7 @@ LLBX +INC_IP
|
||||
STA ALTRDON
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
LLWX +INC_IP
|
||||
LLWX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STY IPY
|
||||
TAY
|
||||
@ -987,11 +1015,11 @@ LLWX +INC_IP
|
||||
;*
|
||||
;* LOAD VALUE FROM ABSOLUTE ADDRESS
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
LAB INY ;+INC_IP
|
||||
!IF SELFMODIFY {
|
||||
LAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA LABLDA+1
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA LABLDA+2
|
||||
LABLDA LDA $FFFF
|
||||
@ -1001,10 +1029,10 @@ LABLDA LDA $FFFF
|
||||
STA ESTKH,X
|
||||
JMP NEXTOP
|
||||
} ELSE {
|
||||
LAB INY ;+INC_IP
|
||||
LAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
STY IPY
|
||||
@ -1016,10 +1044,10 @@ LAB INY ;+INC_IP
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
}
|
||||
LAW INY ;+INC_IP
|
||||
LAW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
STY IPY
|
||||
@ -1033,11 +1061,11 @@ LAW INY ;+INC_IP
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
;
|
||||
!IF SELFMODIFY {
|
||||
LABX INY ;+INC_IP
|
||||
!IF SELFMODIFY {
|
||||
LABX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA LABXLDA+1
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA LABXLDA+2
|
||||
STA ALTRDOFF
|
||||
@ -1049,10 +1077,10 @@ LABXLDA LDA $FFFF
|
||||
STA ALTRDON
|
||||
JMP NEXTOP
|
||||
} ELSE {
|
||||
LABX INY ;+INC_IP
|
||||
LABX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
STY IPY
|
||||
@ -1066,10 +1094,10 @@ LABX INY ;+INC_IP
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
}
|
||||
LAWX INY ;+INC_IP
|
||||
LAWX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
STY IPY
|
||||
@ -1087,7 +1115,7 @@ LAWX INY ;+INC_IP
|
||||
;*
|
||||
;* STORE VALUE TO ADDRESS
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
!IF SELFMODIFY {
|
||||
SB LDA ESTKL,X
|
||||
STA SBSTA+1
|
||||
LDA ESTKH,X
|
||||
@ -1126,17 +1154,15 @@ SW LDA ESTKL,X
|
||||
;*
|
||||
;* STORE VALUE TO LOCAL FRAME OFFSET
|
||||
;*
|
||||
SLB +INC_IP
|
||||
SLB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STY IPY
|
||||
TAY
|
||||
LDA ESTKL,X
|
||||
STA (IFP),Y
|
||||
LDY IPY
|
||||
; INX
|
||||
; JMP NEXTOP
|
||||
JMP DROP
|
||||
SLW +INC_IP
|
||||
+FIXJMP_IP DROP
|
||||
SLW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STY IPY
|
||||
TAY
|
||||
@ -1146,11 +1172,11 @@ SLW +INC_IP
|
||||
LDA ESTKH,X
|
||||
STA (IFP),Y
|
||||
LDY IPY
|
||||
JMP DROP
|
||||
+FIXJMP_IP DROP
|
||||
;*
|
||||
;* STORE VALUE TO LOCAL FRAME OFFSET WITHOUT POPPING STACK
|
||||
;*
|
||||
DLB +INC_IP
|
||||
DLB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STY IPY
|
||||
TAY
|
||||
@ -1158,7 +1184,7 @@ DLB +INC_IP
|
||||
STA (IFP),Y
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
DLW +INC_IP
|
||||
DLW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STY IPY
|
||||
TAY
|
||||
@ -1172,23 +1198,24 @@ DLW +INC_IP
|
||||
;*
|
||||
;* STORE VALUE TO ABSOLUTE ADDRESS
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
SAB INY ;+INC_IP
|
||||
!IF SELFMODIFY {
|
||||
SAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA SABSTA+1
|
||||
+INC_IP
|
||||
LDA (IP),Y
|
||||
INY ;+INC_IP
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
STA SABSTA+2
|
||||
LDA ESTKL,X
|
||||
SABSTA STA $FFFF
|
||||
; INX
|
||||
; JMP NEXTOP
|
||||
JMP DROP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
} ELSE {
|
||||
SAB INY ;+INC_IP
|
||||
SAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
LDA ESTKL,X
|
||||
@ -1196,12 +1223,12 @@ SAB INY ;+INC_IP
|
||||
LDY #$00
|
||||
STA (TMP),Y
|
||||
LDY IPY
|
||||
JMP DROP
|
||||
+FIXJMP_IP DROP
|
||||
}
|
||||
SAW INY ;+INC_IP
|
||||
SAW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
STY IPY
|
||||
@ -1212,25 +1239,25 @@ SAW INY ;+INC_IP
|
||||
LDA ESTKH,X
|
||||
STA (TMP),Y
|
||||
LDY IPY
|
||||
JMP DROP
|
||||
+FIXJMP_IP DROP
|
||||
;*
|
||||
;* STORE VALUE TO ABSOLUTE ADDRESS WITHOUT POPPING STACK
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
DAB INY ;+INC_IP
|
||||
!IF SELFMODIFY {
|
||||
DAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA DABSTA+1
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA DABSTA+2
|
||||
LDA ESTKL,X
|
||||
DABSTA STA $FFFF
|
||||
JMP NEXTOP
|
||||
} ELSE {
|
||||
DAB INY ;+INC_IP
|
||||
DAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
STY IPY
|
||||
@ -1240,10 +1267,10 @@ DAB INY ;+INC_IP
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
}
|
||||
DAW INY ;+INC_IP
|
||||
DAW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
STY IPY
|
||||
@ -1322,9 +1349,9 @@ BRTRU INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
BNE BRNCH
|
||||
NOBRNCH INY ;+INC_IP
|
||||
+INC_IP
|
||||
JMP NEXTOP
|
||||
NOBRNCH INY ;+INC_IP
|
||||
INY ;+INC_IP
|
||||
+FIXJMP_IP NEXTOP
|
||||
BRFLS INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
@ -1390,10 +1417,10 @@ IBRNCH LDA IPL
|
||||
;*
|
||||
;* CALL INTO ABSOLUTE ADDRESS (NATIVE CODE)
|
||||
;*
|
||||
CALL INY ;+INC_IP
|
||||
CALL INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
INY ;+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
TYA
|
||||
@ -1417,10 +1444,10 @@ CALL INY ;+INC_IP
|
||||
LDY #$01
|
||||
JMP FETCHOP
|
||||
;
|
||||
CALLX INY ;+INC_IP
|
||||
CALLX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPL
|
||||
INY ;+INC_IP
|
||||
INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMPH
|
||||
TYA
|
||||
@ -1554,7 +1581,7 @@ ENTER LDA IFPH
|
||||
;*
|
||||
;* LEAVE FUNCTION
|
||||
;*
|
||||
LEAVEX INY ;+INC_IP
|
||||
LEAVEX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
CLC
|
||||
ADC IFPL
|
||||
@ -1571,7 +1598,7 @@ RETX STA ALTRDOFF
|
||||
PHA
|
||||
PLP
|
||||
RTS
|
||||
LEAVE INY ;+INC_IP
|
||||
LEAVE INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
CLC
|
||||
ADC IFPL
|
||||
|
@ -74,14 +74,41 @@ NOS = $03 ; TOS-1
|
||||
;*
|
||||
;* INTERPRETER INSTRUCTION POINTER INCREMENT MACRO
|
||||
;*
|
||||
!MACRO INC_IP {
|
||||
INY
|
||||
BPL +
|
||||
INC IPH
|
||||
;!MACRO INC_IP {
|
||||
; INY
|
||||
; BPL +
|
||||
; SEP #$20 ; 8 BIT A/M
|
||||
; !AS
|
||||
; INC IPH
|
||||
; TYA
|
||||
; AND #$7F
|
||||
; TAY
|
||||
; REP #$20 ; 16 BIT A/M
|
||||
; !AL
|
||||
;+
|
||||
; }
|
||||
!MACRO FIX_IP {
|
||||
SEP #$20 ; 8 BIT A/M
|
||||
!AS
|
||||
INC IPH
|
||||
TYA
|
||||
AND #$7F
|
||||
TAY
|
||||
+
|
||||
REP #$20 ; 16 BIT A/M
|
||||
!AL
|
||||
}
|
||||
!MACRO FIXJMP_IP .TARGET {
|
||||
BMI +
|
||||
JMP .TARGET
|
||||
+ SEP #$20 ; 8 BIT A/M
|
||||
!AS
|
||||
INC IPH
|
||||
TYA
|
||||
AND #$7F
|
||||
TAY
|
||||
REP #$20 ; 16 BIT A/M
|
||||
!AL
|
||||
JMP .TARGET
|
||||
}
|
||||
;*
|
||||
;* ACCUM/MEM SIZE MACROS
|
||||
@ -764,12 +791,12 @@ DUP LDA TOS,S
|
||||
;*
|
||||
ZERO PEA $0000
|
||||
JMP NEXTOP
|
||||
CFFB +INC_IP
|
||||
CFFB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
ORA #$FF00
|
||||
PHA
|
||||
JMP NEXTOP
|
||||
CB +INC_IP
|
||||
CB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
AND #$00FF
|
||||
PHA
|
||||
@ -777,16 +804,20 @@ CB +INC_IP
|
||||
;*
|
||||
;* LOAD ADDRESS & LOAD CONSTANT WORD (SAME THING, WITH OR WITHOUT FIXUP)
|
||||
;*
|
||||
LA = *
|
||||
CW INY ;+INC_IP
|
||||
LA INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
PHA
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
+FIXJMP_IP NEXTOP
|
||||
CW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
PHA
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
;*
|
||||
;* CONSTANT STRING
|
||||
;*
|
||||
CS INY ;+INC_IP
|
||||
CS INY ;+INC_IP
|
||||
TYA ; NORMALIZE IP AND SAVE STRING ADDR ON ESTK
|
||||
CLC
|
||||
ADC IP
|
||||
@ -796,7 +827,7 @@ CS INY ;+INC_IP
|
||||
TAY
|
||||
JMP NEXTOP
|
||||
;
|
||||
CSX INY ;+INC_IP
|
||||
CSX INY ;+INC_IP
|
||||
TYA ; NORMALIZE IP
|
||||
CLC
|
||||
ADC IP
|
||||
@ -911,17 +942,20 @@ LWX TYX
|
||||
;*
|
||||
;* LOAD ADDRESS OF LOCAL FRAME OFFSET
|
||||
;*
|
||||
LLA +INC_IP
|
||||
LDA (IP),Y
|
||||
LLA INY ;+INC_IP
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC IFP
|
||||
PHA
|
||||
JMP NEXTOP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
;*
|
||||
;* LOAD VALUE FROM LOCAL FRAME OFFSET
|
||||
;*
|
||||
LLB +INC_IP
|
||||
LLB INY ;+INC_IP
|
||||
TYX
|
||||
LDA (IP),Y
|
||||
TAY
|
||||
@ -930,7 +964,7 @@ LLB +INC_IP
|
||||
PHA
|
||||
TXY
|
||||
JMP NEXTOP
|
||||
LLW +INC_IP
|
||||
LLW INY ;+INC_IP
|
||||
TYX
|
||||
LDA (IP),Y
|
||||
TAY
|
||||
@ -939,7 +973,7 @@ LLW +INC_IP
|
||||
TXY
|
||||
JMP NEXTOP
|
||||
;
|
||||
LLBX +INC_IP
|
||||
LLBX INY ;+INC_IP
|
||||
TYX
|
||||
LDA (IP),Y
|
||||
TAY
|
||||
@ -950,7 +984,7 @@ LLBX +INC_IP
|
||||
PHA
|
||||
TXY
|
||||
JMP NEXTOP
|
||||
LLWX +INC_IP
|
||||
LLWX INY ;+INC_IP
|
||||
TYX
|
||||
LDA (IP),Y
|
||||
TAY
|
||||
@ -964,16 +998,16 @@ LLWX +INC_IP
|
||||
;* LOAD VALUE FROM ABSOLUTE ADDRESS
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
LAB INY ;+INC_IP
|
||||
LAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA LABLDX+1
|
||||
LABLDX LDX $FFFF
|
||||
TXA
|
||||
PHA
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
} ELSE {
|
||||
LAB INY ;+INC_IP
|
||||
LAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMP
|
||||
TYA ; QUICKY CLEAR OUT MSB
|
||||
@ -981,19 +1015,19 @@ LAB INY ;+INC_IP
|
||||
LDA (TMP)
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
PHA
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
}
|
||||
LAW INY ;+INC_IP
|
||||
LAW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMP
|
||||
LDA (TMP)
|
||||
PHA
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
;
|
||||
!IF SELFMODIFY {
|
||||
LABX INY ;+INC_IP
|
||||
LABX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA LABXLDX+1
|
||||
STX ALTRDOFF
|
||||
@ -1001,10 +1035,10 @@ LABXLDX LDX $FFFF
|
||||
STX ALTRDON
|
||||
TXA
|
||||
PHA
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
} ELSE {
|
||||
LABX INY ;+INC_IP
|
||||
LABX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMP
|
||||
TYA ; QUICKY CLEAR OUT MSB
|
||||
@ -1014,17 +1048,17 @@ LABX INY ;+INC_IP
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
STX ALTRDON
|
||||
PHA
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
}
|
||||
LAWX INY ;+INC_IP
|
||||
LAWX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMP
|
||||
STX ALTRDOFF
|
||||
LDA (TMP)
|
||||
STX ALTRDON
|
||||
PHA
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
;
|
||||
;*
|
||||
@ -1060,8 +1094,9 @@ SW TYX
|
||||
;* STORE VALUE TO LOCAL FRAME OFFSET
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
SLB +INC_IP
|
||||
LDA (IP),Y
|
||||
SLB INY ;+INC_IP
|
||||
BMI +
|
||||
- LDA (IP),Y
|
||||
AND #$00FF
|
||||
CLC
|
||||
ADC IFP
|
||||
@ -1070,8 +1105,10 @@ SLB +INC_IP
|
||||
TAX
|
||||
SLBSTX STX $FFFF
|
||||
JMP NEXTOP
|
||||
+ +FIX_IP
|
||||
BPL -
|
||||
} ELSE {
|
||||
SLB +INC_IP
|
||||
SLB INY ;+INC_IP
|
||||
TYX
|
||||
LDA (IP),Y
|
||||
TAY
|
||||
@ -1080,21 +1117,21 @@ SLB +INC_IP
|
||||
STA (IFP),Y
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
TXY
|
||||
JMP NEXTOP
|
||||
+FIXJMP_IP NEXTOP
|
||||
}
|
||||
SLW +INC_IP
|
||||
SLW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
TYX
|
||||
TAY
|
||||
PLA
|
||||
STA (IFP),Y
|
||||
TXY
|
||||
JMP NEXTOP
|
||||
+FIXJMP_IP NEXTOP
|
||||
;*
|
||||
;* STORE VALUE TO LOCAL FRAME OFFSET WITHOUT POPPING STACK
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
DLB +INC_IP
|
||||
DLB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
AND #$00FF
|
||||
CLC
|
||||
@ -1105,7 +1142,7 @@ DLB +INC_IP
|
||||
DLBSTX STX $FFFF
|
||||
JMP NEXTOP
|
||||
} ELSE {
|
||||
DLB +INC_IP
|
||||
DLB INY ;+INC_IP
|
||||
TYX
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
LDA (IP),Y
|
||||
@ -1116,7 +1153,7 @@ DLB +INC_IP
|
||||
TXY
|
||||
JMP NEXTOP
|
||||
}
|
||||
DLW +INC_IP
|
||||
DLW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
TYX
|
||||
TAY
|
||||
@ -1128,61 +1165,61 @@ DLW +INC_IP
|
||||
;* STORE VALUE TO ABSOLUTE ADDRESS
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
SAB INY ;+INC_IP
|
||||
SAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA SABSTX+1
|
||||
PLA
|
||||
TAX
|
||||
SABSTX STX $FFFF
|
||||
+INC_IP
|
||||
JMP NEXTOP
|
||||
INY ;+INC_IP
|
||||
+FIXJMP_IP NEXTOP
|
||||
} ELSE {
|
||||
SAB INY ;+INC_IP
|
||||
SAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMP
|
||||
PLA
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
STA (TMP)
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
+INC_IP
|
||||
JMP NEXTOP
|
||||
INY ;+INC_IP
|
||||
+FIXJMP_IP NEXTOP
|
||||
}
|
||||
SAW INY ;+INC_IP
|
||||
SAW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMP
|
||||
PLA
|
||||
STA (TMP)
|
||||
+INC_IP
|
||||
JMP NEXTOP
|
||||
INY ;+INC_IP
|
||||
+FIXJMP_IP NEXTOP
|
||||
;*
|
||||
;* STORE VALUE TO ABSOLUTE ADDRESS WITHOUT POPPING STACK
|
||||
;*
|
||||
!IF SELFMODIFY {
|
||||
DAB INY ;+INC_IP
|
||||
DAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA DABSTX+1
|
||||
LDA TOS,S
|
||||
TAX
|
||||
DABSTX STX $FFFF
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
} ELSE {
|
||||
DAB INY ;+INC_IP
|
||||
DAB INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMP
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
LDA TOS,S
|
||||
STA (TMP)
|
||||
+ACCMEM16 ; 16 BIT A/M
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
}
|
||||
DAW INY ;+INC_IP
|
||||
DAW INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
STA TMP
|
||||
LDA TOS,S
|
||||
STA (TMP)
|
||||
+INC_IP
|
||||
INY ;+INC_IP
|
||||
JMP NEXTOP
|
||||
;*
|
||||
;* COMPARES
|
||||
@ -1245,16 +1282,16 @@ ISLT PLA
|
||||
;*
|
||||
BRTRU PLA
|
||||
BNE BRNCH
|
||||
NOBRNCH INY ;+INC_IP
|
||||
+INC_IP
|
||||
JMP NEXTOP
|
||||
NOBRNCH INY ;+INC_IP
|
||||
INY ;+INC_IP
|
||||
+FIXJMP_IP NEXTOP
|
||||
BRFLS PLA
|
||||
BNE NOBRNCH
|
||||
BRNCH TYA ; FLATTEN IP
|
||||
BRNCH TYA ; FLATTEN IP
|
||||
CLC
|
||||
ADC IP
|
||||
INY ;+INC_IP
|
||||
CLC ; ADD BRANCH OFFSET
|
||||
INY ;+INC_IP
|
||||
CLC ; ADD BRANCH OFFSET
|
||||
ADC (IP),Y
|
||||
STA IP
|
||||
LDY #$01
|
||||
@ -1293,7 +1330,7 @@ IBRNCH PLA
|
||||
;*
|
||||
;* CALL INTO ABSOLUTE ADDRESS (NATIVE CODE)
|
||||
;*
|
||||
CALL INY ;+INC_IP
|
||||
CALL INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
INY
|
||||
BNE EMUSTK
|
||||
@ -1409,7 +1446,7 @@ EMUSTK STA TMP
|
||||
;*
|
||||
;* CALL INTO ABSOLUTE ADDRESS (NATIVE CODE)
|
||||
;*
|
||||
CALLX INY ;+INC_IP
|
||||
CALLX INY ;+INC_IP
|
||||
LDA (IP),Y
|
||||
INY
|
||||
BNE EMUSTKX
|
||||
@ -1573,12 +1610,12 @@ ENTER PEI (IFP) ; SAVE ON STACK FOR LEAVE
|
||||
;*
|
||||
;* LEAVE FUNCTION
|
||||
;*
|
||||
LEAVEX INY ;+INC_IP
|
||||
LEAVEX INY ;+INC_IP
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
LDA (IP),Y ; DEALLOCATE POOL + FRAME
|
||||
STA ALTRDOFF
|
||||
BRA +
|
||||
LEAVE INY ;+INC_IP
|
||||
LEAVE INY ;+INC_IP
|
||||
+ACCMEM8 ; 8 BIT A/M
|
||||
LDA (IP),Y ; DEALLOCATE POOL + FRAME
|
||||
+ STA TMPL
|
||||
|
Loading…
x
Reference in New Issue
Block a user