Prev: D60B Up: Map Next: D68C
D671: Find Next Valid Exit
Used by the routine at PrintLocationExitsWithFormatting.
Steps through the exit list until it finds one whose door object is zero.
Input
IX Pointer to exit data
BC Exit data length
Output
F Zero flag clear when a valid exit is found
FindNextValidExit D671 ADD IX,BC Step to the next exit entry.
D673 LD A,$FF Take the end marker.
D675 CP (IX+$00) See whether this exit is the end marker.
D678 RET Z Return if this exit is the end marker.
D679 XOR A Go to FindNextValidExit if the door object is not zero.
D67A CP (IX+$01)
D67D JR NZ,FindNextValidExit
D67F LD A,(IX+$00) Jump to FindNextValidExit if this exit has no direction.
D682 AND A
D683 JR Z,FindNextValidExit
D685 CP $0B Go to FindNextValidExit if the direction is 0B or more.
D687 JR NC,FindNextValidExit
D689 OR %00000001 Reset the zero flag.
D68B RET Return.
View the equivalent code in;
Prev: D60B Up: Map Next: D68C