This is an old revision of the document!
Interrupt Scheduler
The Interrupt Scheduler handles system timers and counters.
Interrupt Scheduler Routines
Interrupt Scheduler Routine Descriptions
ACTINT
ACTIVE INTERRUPTS
Calling Sequence: | SYSTEM ACTINT or SYSSUK ACTINT |
Arguments: | None |
Outputs: | None |
Function: | Sets IM=2, INLIN=200, sets I register + INFBK Calls TIMEX and TIMEY Enables interrupts |
Description: | Once ACTINT is called, it provides interrupt service completely automatically by setting: * Z80 Interrupt mode 2 (IM 2) * INLIN = 200 (line 100) * I register and Interrupt Feedback (INFBK) * Enables interrupts (EI) It runs the seconds timer, the game timer, the music processor, and blackout timers, plus CT0, CT1, CT2, CT3. Timers function every 1/60th of a second. |
CTIMER
CUSTOM TIMER
Calling Sequence: | CALL CTIMER
|
Input: | HL = address of custom time base B = value to load into time base 1 to 0 transition C = counter mask as in DECCTS |
Notes: | None |
Description: | HL is loaded and decremented. If HL != 0, then a return is executed, otherwise, HL is loaded with B and DECCTS is called. Registers HL, DE, BC, and AF are undefined upon exit. |
Restrictions: | None |
DECCTS
DECREMENT COUNTERS/TIMERS
Calling Sequence: | SYSTEM DECCTS or SYSSUK DECCTS DB (mask) |
Arguments: | C = mask for which counters to decrement |
Outputs: | Sentry will notify the program |
Description: | Decrements counter if they are non-zero. If any counters go from 1 to 0, sentry is notified. |
STIMER
DECREMENT TIMERS
Calling Sequence: | PUSH AF PUSH BC PUSH DE PUSH HL CALL STIMER POP HL POP DE POP BC POP AF |
Input: | None |
Description: | STIMER keeps track of game time. If it hits 0, then GSBEND bit in the game status byte is set. |
Uses: | AF, BC, DE, HL |
Calls: | Music processor on note (duration) expiration |
Note: | Sets bit 7 of KEYSEX to 1 on every second |