| Routines

7CF1: Call an interruptible subcommand

Used by the routines at 7CFC, 7D30, 7D9E, F300 and F400. Drops the return address from the stack and copies its LSB into byte 0x63 of the character's buffer (where the LSB of the address of the primary command routine is held), copies the address of the interruptible subcommand routine from BC into bytes 0x6A and 0x6B of the character's buffer, and then jumps to that routine.
Input
BC | Interruptible subcommand routine address
H | Character number (0x98-0xA9)
7CF1 | LD L,$6A | Copy the routine address from BC into bytes 0x69 and 0x6A of the character's buffer
7CF3 | LD (HL),B
7CF4 | DEC L
7CF5 | LD (HL),C
7CF6 | POP DE | Drop the return address off the stack and place its LSB into byte 0x63 of the character's buffer; this ensures that when the interruptible subcommand has finished, control resumes in the caller of this routine
7CF7 | LD L,$63
7CF9 | LD (HL),E
7CFA | PUSH BC | Make an indirect jump to the routine address in BC
7CFB | RET