Skip to content
serkantanriverdiPublic

About

Baremetal Atari 8-bit emulator for Raspberry Pi (400/800/XL/XE/5200). Instant boot, no OS. Inspired by BMC64.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

BMA8 — Baremetal Atari 8-bit

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

Quick start (no build required)

Download the latest release — it contains a ready-to-use SD card layout:

  1. Format an SD card as FAT32.
  2. Extract bma8-*-sdcard.zip and copy its contents to the SD card root.
  3. 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.*.

Status

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

SD card layout

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.

Building

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.img

kernel.img will appear in the repository root when the build succeeds.

Keyboard mapping

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

Credits

  • 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

License

GPL v2, matching atari800 upstream. See LICENSE.

About

Baremetal Atari 8-bit emulator for Raspberry Pi (400/800/XL/XE/5200). Instant boot, no OS. Inspired by BMC64.

Topics

Resources

Stars

23 stars

Watchers

5 watching

Forks

Releases

Packages

Contributors

Languages