Instant-boot Atari 400 / 800 / XL / XE / 5200 emulator for Raspberry Pi. No Linux, no operating system — the kernel image runs directly on the hardware and boots straight into an Atari 8-bit computer in ~1 second.
Heavily inspired by BMC64 (Commodore 64 baremetal port). Built on top of:
- Circle — bare-metal library for the Raspberry Pi
- atari800 — the open-source Atari 8-bit / 5200 emulator, wrapped via
libatari800
Download the latest release — it contains a ready-to-use SD card layout:
- Format an SD card as FAT32.
- Extract
bma8-*-sdcard.zipand copy its contents to the SD card root. - Insert into a Raspberry Pi Zero, connect HDMI, power on.
You will get an Atari 800 XL BASIC READY prompt in about a second.
To play games, drop a .CAR, .ROM, .XEX or .ATR onto the SD card as GAME.*.
Currently tested on Raspberry Pi Zero (v1.3, BCM2835). Should be adaptable to Pi 2/3/4 with a Circle rebuild for the target model.
Working:
- Instant boot to Atari OS (Altirra XL OS by default, real Atari ROMs if provided on the SD card)
- HDMI video (384×240 native, 60Hz NTSC)
- HDMI audio (POKEY → VCHIQ)
- USB keyboard (letters, numbers, punctuation, arrow keys, F-keys mapped to OPTION/SELECT/START/FIRE)
- USB joystick emulation via arrow keys + F1
- Cartridge loading (
.ROM/.CAR, 8 KB and 16 KB standard types) - Basic disk loading (
.ATR)
Known limitations:
- Copy-protected ATX images generally do not boot (SIO timing fidelity)
- No on-screen menu yet — file selection is by fixed filename priority in
src/kernel.cpp - Backlight brightness / display auto-scaling not tuned
- 5200 mode present but joystick mapping is not final
Format the card as FAT32 and copy the following:
/bootcode.bin (from Raspberry Pi firmware)
/start.elf
/fixup.dat
/config.txt (see the config.txt in this repo)
/kernel.img (produced by `make`)
/ATARIXL.ROM (16 KB, optional — real Atari 800 XL/XE OS)
/ATARIBAS.ROM (8 KB, optional — real Atari BASIC)
/GAME.CAR (optional cartridge)
/GAME.ATR (optional disk image)
If ATARIXL.ROM is missing, the emulator falls back to the built-in Altirra XL replacement OS, which is included with atari800 and is freely redistributable.
Requires macOS or Linux, GNU make, autoconf/automake, and the Arm GNU Toolchain.
./scripts/fetch_deps.sh # clones Circle-stdlib and atari800
./scripts/build.sh # builds libatari800.a and kernel.imgkernel.img will appear in the repository root when the build succeeds.
| PC key | Atari key / function |
|---|---|
| A–Z, 0–9, symbols | Atari keyboard |
| Space / Enter / Tab / Esc / Backspace | Same |
| Arrow keys | Cursor + joystick 0 direction |
| F1 | Joystick 0 fire |
| F2 | OPTION |
| F3 | SELECT |
| F4 | START |
| F5 | Joystick 1 fire |
- Randy Rossi — BMC64, the inspiration and architectural blueprint
- Rene Stange — Circle
- Petr Stehlík, Piotr Fusik and the atari800 team — atari800 emulator
- Avery Lee — Altirra OS/BASIC replacement ROMs
GPL v2, matching atari800 upstream. See LICENSE.