Display list

References


- Book Best of Antic Volume 1 (article Display Lists Simplified)
- Book Mapping The Atari - Revised Edition (article Memory Map)

Description


The graphics capabilities of the ATARI are controlled by a microprocessor chip called ANTIC (Alpha-Numeric Television Interface Circuit). Any display list is a program for ANTIC. There is a display list program provided automatically by each BASIC Graphics command, or you can define your own. The display list specifies where screen data is located, what display modes to use, and any special display options ANTIC is to implement. Since the display list describes the screen from top to bottom, any mix of graphics or text modes can be displayed on the screen. A memory address for the first line of the display list address is found by the BASIC command:
PEEK (560)+PEEK(561)*256.

Memory addresses, necessary for full employment of new display list


SHADOW REGISTER
DECIMAL (HEXADECIMAL)
HARDWARE REGISTER
DECIMAL (HEXADECIMAL)
LABEL DESCRIPTION
560 ($230) 54274 ($D402) SDLSTL Low byte of the starting address of display list
561 ($231) 54275 ($D403) SDLSTL High byte of the starting address of display list
559 ($22F) 54272 ($D400) SDMCTL Direct memory access (DMA) register to control the way screen is shown to the user.

Display list mode instruction table (decimal values)


BASIC MODE NUMBER ANTIC NUMBER TYPE LMS BYTE # OF MODE LINES SCAN LINES/ MODE LINE RAM BYTES/ MODE LINE
0 2 text 66 24 8 40
1 6 text 70 24 8 20
2 7 text 71 12 16 20
3 8 graphics 72 24 8 10
4 9 graphics 73 48 4 20
5 10 graphics 74 48 4 20
6 11 graphics 75 96 2 40
8 15 graphics 79 192 1 40

Display list instruction function table (decimal values)


Function is enabled when appropriate bit of display list instruction is set to 1.
BIT VALUE FUNCTION
7 128 Display List Interrupt
6 64 Load Memory Scan (LMS). Next two bytes are the LSB/MSB of the data to load.
5 32 Enable vertical fine scrolling
4 16 Enable horizontal fine scrolling
3 to 0 8 to 1 Mode (see table above)

Blank line instruction table (decimal values)


BLANK LINES DECIMAL VALUE
1 0
2 16
3 32
4 48
5 64
6 80
7 96
8 112

Definitions


ANTIC MODE NUMBER: ANTIC identifies modes with a set of numbers different from those used by BASIC. The ANTIC mode numbers corresponding to each BASIC Graphics Mode, 0 through 8, are listed in Table 2.

MODE LINE: A mode line is a grouping of scan lines into a fundamental unit for each Graphics Mode. For example, Graphics 8 uses one scan line per mode line; for Graphics 0 there are eight scan lines per mode line. Screen displays are made up of 192 scan lines grouped into mode lines (see Table 2).

LOAD MEMORY SCAN (LMS): The LMS number is the sum of the ANTIC mode number for the first mode line, plus 64. The LMS number has two functions. First, it tells ANTIC what mode will be used for the first mode line of the screen display. Second, LMS instructs ANTIC to take information from the screen memory area of RAM and display it. The next two bytes in the display list following the LMS number give ANTIC the starting address of the screen memory.

DISPLAY LIST POINTER: This is a variable that establishes the memory address for the first line of the display list. This address is found by the BASIC command: PEEK (560)+PEEK(561)*256.

JUMP WHILE VERTICAL BLANK (JVB): This signals ANTIC that the end of the display list has been reached and it must loop back to the beginning. The jump is located immediately following the last mode line of your display list and is indicated by the decimal number 65. The low byte of the return address is given by PEEK (560). The high byte of the return address is given by PEEK(561).

RAM REQUIREMENTS: The Graphics Modes differ in the number of bytes that must be set aside in memory for screen data (see Table 1).

RAM BYTES PER MODE LINE: Just as the Graphics Modes differ in their total RAM needs, they differ in the number of bytes required per mode line (see Table 2). This information is important for synchronizing the Operating System (OS) and ANTIC.