:"This article refers to the display chip. For the football manager, see
Radomir Antić. For the magazine, see Antic (magazine)."
ANTIC ("Alpha-Numeric Television Interface Circuit" or "Alpha-Numeric Television Interface Controller") is an early video system chip used in the
Atari 8-bit familyof microcomputers as well as the Atari 5200in the 1980s.
ANTIC's most notable features are:
*14 different graphics/text modes
*Display modes can be mixed onscreen
*Non-fixed screen RAM. Allows screen RAM to be located almost anywhere in memory. This allows for easy page-flipping, scrolling and other effects.
ANTIC is a
microprocessordedicated to generating 2D computer graphicsto be shown on a televisionscreen or computer display. It is a true microprocessor, in that it has an " instruction set" to run "programs" (called " display lists") to process " data".
The display list
The display list and the display data are written into RAM by a 6502-compatible CPU. The ANTIC retrieves that information from RAM using a technique known as direct memory access (DMA). It processes the higher level instructions in the display list and translates these instructions into a real-time stream of simpler instructions to the CTIA chip, a combination providing for 12 graphics modes. With the more advanced GTIA, 16 modes are available.
ANTIC has four types of instructions:
*Map mode - display colored pixels
*Character mode - display character data
*Blank line - display horizontal blank lines (solid color)
*Two jump instructions - reload ANTIC's program counter (3-byte instructions)
One of the jump instructions is a simple JMP - it transfers the display list execution to another place within the 64k address space. The other one, JVB (Jump on Vertical Blank) instruction is placed at the end of the "display list". Its role is to get the display list execution in sync with the Vertical Blanking. The JVB's argument usually points to the beginning of the same display list, but it of course can also point to another display list, so that a chain of display lists, executed after consecutive blanking pulses, is formed.
Each instruction has additional options by setting specific bits:
*DLI - Display list interrupt
*Load Memory Scan (LMS) - Loads address of graphics/character data (3-byte instruction)
*Vertical scrolling - Enables vertical fine scrolling
*Horizontal scrolling - Enables horizontal fine scrolling
Combining the bitmap mode instruction with LMS attribute makes it possible to set the screen memory address freely within the 64K address space "independently for each display line". In other words, the screen memory does not have to be a solid memory area scanned sequentially towards higher addresses - only a single line must cover a continuous area of memory, usually consisting of 32, 40 or 48 bytes.
The vertical extent of the entire display can vary between 0 and 240 scanlines - this depends on what number of lines the ANTIC is programmed to display according to the display list. The horizontal width of the screen can be programmed to be 256, 320 or 384 pixels wide (in that last mode, only 352 pixels are really visible).
Although ANTIC's program counter is 16-bit, only 10 bits are changed during normal (i.e. sequential) execution of the display list. This means the "display list" need a JMP (Jump) instruction to cross a 1K boundary. This is not a serious limitation, because the size of a single display list usually varies from 32 to 202 bytes, and virtually never exceeds 720 bytes. Since it can be located anywhere in the memory, there is no trouble in finding a place for it, that does not cross a 1K boundary.
Also the Memory Scan Register, a register addressing the data stored in the screen memory, is 16-bit, but only 12 bits are changed when ANTIC is sequentially scanning the video memory. Thus an LMS (Load Memory Scan) instruction is needed for data crossing a 4K boundary. High resolution graphic modes usually need more than one LMS instruction within the display list to be displayed properly.
The character generator can be located anywhere in the memory, but, depending on the display mode used, it has to be aligned to a 512-byte or a 1K boundary.
Display list example program
Type the following program at the BASIC prompt (typically the word "READY"), terminating each line by pressing the Enter (or Return) key. Run it by typing "RUN" and pressing Enter. When the program has finished running, type "PRINT USR(30720)" and hit Enter. The program should display a green pixel in BASIC graphics mode 3, and lines in BASIC mode 0.
10 FOR N=30720 TO 30829 20 READ D 30 POKE N,D 40 NEXT N 50 DATA 169,112,141,0,128,141,1,128 60 DATA 141,2,128,169,66,141,3,128 70 DATA 169,0,141,4,128,169,130 80 DATA 141,5,128,169,2,141,6,128 90 DATA 141,7,128,169,72,141,8,128 100 DATA 169,0,141,9,128,169,140 110 DATA 141,10,128,169,8,141,11,128 120 DATA 141,12,128,141,13,128,141,14 130 DATA 128,169,65,141,15,128,169,0 140 DATA 141,16,128,169,128,141,17,128 150 DATA 169,0,141,48,2,169,128,141 160 DATA 5,141,6,150,169,150,141,7,150 170 DATA 5,141,6,150,169,150,141,7,150 180 DATA 169,2,141,11,140,5,150
List of home computers by video hardware
* [http://www.atariarchives.org/dere/ De Re Atari] by Chris Crawford
* [http://www.atariarchives.org/mapping/ Mapping the Atari, Revised Edition] by Ian Chadwick
* [http://homepage.ntlworld.com/kryten_droid/Atari/800XL/atari_hw/antic.htm ANTIC Chip data sheet]
* [http://homepage.ntlworld.com/kryten_droid/Atari/800XL/atari_hw/cgia.htm CGIA Chip data sheet]
Wikimedia Foundation. 2010.