pcat: move all find code in _find word
It isn't used by low level boot code anymore, so it can go there.
This commit is contained in:
parent
dbd283758c
commit
1b5333d0b4
2
blk/812
2
blk/812
@ -1,4 +1,4 @@
|
|||||||
VARIABLE lblexec VARIABLE lblfind VARIABLE lblnext
|
VARIABLE lblexec VARIABLE lblnext
|
||||||
H@ ORG !
|
H@ ORG !
|
||||||
JMPn, 0 A,, ( 00, main ) 0 A, 0 A,, ( unused )
|
JMPn, 0 A,, ( 00, main ) 0 A, 0 A,, ( unused )
|
||||||
0 A,, ( unused ) 0 A,, ( 08, LATEST )
|
0 A,, ( unused ) 0 A,, ( 08, LATEST )
|
||||||
|
15
blk/819
15
blk/819
@ -1,15 +0,0 @@
|
|||||||
lblfind BSET
|
|
||||||
( find word the same name as str in SI starting from tip in
|
|
||||||
DI. Returns wordref in DI. Z if found, NZ if not. )
|
|
||||||
CH CH XORrr, CL [SI] MOVr[], ( CX -> strlen )
|
|
||||||
SI INCx, ( first char ) AX AX XORxx, ( initial prev )
|
|
||||||
BEGIN, ( loop )
|
|
||||||
DI AX SUBxx, ( jump to prev wordref )
|
|
||||||
AL [DI] -1 MOVr[]+, ( strlen )
|
|
||||||
CL AL CMPrr, IFZ, ( same len )
|
|
||||||
SI PUSHx, DI PUSHx, CX PUSHx, ( --> lvl 3 )
|
|
||||||
3 ADDALi, ( header ) AH AH XORrr, DI AX SUBxx,
|
|
||||||
CLD, REPZ, CMPSB,
|
|
||||||
CX POPx, DI POPx, SI POPx, ( <-- lvl 3 )
|
|
||||||
IFZ, RETn, THEN,
|
|
||||||
THEN,
|
|
5
blk/820
5
blk/820
@ -1,5 +0,0 @@
|
|||||||
( find cont. )
|
|
||||||
DI 3 SUBxi, AX [DI] MOVx[], ( prev )
|
|
||||||
AX AX ORxx,
|
|
||||||
JNZ, AGAIN, ( loop )
|
|
||||||
SI DECx, ( start of string, and NZ ) RETn,
|
|
21
blk/828
21
blk/828
@ -1,9 +1,16 @@
|
|||||||
CODE _find ( cur w -- a f )
|
CODE _find ( cur w -- a f )
|
||||||
SI POPx, ( w ) DI POPx, ( cur )
|
SI POPx, ( w ) DI POPx, ( cur )
|
||||||
CALLn, lblfind @ RPCn,
|
CH CH XORrr, CL [SI] MOVr[], ( CX -> strlen )
|
||||||
IFNZ, ( not found )
|
SI INCx, ( first char ) AX AX XORxx, ( initial prev )
|
||||||
SI PUSHx, AX AX XORxx, AX PUSHx,
|
BEGIN, ( loop )
|
||||||
JMPn, lblnext @ RPCn,
|
DI AX SUBxx, ( jump to prev wordref )
|
||||||
THEN, ( found )
|
AL [DI] -1 MOVr[]+, ( strlen )
|
||||||
DI PUSHx, AX 1 MOVxI, AX PUSHx,
|
CL AL CMPrr, IFZ, ( same len )
|
||||||
;CODE
|
SI PUSHx, DI PUSHx, CX PUSHx, ( --> lvl 3 )
|
||||||
|
3 ADDALi, ( header ) AH AH XORrr, DI AX SUBxx,
|
||||||
|
CLD, REPZ, CMPSB,
|
||||||
|
CX POPx, DI POPx, SI POPx, ( <-- lvl 3 )
|
||||||
|
IFZ, DI PUSHx, AX 1 MOVxI, AX PUSHx,
|
||||||
|
JMPn, lblnext @ RPCn, THEN,
|
||||||
|
THEN,
|
||||||
|
DI 3 SUBxi, AX [DI] MOVx[], ( prev ) AX AX ORxx, ( cont. )
|
||||||
|
3
blk/829
3
blk/829
@ -1,3 +1,6 @@
|
|||||||
|
( cont. find ) JNZ, AGAIN, ( loop )
|
||||||
|
SI DECx, SI PUSHx, AX AX XORrr, AX PUSHx,
|
||||||
|
;CODE
|
||||||
CODE 0 AX AX XORxx, AX PUSHx, ;CODE
|
CODE 0 AX AX XORxx, AX PUSHx, ;CODE
|
||||||
CODE 1 AX 1 MOVxI, AX PUSHx, ;CODE
|
CODE 1 AX 1 MOVxI, AX PUSHx, ;CODE
|
||||||
CODE -1 AX -1 MOVxI, AX PUSHx, ;CODE
|
CODE -1 AX -1 MOVxI, AX PUSHx, ;CODE
|
||||||
|
Loading…
Reference in New Issue
Block a user