A zone of playfield on the screen can be scrolled upward by using VSCROL and bit 5 of the display list instruction. The display blocks at the upper and lower boundaries of the zone must have a variable vertical size. In particular, the first display block within that zone must be shortened from the top, and the last display block must be shortened from the bottom (i.e. not all of the top and bottom blocks will be displayed).
The vertical dimension of each display block is controlled by a 4 bit counter within the ANTIC, called the Delta Counter' (DCTR). Without vertical scrolling, it starts at 0 on the first line, and counts up to a standard value, determined by the current display instruction. (Ex: for upper and lower case text display, the end value is 9. For 5 color character displays, it is 7 or 15.)
If bit 5 of the instruction remains unchanged between consecutive display blocks, then the second block is displayed in the normal fashion. If bit 5 of the instruction goes from 1 to 0 between two consecutive display blocks, the second block will start with Delta = 0, as usual, but will count up until delta VSCROL, instead of the standard value. This shortens that display block from the bottom.
To define a vertically scrolled zone, the most direct method is to set bit 5 to 1 in the first display instruction for that zone, and in all consecutive blocks but the last one. If the VSCROL register is not rewritten on the fly, this results in a total scrolled zone that has a constant number of lines (provided that the VSCROL value does not exceed the standard individual block size). If N is the standard block size, the top block will be N-VSCROL lines (N > VSCROL ), and the last block will be VSCROL + 1 lines: (N-VSCROL) + (VSCROL+1) = N+1. Shown on the following page is an example of a scrolled zone, top block, for 8 VSCROL values for N = 8.
Bit 5 | VSCROL =0 |
VSCROL =1 |
VSCROL =2 |
VSCROL =3 |
VSCROL =4 |
VSCROL =5 |
VSCROL =6 |
VSCROL =7 |
|
0 | |||||||||
1 | |||||||||
1 | |||||||||
0 |