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
Last revision Both sides next revision
system_routines:human_interface [2016/06/05 16:26]
ex_writer [MSKTD]
system_routines:human_interface [2016/06/11 12:43]
ex_writer [DOIT]
Line 43: Line 43:
 Mode 01 and 10 expect the returned-to point to be interpretive;​ mode 00 expect it to be machine instructions. Mode 01 and 10 expect the returned-to point to be interpretive;​ mode 00 expect it to be machine instructions.
  
-//Return code// (byte 0, bit 0–5) ​<wrap help>from SENTRY?</​wrap>​+//Return code// (byte 0, bit 0–5) from [[#SENTRY]] routine (e.g., ST0, SJ1, SCT7, etc.)
  
 //Handler address// (bytes 1 and 2) contains the address of the handling routine. //Handler address// (bytes 1 and 2) contains the address of the handling routine.
Line 49: Line 49:
 End of list is indicated by a terminator byte that is greater than or equal to $C0. End of list is indicated by a terminator byte that is greater than or equal to $C0.
  
-See [[human interface#​keyboard input example|Keyboard Input Example]] below for example [[#sentry|SENTRY]] and DOIT usage.+---- 
 + 
 +=== Example: Football DOIT Table === 
 + 
 +<code z80> 
 +;​********** 
 +;* 
 +;*   ​Player Input Transition Table 
 +;* 
 +
 +DOTABLE: ​ RC    SCT7,​DOCT7,​0 ​  ; CT7 
 +          RC    ST0,​DOTRIG0,​0 ​ ; TRIGGER 0 
 +          RC    ST1,​DOTRIG1,​0 ​ ; TRIGGER 1 
 +          RC    SP0,​DOKNOB0,​0 ​ ; Pot. 0 
 +          RC    SP1,​DOKNOB1,​0 ​ ; Pot. 1 
 +          RC    SJ0,​DOJOY0,​0 ​  ; Joystick 0 
 +          RC    SJ2,​DOJOY2,​0 ​  ; Joystick 2 
 +          RC    SJ3,​DOJOY3,​0 ​  ; Joystick 3 
 +          RC    SJ1,​DOJOY1,​ENDx ​ ; Joystick 1 
 +</​code>​ 
 + 
 +Also see the [[human interface#​keyboard input example|Keyboard Input Example]] below for example [[#SENTRY]] and DOIT usage.
 ==== DOITB ==== ==== DOITB ====
  
Line 169: Line 190:
 DB        (number of interrupts)</​code>​| DB        (number of interrupts)</​code>​|
 | Arguments: | B = number of interrupts to wait | | Arguments: | B = number of interrupts to wait |
-| Description:​ | This routine pauses for a specified number of interrupts. If used with [[interrupt scheduler#​actint|ACTINT]],​ a value of 60 = 1 second. This routine does an EI upon entry and assumes interrupts will occur. ​ |+| Description:​ | This routine pauses for a specified number of interrupts. If used with [[interrupt scheduler#​actint|ACTINT]],​ a value of 60 = 1 second. This routine does an EI (enable interrupt) ​upon entry and assumes interrupts will occur. ​ |
  
 ==== PIZBRK ==== ==== PIZBRK ====
Line 196: Line 217:
 | Arguments: | DE = Keypad mask table | | Arguments: | DE = Keypad mask table |
 | Output: | A = Return code\\ B = Extended code (see output chart below) | | Output: | A = Return code\\ B = Extended code (see output chart below) |
-| Description:​ | SENTRY checks for changes in the potentiometers (pots), control handles, triggers, keypad, [[:​glossary#​s|semaphores]] (i.e., flags), and counters/​timers. It also takes care of blackout, the automatic blacking-out of the screen after 255 seconds without a change. If SENTRY isn't called, then the game will not black out.\\ \\ SENTRY checks if TIMOUT equals zero on entry, and if zero, it goes to PIZBRK. If a key has gone down or a control handle changed, then TIMOUT is set to $FF.\\ \\ HL should point at a keypad mask. The keypad consists of 6 rows by 4 columns.\\ \\ Example mask of 0–9 only:\\ <code z80>+| Description:​ | SENTRY checks for changes in the potentiometers (pots), control handles, triggers, keypad, [[:​glossary#​s|semaphores]] (i.e., flags), and counters/​timers. It also takes care of blackout, the automatic blacking-out of the screen after 255 seconds without a change. If SENTRY isn't called, then the game will not black out.\\ \\ SENTRY checks if TIMOUT equals zero on entry, and if zero, it goes to [[#PIZBRK]]. If a key has gone down or a control handle changed, then TIMOUT is set to $FF.\\ \\ HL should point at a keypad mask. The keypad consists of 6 rows by 4 columns.\\ \\ Example mask of 0–9 only:\\ <code z80>
 DB      011100B DB      011100B
 DB      111100B DB      111100B
Line 202: Line 223:
 DB      000000B</​code>​ | DB      000000B</​code>​ |
  
-The keypad mask is arranged as follows:+=== Keypad Mask Layout ===
  
 {{:​keypad_mask.png}} {{:​keypad_mask.png}}
  
-Sentry output chart:+=== SENTRY Output Chart ===
  
 ^ Priority ^ A = ^ Meaning ^ B = ^ ^ Priority ^ A = ^ Meaning ^ B = ^