← All Hardware

TIA

Atari · 1977 · Television Interface Adaptor

A graphics chip with no frame buffer — it holds a single scanline at a time, forcing the CPU to rewrite its registers in the gap between lines. Programmers called it "racing the beam".

The TIA, designed by a team led by Jay Miner, is the chip that made the Atari 2600 cheap enough to exist and hellish enough to program. RAM in 1977 was expensive, so Atari simply did not include enough of it to hold a screen. The TIA has registers for exactly one scanline of display — no frame buffer, no screen memory, nothing to compose an image in. What appears on the television is generated line by line, in real time, as the electron beam sweeps across the tube. The consequence is one of the strangest programming models in computing history. The 6502 loads the TIA's registers with the data for the first line. The TIA waits for the television to be ready, reads the registers, and emits the signal for that line. Then, during the horizontal blanking interval — the brief moment while the beam retraces to the left edge — the CPU must rewrite every register it needs to change before the next line is drawn. Miss the window and the picture is wrong. There is no way to fall behind and catch up; the television does not wait. Every 2600 game is therefore a program written in lockstep with a cathode ray tube, and the entire visual repertoire of the console — the mid-screen colour changes, the impossible-looking effects, the flickering when too many objects share a line — is a direct consequence of what a 6502 can and cannot do in the time it takes a beam to travel back across a screen. Miner went on to expand the approach into the ANTIC, CTIA/GTIA and POKEY chips for the Atari 8-bit computers, and later to lead the design of the Amiga's custom chipset.

Used In: Atari 2600 (VCS)
Frame bufferNone — one scanline of registers
Sprites2 players, 2 missiles, 1 ball
Playfield20 bits, mirrored or repeated across the screen
Audio2 channels, 4-bit volume
CPU couplingRegisters rewritten during horizontal blank ("racing the beam")