| Routines

25248: Terminate a command

The main entry point is used by the routines at 27206, 28655 and 28799. Removes the uninterruptible subcommand routine address from bytes 111 and 112 of the character's buffer, which has the effect of making the routine at 25126 immediately hand control of the character back to the interruptible subcommand or the primary command.
25248 | LD L,112 | Byte 112 of the buffer contains the MSB of the uninterruptible subcommand routine address
25250 | JR 25258 | Jump forward to replace it with 0
This entry point is used by the routines at 25404, 25488, 29160, 29284, 31110, 31130, 31648, 31807 and 31944. Removes the interruptible subcommand routine address from bytes 105 and 106 of the character's buffer, which has the effect of making the routine at 25126 immediately hand control of the character back to the primary command.
25252 | LD L,106 | Byte 106 of the buffer contains the MSB of the interruptible subcommand routine address
25254 | JR 25258 | Jump forward to replace it with 0
This entry point is used by the routines at 25303, 25750, 27442, 27480, 31638, 31807, 32132, 32158, 32167, 63374, 63456 and 63488. Removes the primary command routine address from bytes 99 and 100 of the character's buffer, which has the effect of making the routine at 25126 move immediately to the next command in the command list.
25256 | LD L,100 | Byte 100 of the buffer contains the MSB of the primary command routine address
25258 | LD A,(32765) | A=number of the character being worked on (152-171)
25261 | LD H,A | Zero out the relevant routine address MSB (in byte 100, 106 or 112) in the character's buffer
25262 | LD (HL),0
25264 | JR 25172 | Re-enter the character-moving routine (25126) at the checkpoint for the interruptible subcommand