Skip to content

Atari 400/800, XL and XE ​

The Atari 8-bit computers use the 6502 family (CPU families). ANTIC runs a display list and takes DMA cycles from the CPU on each line. Display list interrupts change the picture part way down the screen. Game logic on these machines often depends on exact cycle timing.

Atari 400, 800, XL and XE ​

Hardware ​

ModelLaunch
400 and 800November 1979
XL rangeFrom 1983
XE rangeFrom 1985, to 1987
FactValue
CPU6502B or SALLY 6502C, 1.79 MHz (NTSC) or 1.77 MHz (PAL)
RAMUp to 128 KB, banked on the 130XE
VideoANTIC runs a display list with one instruction per mode line; CTIA or GTIA does colour and player/missile graphics
Sound and I/OPOKEY does sound, the keyboard and serial I/O

Source: Wikipedia: Atari 8-bit.

The details below are (not confirmed) (Altirra Hardware Reference Manual).

  • Banking on the 130XE uses PIA PORTB at $D301, with a 16 KB window at $4000.
  • Display list interrupts are enabled through NMIEN.
  • ANTIC DMA steals cycles on each line.

How games were made and loaded ​

Cartridges were common on the Atari. Games also came on tape and disk.

Media and image formats ​

The formats below are (not confirmed).

FormatWhat it holds
ATRA sector image
XEXA DOS executable
CASA tape
ATXA protected-disk image with timing and weak sectors

Tools ​

  • Altirra has a debugger and ships its own hardware reference (virtualdub.org/altirra.html).
  • Ghidra has the 6502 built in. Its ADC p-code is not exact (arithmetic traps). Unicorn has no 6502. Use py65, mos6502 or floooh/chips for ground truth.

AtariAge is the main community forum (atariage.com).

Projects to learn from ​

None listed yet.

For an exact reimplementation ​

  • Record the display list and every display list interrupt. Together they set the mode and colours of each screen line.
  • Model the cycles ANTIC DMA takes on each line if game logic depends on CPU time.
  • Record the PORTB bank state for each code region on a 130XE.
  • Record whether the build is PAL or NTSC. PAL and NTSC versions are often separate builds.
  • Keep the ATX image as the record of a protected disk.

Code: Apache 2.0. Content: CC0 1.0. No game material: bring your own copy.