This is an old revision of the document!


Interrupt Scheduler

The Interrupt Scheduler handles systems dependent upon timing: counters, timers, music, interrupts, etc.

Name Description
ACTINT Activate automatic interrupt service (timers, music, blackout)
BMUSIC Begin playing music
CTIMER Call custom timer
DECCTS Decrement counters/timers under mask (used by ACTINT and DECCTS)
EMUSIC Stop music
STIMER Track and decrement game timers

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

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.

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