Prev: D064 Up: Map Next: D0D0
D078: Routine at D078
Used by the routines at A2E4, C989 and D1B2.
D078 PUSH IX Stash IX, IY and BC on the stack.
D07A PUSH IY
D07C PUSH BC
D07D LD IX,($A017) IX=*A017.
D081 LD A,(IX+$04) A=*IX+04.
D084 AND %10000000 Keep only bit 7.
D086 JR Z,$D0C6 Jump to D0C6 if ?? is equal to 00.
D088 CALL $C86E Call C86E.
D08B INC A Increment A by one.
D08C JR NZ,$D09E Jump to D09E if A is not equal to 00.
D08E CALL $D33C Call D33C.
D091 BIT 7,(IX+$00) Jump to D0C6 if bit 7 of *IX+00 is set.
D095 JR NZ,$D0C6
D097 CALL $C00C Call C00C.
D09A CP $01 Jump to D0C6 if A is not equal to 01.
D09C JR NZ,$D0C6
D09E LD IX,$8B6F IX=Table_Objects.
D0A2 CALL FetchNextObject Call FetchNextObject.
D0A5 JR Z,$D0C9 Jump to D0C9 if A is equal to 01.
D0A7 LD A,(IY+$00) Jump to D0A2 if *IY+00 is not equal to 01.
D0AA CP $01
D0AC JR NZ,$D0A2
D0AE LD A,(IY+$05) A=*IY+05.
D0B1 XOR %10110111 Flip bits 0-2, 4-5, 7.
D0B3 AND %01011100 Keep only bits 2-4, 6.
D0B5 JR NZ,$D0A2 Jump to D0A2 if A is not equal to 01.
D0B7 LD A,(IY+$04) A=*IY+04.
D0BA AND %10000000 Keep only bit 7.
D0BC JR Z,$D0A2 Jump to D0A2 if A is equal to 01.
D0BE LD A,(IX+$00) A=*IX+00.
D0C1 CALL $C821 Call C821.
D0C4 JR Z,$D0A2 Jump to D0A2 if A is equal to 01.
D0C6 AND A Set flags.
D0C7 JR $D0CA Jump to D0CA.
D0C9 SCF Set the carry flag.
D0CA POP BC Restore BC, IY and IX from the stack.
D0CB POP IY
D0CD POP IX
D0CF RET Return.
Prev: D064 Up: Map Next: D0D0