Prev: FEC3 Up: Map Next: FF35
FEC9: Match String
Finds the BASIC string "z$" inside "b$" and returns the match position in BC (or zero if there is no match). Called by BASIC on side 2 as "ist" (FEC9).
MatchString FEC9 DI Disable interrupts.
FECA LD ($FF76),SP
FECE LD SP,$FFBE
FED1 LD HL,$FEC3
FED4 CALL MatchString_LookUpVariable
FED7 JR Z,MatchString_2
FED9 PUSH HL
FEDA PUSH BC
FEDB LD HL,$FEC6
FEDE CALL MatchString_LookUpVariable
FEE1 LD ($FF52),BC
FEE5 EX DE,HL
FEE6 POP HL
FEE7 JR Z,MatchString_3
FEE9 LD BC,($FF52)
FEED SBC HL,BC
FEEF JR C,MatchString_1
FEF1 INC HL
FEF2 LD B,H
FEF3 LD C,L
FEF4 POP HL
FEF5 PUSH HL
MatchString_0 FEF6 LD A,(DE)
FEF7 CPIR
FEF9 JR Z,MatchString_4
MatchString_1 FEFB POP HL
MatchString_2 FEFC LD BC,$0000
FEFF JR MatchString_7
MatchString_3 FF01 POP HL
FF02 LD BC,$0001
FF05 JR MatchString_7
MatchString_4 FF07 PUSH HL
FF08 PUSH DE
FF09 PUSH BC
FF0A PUSH AF
FF0B LD BC,($FF52)
FF0F DEC BC
FF10 LD A,B
FF11 OR C
FF12 JR Z,MatchString_6
MatchString_5 FF14 INC DE
FF15 LD A,(DE)
FF16 CPI
FF18 JR NZ,MatchString_8
FF1A JP PE,MatchString_5
MatchString_6 FF1D POP AF
FF1E POP BC
FF1F POP HL
FF20 POP DE
FF21 POP HL
FF22 EX DE,HL
FF23 SBC HL,DE
FF25 LD B,H
FF26 LD C,L
MatchString_7 FF27 LD SP,($FF76)
FF2B RET
MatchString_8 FF2C POP AF
FF2D POP BC
FF2E POP DE
FF2F POP HL
FF30 JP PE,MatchString_0
FF33 JR MatchString_1
Prev: FEC3 Up: Map Next: FF35