| Routines

25484: Terminate a command

The main entry point is used by the routines at 25700, 31952, 31969, 32497, 61555, 61624, 61631, 61658, 62032, 62560, 62572, 62599, 62620 and 63501. Removes the primary command routine address from bytes 3 and 4 of the character's buffer, which has the effect of making the routine at 25296 move immediately to the next command in the command list.
25484 | LD L,4 | Byte 4 of the buffer contains the MSB of the primary command routine address
25486 | JR 25494 | Jump forward to replace it with 0
This entry point is used by the routines at 25581, 25656, 25677, 26639, 26752, 27144, 32379 and 61463. Removes the interruptible subcommand routine address from bytes 9 and 10 of the character's buffer, which has the effect of making the routine at 25296 immediately hand control of the character back to the primary command.
25488 | LD L,10 | Byte 10 of the buffer contains the MSB of the interruptible subcommand routine address
25490 | JR 25494 | Jump forward to replace it with 0
This entry point is used by the routines at 30102, 30643 and 31254. Removes the uninterruptible subcommand routine address from bytes 17 and 18 of the character's buffer, which has the effect of making the routine at 25296 immediately hand control of the character back to the interruptible subcommand or the primary command.
25492 | LD L,18 | Byte 18 of the buffer contains the MSB of the uninterruptible subcommand routine address
25494 | LD A,(32764) | A=number of the character being worked on (183-214)
25497 | LD H,A | Zero out the relevant routine address MSB (in byte 4, 10 or 18) in the character's buffer
25498 | LD (HL),0
25500 | JP 25432 | Re-enter the character-moving routine (25296) at the checkpoint for the interruptible subcommand