Alphanumeric Television Interface Controller
) is an early video system chip used in the Atari 8-bit family
The Atari 8-bit family is a series of 8-bit home computers manufactured from 1979 to 1992. All are based on the MOS Technology 6502 CPU and were the first home computers designed with custom coprocessor chips...
A microcomputer is a computer with a microprocessor as its central processing unit. They are physically small compared to mainframe and minicomputers...
s as well as the Atari 5200
The Atari 5200 SuperSystem, commonly known as the Atari 5200, is a video game console that was introduced in 1982 by Atari Inc. as a higher end complementary console for the popular Atari 2600...
in the 1980s. The chip was patented by Atari, Inc. in 1981. ANTIC corresponded roughly to the graphics chips in other home computer
Home computers were a class of microcomputers entering the market in 1977, and becoming increasingly common during the 1980s. They were marketed to consumers as affordable and accessible computers that, for the first time, were intended for the use of a single nontechnical user...
s of the era, with the related CTIA/GTIA providing additional support for color modes and sprite
In computer graphics, a sprite is a two-dimensional image or animation that is integrated into a larger scene...
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 LSI ASIC
ASIC may refer to:* Application-specific integrated circuit, an integrated circuit developed for a particular use, as opposed to a customised general-purpose device.* ASIC programming language, a dialect of BASIC...
dedicated to generating 2D computer graphics
2D computer graphics is the computer-based generation of digital images—mostly from two-dimensional models and by techniques specific to them...
to be shown on a television
Television is a telecommunication medium for transmitting and receiving moving images that can be monochrome or colored, with accompanying sound...
screen or computer display
A monitor or display is an electronic visual display for computers. The monitor comprises the display device, circuitry, and an enclosure...
. Atari advertised it as a "true microprocessor", in that it has an instruction set
An instruction set, or instruction set architecture , is the part of the computer architecture related to programming, including the native data types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O...
to run programs (called display list
A display list is a series of graphics commands that define an output image. The image is created by executing the commands....
s) to process data
The term data refers to qualitative or quantitative attributes of a variable or set of variables. Data are typically the results of measurements and can be the basis of graphs, images, or observations of a set of variables. Data are often viewed as the lowest level of abstraction from which...
. Nonetheless ANTIC has no capacity for writing back computed values to memory, it merely reads data from memory and processes it for output to the screen, therefore it does not qualify as a Turing machine
A Turing machine is a theoretical device that manipulates symbols on a strip of tape according to a table of rules. Despite its simplicity, a Turing machine can be adapted to simulate the logic of any computer algorithm, and is particularly useful in explaining the functions of a CPU inside a...
in the mathematical sense of an abstracted computation device.
The display list
The display list and the display data are written into RAM
Random access memory is a form of computer data storage. Today, it takes the form of integrated circuits that allow stored data to be accessed in any order with a worst case performance of constant time. Strictly speaking, modern types of DRAM are therefore not random access, as data is read in...
by a 6502
The MOS Technology 6502 is an 8-bit microprocessor that was designed by Chuck Peddle and Bill Mensch for MOS Technology in 1975. When it was introduced, it was the least expensive full-featured microprocessor on the market by a considerable margin, costing less than one-sixth the price of...
The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...
. The ANTIC retrieves that information from RAM using a technique known as direct memory access (DMA)
Direct memory access is a feature of modern computers that allows certain hardware subsystems within the computer to access system memory independently of the central processing unit ....
. 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
Color Television Interface Adaptor and its successor Graphic Television Interface Adaptor are custom chips used in the Atari 8-bit family of computers and in the Atari 5200 console. In these systems, a CTIA or GTIA chip works together with ANTIC to produce video display...
, 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.