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 |
Description: | ACTINT provides automatic interrupt service and runs the seconds timer, the game timer, the music processor, and blackout timers, plus CT0–CT3. Functions as 60th of a second timers. |
Once ACTINT is called, it sets:
- Z80 Interrupt mode 2 (IM 2)
- INLIN = 200 (line 100)
- I register and Interrupt Feedback (INFBK)
- Enable interrupts (EI)
ACTINT also calls TIMEX and TIMEY which decrement counters/timers.
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 |
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. |
BMUSIC
BEGIN PLAYING MUSIC
Calling Sequence: | SYSTEM BMUSIC or SYSSUK BMUSIC DW (music stack) DB (voices byte) DW (score) |
Arguments: | A = voices to start with HL = music program counter (score) IX = music stack pointer |
Notes: | None |
Description: | Quiets any previous music, then interprets specified “score.” |
Restrictions: | None |
DECCTS
DECREMENT COUNTERS/TIMERS
EMUSIC
STOP MUSIC
Calling Sequence: | SYSTEM EMUSIC or SYSSUK EMUSIC |
Arguments: | None |
Notes: | None |
Description: | Outputs 0 to volume ports and halt music processor. |
Restrictions: | None |
STIMER
DECREMENT TIMERS
Calling Sequence: | PUSH AF PUSH BC PUSH DE PUSH HL PUSH IX PUSH IY CALL STIMER POP IY POP IX POP HL POP DE POP BC POP AF |
Input: | None |
Description: | STIMER keeps track of game time. If it hits 0, then bit 7 (GSBEND, i.e., game end) in the game status byte (GAMSTB) is set. |
Uses: | AF, BC, DE, HL |
Calls: | Music processor on note (duration) expiration |
Note: | Sets bit 7 of KEYSEX (KEYS-EX tracking byte) to 1 on every second |