| Routines

71DD: Make a gangster or policeman pick Sam up

Used by the routines at 61F9, 7A82 and 7B9A.
Input
H | Character number (0xD7-0xE5)
71DD | XOR A | 7F9A holds the ID of the telephone that Sam is calling; set this to 0, effectively making Sam hang up
71DE | LD ($7F9A),A
71E1 | LD L,$00 | Point HL at byte 0x00 of the character's buffer
71E3 | LD A,(HL) | A=character's animatory state
71E4 | AND $70 | Discard bits 0-3 and 7
71E6 | SUB $10 | 0x10: Is this character a policeman?
71E8 | JR NZ,$71ED | Jump if not
71EA | LD ($7FEB),A | Clear all flags at 7FEB (Sam is no longer wanted by the police, because he's just been arrested)
71ED | LD A,$01 | Set bit 0 of Sam's status flags at 7FFC, indicating that he's being carried
71EF | LD ($7FFC),A
71F2 | BIT 0,(HL) | Is the character midstride?
71F4 | CALL NZ,$EC5A | If so, move the character from the midstride position and update the SRB
71F7 | CALL $E9C8 | Update the SRB for the character's current animatory state and location
71FA | ADD A,$08 | A=animatory state of the character while carrying Sam
71FC | CALL $E9D5 | Update the character's animatory state and location and update the SRB
71FF | LD L,$09 | Remove the address of the primary command routine from bytes 0x08 and 0x09 of the character's buffer, thus moving to the next command in the command list
7201 | LD (HL),$00
7203 | LD HL,$0001 | Set Sam's main action timer (in byte 0x08 of his buffer) to 1, and his midstride/mid-action timer (in byte 0x09) to 0
7206 | LD ($E608),HL
7209 | RET |