| Routines

F09B: Make a teacher find the truant ERIC

The address of this interruptible subcommand routine is placed into bytes 0x09 and 0x0A of a teacher's buffer by the routine at F0BF. It makes the teacher run after and stalk ERIC until he goes to wherever he should be (the dinner hall, the assembly hall, or the classroom).
Input
H | Teacher's character number (0xC9-0xCB)
F09B | LD L,$1D | Set bit 7 of byte 0x1D of the teacher's buffer, making him run
F09D | SET 7,(HL)
F09F | LD L,$00 | Byte 0x00 of the teacher's buffer holds his animatory state
F0A1 | BIT 0,(HL) | Is the teacher midstride?
F0A3 | JP NZ,$655E | Finish the stride if so
F0A6 | LD L,$1D |
Now check whether a command list restart has been requested. This request will have been made for one of two reasons: the lesson in which the teacher started chasing ERIC has ended, and the next lesson has just begun (see F74D); or ERIC is now where he should be (see below). In either case, the chase is over.
F0A8 | BIT 0,(HL) | Has the teacher's command list been marked for a restart?
F0AA | JP NZ,$7E8F | If so, do some post-chase cleanup, remove the address of this routine from bytes 0x09 and 0x0A of the teacher's buffer, and restart the command list
F0AD | CALL $7D15 | Is ERIC where he should be?
F0B0 | JP NZ,$6558 | Continue the chase if not
F0B3 | SET 0,(HL) | Otherwise set bit 0 of byte 0x1D of the teacher's buffer, indicating that the command list should be restarted
F0B5 | JR $F0A8 | Restart the command list now that the chase is over