![]() |
Routines |
Prev: 62925 | Up: Map | Next: 62966 |
The address of this interruptible subcommand routine is placed into bytes 14 and 15 of a character's buffer by the routine at 62976. It guides the character left or right across the floor of a building to his final destination.
|
||||
62926 | LD BC,62694 | Point BC at the routine at 62694 | ||
This entry point is used by the unused routine at 62966 (with BC=62880) and by the routine at 62971 (with BC=62958: RET).
|
||||
62929 | LD L,0 | Point HL at byte 0 of the character's buffer | ||
62931 | BIT 0,(HL) | Is the character midstride? | ||
62933 | JP NZ,60506 | If so, move the character from the midstride position and update the SRB | ||
62936 | LD L,3 | Has this character's command list been marked for a restart? | ||
62938 | BIT 4,(HL) | |||
62940 | JP NZ,62084 | Terminate this subcommand if so (this jump is never made because bit 4 of byte 3 is unused) | ||
62943 | LD L,1 | Collect the character's x-coordinate from byte 1 of his buffer | ||
62945 | LD A,(HL) | |||
62946 | LD L,16 | Compare this with the character's intermediate or final destination x-coordinate | ||
62948 | CP (HL) | |||
62949 | JP Z,62084 | Terminate this subcommand if they match | ||
62952 | PUSH AF | Save the carry flag | ||
62953 | LD DE,62959 | Push the address of the instruction at 62959 (below) onto the stack | ||
62956 | PUSH DE | |||
62957 | PUSH BC | Make an indirect jump to the routine whose address is in BC, and then return to 62959 (below) | ||
62958 | RET | |||
62959 | POP AF | Restore the carry flag | ||
62960 | JP C,60334 | Make the character move right if he's to the left of his intermediate or final destination | ||
62963 | JP 60347 | Otherwise make the character move left |
Prev: 62925 | Up: Map | Next: 62966 |