Prev: 39900 Up: Map Next: 40056
40001: Routine at 9C41
Used by the routine at Action_Dir.
40001 PUSH IX Stash IX, IY and BC on the stack.
40003 PUSH IY
40005 PUSH BC
40006 LD B,A Stash A in the B register temporarily so it doesn't get overwritten.
40007 CALL LocateLocation Call LocateLocation.
40010 LD A,(IX+1)
40013 LD C,A Stash A in the C register temporarily so it doesn't get overwritten.
40014 LD IX,49248 Set IX to $C060 which is 3 bytes less than the start of the object table due to the following line adding $0003 and moving us on to the first record.
40018 CALL Step3ByteTable Call Step3ByteTable.
40021 JR Z,40045 Jump to 40045 if we've reached the end of the object data.
40023 LD A,(IY+0) If the TODO is not $01 (TODO), then loop back round to 40018 to move onto the next record.
40026 CP 1
40028 JR NZ,40018
Success! We've found a record which matches $01 (TODO).
40030 LD A,B Restore the previous value of A from the B register.
40031 CP (IY+16)
40034 JR NZ,40018
40036 LD A,C
40037 SUB (IY+2)
40040 JR C,40052
40042 LD C,A
40043 JR 40018 Jump to 40018.
40045 LD A,C Restore the previous value of A from the C register.
40046 POP BC Restore BC, IY and IX from the stack.
40047 POP IY
40049 POP IX
40051 RET Return.
40052 LD C,0
40054 JR 40045 Jump to 40045.
Prev: 39900 Up: Map Next: 40056