chkPS, used to be only for words that pushed back to PS, but I've recently removed underflow checks from next and I forgot to add missing chkPS, calls that go with this change.master
@@ -1,10 +1,7 @@ | |||||
lbluflw BSET ( abortUnderflow ) | |||||
DE BIN( @ 0x06 ( uflw ) + LDd(i), | |||||
JR, lblexec BWR | |||||
lblchkPS BSET ( chkPS ) | lblchkPS BSET ( chkPS ) | ||||
( Note that you only need to call this in words that push | |||||
back to PSP. If they don't, calling chkPS is redundant with | |||||
check in next ) | |||||
( thread carefully in there: sometimes, we're in the | |||||
middle of a EXX to protect BC. BC must never be touched | |||||
here. ) | |||||
EXX, | EXX, | ||||
( We have the return address for this very call on the stack | ( We have the return address for this very call on the stack | ||||
and protected registers. 2- is to compensate that. ) | and protected registers. 2- is to compensate that. ) | ||||
@@ -12,4 +9,7 @@ lblchkPS BSET ( chkPS ) | |||||
SP SUBHLd, | SP SUBHLd, | ||||
EXX, | EXX, | ||||
CNC RETc, ( PS_ADDR >= SP? good ) | CNC RETc, ( PS_ADDR >= SP? good ) | ||||
JR, lbluflw BWR | |||||
( continue to uflw ) | |||||
lbluflw BSET ( abortUnderflow ) | |||||
DE BIN( @ 0x06 ( uflw ) + LDd(i), | |||||
JR, lblexec BWR |
@@ -12,5 +12,5 @@ CODE ?DUP | |||||
HLZ, IFNZ, HL PUSH, THEN, | HLZ, IFNZ, HL PUSH, THEN, | ||||
;CODE | ;CODE | ||||
CODE DROP ( a -- ) | CODE DROP ( a -- ) | ||||
HL POP, | |||||
HL POP, chkPS, | |||||
;CODE | ;CODE |
@@ -1,5 +1,5 @@ | |||||
CODE 2DROP ( a b -- ) | CODE 2DROP ( a b -- ) | ||||
HL POP, HL POP, | |||||
HL POP, HL POP, chkPS, | |||||
;CODE | ;CODE | ||||
CODE 2DUP ( a b -- a b a b ) | CODE 2DUP ( a b -- a b a b ) | ||||
@@ -1,13 +1,11 @@ | |||||
CODE ! | CODE ! | ||||
HL POP, | |||||
DE POP, | |||||
HL POP, DE POP, chkPS, | |||||
(HL) E LDrr, | (HL) E LDrr, | ||||
HL INCd, | HL INCd, | ||||
(HL) D LDrr, | (HL) D LDrr, | ||||
;CODE | ;CODE | ||||
CODE @ | CODE @ | ||||
HL POP, | |||||
chkPS, | |||||
HL POP, chkPS, | |||||
E (HL) LDrr, | E (HL) LDrr, | ||||
HL INCd, | HL INCd, | ||||
D (HL) LDrr, | D (HL) LDrr, | ||||
@@ -1,12 +1,10 @@ | |||||
CODE C! | CODE C! | ||||
HL POP, | |||||
DE POP, | |||||
HL POP, DE POP, chkPS, | |||||
(HL) E LDrr, | (HL) E LDrr, | ||||
;CODE | ;CODE | ||||
CODE C@ | CODE C@ | ||||
HL POP, | |||||
chkPS, | |||||
HL POP, chkPS, | |||||
L (HL) LDrr, | L (HL) LDrr, | ||||
H 0 LDri, | H 0 LDri, | ||||
HL PUSH, | HL PUSH, | ||||
@@ -1,12 +1,10 @@ | |||||
CODE PC! EXX, ( protect BC ) | CODE PC! EXX, ( protect BC ) | ||||
BC POP, | |||||
HL POP, | |||||
BC POP, HL POP, chkPS, | |||||
L OUT(C)r, | L OUT(C)r, | ||||
EXX, ( unprotect BC ) ;CODE | EXX, ( unprotect BC ) ;CODE | ||||
CODE PC@ EXX, ( protect BC ) | CODE PC@ EXX, ( protect BC ) | ||||
BC POP, | |||||
chkPS, | |||||
BC POP, chkPS, | |||||
H 0 LDri, | H 0 LDri, | ||||
L INr(C), | L INr(C), | ||||
HL PUSH, | HL PUSH, | ||||
@@ -1,15 +1,16 @@ | |||||
CODE I | CODE I | ||||
L 0 IX+ LDrIXY, | |||||
H 1 IX+ LDrIXY, | |||||
L 0 IX+ LDrIXY, H 1 IX+ LDrIXY, | |||||
HL PUSH, | HL PUSH, | ||||
;CODE | ;CODE | ||||
CODE I' | CODE I' | ||||
L 2 IX- LDrIXY, | |||||
H 1 IX- LDrIXY, | |||||
L 2 IX- LDrIXY, H 1 IX- LDrIXY, | |||||
HL PUSH, | HL PUSH, | ||||
;CODE | ;CODE | ||||
CODE J | CODE J | ||||
L 4 IX- LDrIXY, | |||||
H 3 IX- LDrIXY, | |||||
L 4 IX- LDrIXY, H 3 IX- LDrIXY, | |||||
HL PUSH, | HL PUSH, | ||||
;CODE | ;CODE | ||||
CODE >R | |||||
HL POP, chkPS, | |||||
IX INCd, IX INCd, 0 IX+ L LDIXYr, 1 IX+ H LDIXYr, | |||||
;CODE |
@@ -1,11 +1,8 @@ | |||||
CODE >R | |||||
HL POP, IX INCd, IX INCd, 0 IX+ L LDIXYr, 1 IX+ H LDIXYr, | |||||
;CODE | |||||
CODE R> | CODE R> | ||||
L 0 IX+ LDrIXY, H 1 IX+ LDrIXY, IX DECd, IX DECd, HL PUSH, | L 0 IX+ LDrIXY, H 1 IX+ LDrIXY, IX DECd, IX DECd, HL PUSH, | ||||
;CODE | ;CODE | ||||
CODE 2>R PC ORG @ 0x35 + ! ( stable ABI JP ) | CODE 2>R PC ORG @ 0x35 + ! ( stable ABI JP ) | ||||
DE POP, HL POP, | |||||
DE POP, HL POP, chkPS, | |||||
IX INCd, IX INCd, 0 IX+ L LDIXYr, 1 IX+ H LDIXYr, | IX INCd, IX INCd, 0 IX+ L LDIXYr, 1 IX+ H LDIXYr, | ||||
IX INCd, IX INCd, 0 IX+ E LDIXYr, 1 IX+ D LDIXYr, | IX INCd, IX INCd, 0 IX+ E LDIXYr, 1 IX+ D LDIXYr, | ||||
;CODE | ;CODE | ||||