![]() |
Routines |
Prev: D349 | Up: Map | Next: D36A |
|
||||||||||||||||||
SearchThreeByteTable | D34E | EXX | Switch to the shadow registers. | |||||||||||||||
D34F | LD E,$03 | Set the length of the data in E (03 bytes). | ||||||||||||||||
This entry point is used by the routine at SearchTwoByteTable.
|
||||||||||||||||||
SearchTable_Start | D351 | PUSH IX | Copy the table for searching into HL (using the stack). | |||||||||||||||
D353 | POP HL | |||||||||||||||||
D354 | LD B,A | Copy the table ID into B. | ||||||||||||||||
D355 | LD D,$00 | Reset D to 00 for the length offset calculation. | ||||||||||||||||
SearchTable_Loop | D357 | LD A,(HL) | Fetch a byte from the table. | |||||||||||||||
D358 | CP B | Jump to SearchTable_Return if the byte is the table ID we're searching for or if the termination character has been reached (FF). | ||||||||||||||||
D359 | JR Z,SearchTable_Return | |||||||||||||||||
D35B | CP $FF | |||||||||||||||||
D35D | JR Z,SearchTable_Return | |||||||||||||||||
D35F | ADD HL,DE | Move to the next table entry. | ||||||||||||||||
D360 | JP SearchTable_Loop | Jump back to SearchTable_Loop. | ||||||||||||||||
Either the table ID was matched, or the terminator was reached.
|
||||||||||||||||||
SearchTable_Return | D363 | PUSH HL | Copy the table pointer into IX (using the stack). | |||||||||||||||
D364 | POP IX | |||||||||||||||||
D366 | CP $FF | Set the zero flag if the termination character was reached (FF). | ||||||||||||||||
D368 | EXX | Switch back to the normal registers. | ||||||||||||||||
D369 | RET | Return. |
Prev: D349 | Up: Map | Next: D36A |