Spectrum ROM | Routines |
Prev: 07971 | Up: Map |
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 +FFFF 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. | ||||
08013 | JR Z,PAUSE_1 | ||||||
The period of the pause has now finished.
|
|||||||
PAUSE_END | 08015 | RES 5,(IY+1) | Signal 'no key pressed'. | ||||
08019 | RET | Now return - to STMT_RET. |
Prev: 07971 | Up: Map |