| Routines

07994: THE 'PAUSE' COMMAND ROUTINE

The address of this routine is found in the parameter table. The period of the pause is determined by counting the number of maskable interrupts as they occur every 1/50th of a second. A pause is finished either after the appropriate number of interrupts or by the system variable FLAGS indicating that a key has been pressed.
PAUSE | 07994 | CALL FIND_INT2 | Fetch the operand.
PAUSE_1 | 07997 | HALT | Wait for a maskable interrupt.
| 07998 | DEC BC | Decrease the counter.
| 07999 | LD A,B | If the counter is thereby reduced to zero the pause has come to an end.
| 08000 | OR C
| 08001 | JR Z,PAUSE_END
| 08003 | LD A,B | If the operand was zero BC will now hold 65535 and this value will be returned to zero. Jump with all other operand values.
| 08004 | AND C
| 08005 | INC A
| 08006 | JR NZ,PAUSE_2
| 08008 | INC BC
PAUSE_2 | 08009 | BIT 5,(IY+1) | Jump back unless a key has been pressed (bit 5 of FLAGS set).
| 08013 | JR Z,PAUSE_1
The period of the pause has now finished.
PAUSE_END | 08015 | RES 5,(IY+1) | Signal 'no key pressed' (reset bit 5 of FLAGS).
| 08019 | RET | Now return - to STMT_RET.