APPENDIX ONE

VBLANK Processes

The VBLANK routines are all documented in the OS listings, pages 35 to 38. In the "A" ROMs, they are processed in locations 59345 to 59665 ($E7D1 to $E911). In the "B" ROMs, they are processed at 59310 to 59628 ($E7AE to $E8EC). See also De Re Atari for more explanation.

Stage 1 VBLANK:

Performed every VBI: 1) Increment the realtime clock at 18 - 20 ($12-$14) 2) Process the attract mode variables (location 77; $4D) 3) Decrement system timer one at 536 ($218) and if zero JSR through 550 ($226).

Stage 2 VBLANK:

Performed every VBI which does not interrupt critical sections: 1) Update the hardware registers from the shadows as follows: Shadow: Hardware: Update reason: SDLISTL/H DLISTL/H DISPLAY LIST END SDMCTL DMACTL CHBAS CHBASE CHACT CHACTL GPRIOR PRIOR COLOR0-4 COLPF0-4,BAK ATTRACT MODE PCOL0-3 COLPM0-3 LPCNV/H PENV/H LIGHT PEN STICK0-1 PORTA JOYSTICKS PTRIG0-3 PORTA PADDLE TRIGGERS STICK2-3 PORTB PTRIG4-7 PORTB PADDL0-7 POT0-7 PADDLES STRIG0-3 TRIG0-3 JOYSTICK TRIGGERS .... CONSOL CONSOLE SPEAKER OFF 2) System timers two to five (locations 540,542,544; $21C,$21E,$220) are decremented and if the value is zero, the corresponding flags are set. A JSR is made through 552 ($228) if timer two equals zero. 3) A character is read from POKEY keyboard register at 53769 ($D209) and read into CH at 764 ($2FC) if the auto-repeat is active. 4) The keyboard debounce counter is decremented by one if it is not zero and if no key is being pressed. 5) Keyboard auto-repeat logic is processed. 6) Exit the VBLANK routine through 58466 ($E462).

Return to Table of Contents | Previous Chapter | Next Chapter