Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
interrupt_scheduler [2016/05/31 22:57]
ex_writer [ACTINT]
— (current)
Line 1: Line 1:
-====== Interrupt Scheduler ====== 
- 
-The Interrupt Scheduler handles system timers and counters. 
- 
-===== Interrupt Scheduler Routines ===== 
- 
-^ Name ^ Description ^ 
-| [[interrupt scheduler#​actint|ACTINT]] | Activate automatic interrupt service (timers, music, blackout) | 
-| [[interrupt scheduler#​ctimer|CTIMER]] | Call custom timer |  
-| [[interrupt scheduler#​deccts|DECCTS]] | Decrement counters/​timers under mask (used by ACTINT and DECCTS) | 
-| [[interrupt scheduler#​stimer|STIMER]] | Track and decrement game timers | 
-===== Interrupt Scheduler Routine Descriptions ===== 
- 
-==== ACTINT ==== 
- 
-ACTIVE INTERRUPTS 
- 
-| Calling Sequence: | <code z80>​SYSTEM ​   ACTINT</​code>​ or <code z80>​SYSSUK ​   ACTINT</​code>​| 
-| 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: | <code z80>​CALL ​     CTIMER</​code>​| 
-| Input: | HL = address of custom time base\\ B = value to load into time base 1 to 0 transition\\ C = counter mask as in [[interrupt scheduler#​deccts|DECCTS]] | 
-| Notes: | None | 
-| Description:​ | HL is loaded and decremented. If HL != 0, then a return is executed, otherwise, HL is loaded with B and [[interrupt scheduler#​deccts|DECCTS]] is called.\\ Registers HL, DE, BC, and AF are undefined upon exit. | 
-| Restrictions:​ | None | 
-==== DECCTS ==== 
- 
-DECREMENT COUNTERS/​TIMERS 
- 
-| Calling Sequence: | <code z80>​SYSTEM ​   DECCTS</​code>​ or <code z80>​SYSSUK ​   DECCTS 
-DB        (mask)</​code>​| 
-| 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: | <code z80>​PUSH ​     AF 
-PUSH      BC 
-PUSH      DE 
-PUSH      HL 
-CALL      STIMER 
-POP       HL 
-POP       DE 
-POP       BC 
-POP       ​AF</​code>​| 
-| 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 |