![]() |
Routines |
| Prev: 74C8 | Up: Map | Next: 7500 |
| 74D8 | LD HL,$E608 | Decrement Sam's main action timer in byte 0x08 of his buffer | ||
| 74DB | DEC (HL) | |||
| 74DC | RET NZ | Return unless it's time to deal with Sam | ||
| 74DD | LD HL,$74F3 | We will continue at 74F3 (below) after calling the routine to handle Sam | ||
| 74E0 | PUSH HL | |||
| 74E1 | LD L,$C6 | HL=74C6 | ||
| 74E3 | LD A,($7FFC) | Pick up Sam's status flags from 7FFC | ||
| 74E6 | INC L | Point HL at one of the entries in the table of Sam-handling routine addresses at 74C8 | ||
| 74E7 | INC L | |||
| 74E8 | RLCA | |||
| 74E9 | JR NC,$74E6 | |||
| 74EB | LD C,(HL) | Collect the routine address into BC | ||
| 74EC | INC L | |||
| 74ED | LD B,(HL) | |||
| 74EE | PUSH BC | Push it onto the stack, ready for an indirect jump | ||
| 74EF | LD HL,$E600 | Point HL at byte 0x00 of Sam's buffer | ||
| 74F2 | RET | Make an indirect jump to the Sam-handling routine | ||
|
We come here after the Sam-handling routine has returned.
|
||||
| 74F3 | LD HL,$7FFC | 7FFC holds Sam's status flags | ||
| 74F6 | LD A,(HL) | Pick them up in A | ||
| 74F7 | AND A | Has Sam finished the action yet? | ||
| 74F8 | RET Z | Return with the zero flag set if so | ||
| 74F9 | LD A,($E608) | Collect Sam's main action timer from byte 0x08 of his buffer | ||
| 74FC | AND A | Did the Sam-handling routine set the action timer to a non-zero value (meaning that the action is still in progress)? | ||
| 74FD | RET NZ | Return with the zero flag reset if so | ||
| 74FE | LD (HL),A | Otherwise clear all of Sam's status flags at 7FFC | ||
| 74FF | RET | Return with the zero flag set | ||
| Prev: 74C8 | Up: Map | Next: 7500 |