Skip to content

POM2 - RetroBIOS

Type standalone
Classification Other
Source https://github.com/habib256/pom2
Version 0.9.2
Profiled 2026-09-14
Cores pom2
Systems apple-ii
Technical notes

Apple ][, ][+, //e, //c and //c+ emulator by Arnaud Verhille, C++ with an ImGui frontend, plus a browser build and a headless CLI. Nine machine profiles (SystemProfile.cpp:32-300): Apple ][ Original, ][+, //e Unenhanced, //e Enhanced, //c, //c Plus, and PAL variants of the //e Unenhanced, //e Enhanced (the default) and //c (Le Chat Mauve).

Every file is looked up by a relative name through findResource (ResourcePaths.cpp:173-246): the per-user data directory (~/.local/share/POM2, ~/Library/Application Support/POM2, %LOCALAPPDATA%\POM2), the executable directory, its parent, ../share/POM2, then the working directory and its two parents. The first hit wins. Release packages ship the whole roms/ tree, the fonts and the two photos (packaging/bundle.manifest).

Machine firmware is a probe chain per profile, first name found wins (SystemProfile.cpp romProbeOrder, MainWindow_Slots.cpp:1458-1481): ][ Original apple2o.rom, apple2.rom ][+ apple2p.rom, apple2.rom //e Unenhanced apple2e_unenh.rom, 342-0135-b.64.rom, apple2e.rom //e Enhanced apple2e.rom //c apple2c-32Kv0.rom, apple2c-16K.rom, 3420033a.256 //c Plus apple2cp.rom, apple2c-plus.rom, apple2c-32Kv0.rom With no candidate the machine runs on a $D000-$FFFF stub and the Welcome panel opens (MainWindow.cpp:318-326). A first run with no //e image falls back to the ][+ chain (MainWindow.cpp:223-236). Memory::loadAppleIIRom (Memory.cpp:174-224) maps 12 KB at $D000, 16 KB at $C000, skips the 4 KB pad of a 20 KB ][+ dump, and slices a 32 KB dump by profile: //e images carry the firmware in the upper half, //c and //c+ images are two firmware banks with bank 0 in the lower half (SystemProfile.cpp:432).

Character generators follow charRomProbeOrder per profile, or the locale picked in the toolbar (CharRomCatalog.cpp:42-79, MainWindow_Slots.cpp: 1489-1505). Memory::loadCharRom accepts 2 KB, 4 KB and 8 KB dumps (Memory.cpp:313-345); an 8 KB dump is two 4 KB banks, loaded as one bank or kept dual-bank with annunciator 2 selecting the live set.

Peripheral ROMs are read when the card is plugged (SlotCardFactory.cpp). The Disk II carries the 341-0027-A boot PROM and the 16-sector P6 sequencer built in (DiskIICard.cpp:135-150). CFFA, Liron, Workstation and the MC68705 mouse card leave the slot empty without their dump; Grappler+, ThunderClock+ and TransWarp run a synthetic ROM instead. The catalogue behind the ROM Status panel (RomCatalog.h) lists every name in probe order with the size the loader enforces and, where POM2 vouches for a dump, its CRC32; the panel hashes each present file (RomStatus_ImGui.cpp:169-181, 306).

Help > Download missing ROMs (RomFetch.cpp:61-141) fetches 18 dumps with curl from raw.githubusercontent.com/Abdess/retrobios and installs a download only when its size, CRC32 and SHA-256 match the catalogue (RomFetch.cpp:398-431); a present local file is re-checked with the same gate (RomFetch.cpp:583-603). Unavailable in the browser build.

The floppy mechanical sounds are MAME's samples/floppy set, read from roms/floppy_samples/ as two banks of ten WAV files prefixed 525_ and 35_ (FloppySoundDevice.cpp:80-118, MainWindow.cpp:335-348); a missing sample is logged and the drive stays silent.

Media named by the code are not firmware and are not listed here: the browser demo boots floppyemu/DIX.po (wasm/shell.html:89) or, when the shell passes no disk, floppyemu/Total Replay v6.1.hdv (main.cpp:281-285); the headless CLI mounts disks_5.4/dos33_master.dsk by default (pom2_headless.cpp:263). Disk, tape and hard-disk images are browsed from disks_5.4/, disks_3.5/, hdv/, floppyemu/, cassettes/ and prodos_folder/ next to the executable.

60 files | 1 required, 59 optional | 58 in repo, 2 missing Categories: 36 BIOS, 24 game data

apple2o.rom optional in repo
Apple ][ Original monitor and Integer BASIC, $D000-$FFFF

apple2.rom optional in repo
Apple ][ generic 12 KB fallback, Autostart monitor and Applesoft

apple2p.rom optional in repo
Apple ][+ Autostart monitor and Applesoft, 4 KB pad then $C000-$FFFF

  • Path: roms/apple2p.rom
  • SHA1: 29a53f3bb158...
  • Priority: 1
  • Validation: size
  • Source: src/SystemProfile.cpp:54, src/Memory.cpp:209-219, src/RomFetch.cpp:69-79
  • Size options: 12.0 KB, 20.0 KB
  • First candidate of the ][+ profile and of the first-run fallback (MainWindow.cpp:234). The loader drops the leading 4 KB of a 20 KB dump. The fetcher builds a 12 KB image from the six 2 KB chips of the MAME apple2p set and accepts either size as present; it carries no digest for this file.

apple2e.rom required in repo
Apple //e Enhanced firmware, 32 KB dump with the 16 KB firmware in the upper half

apple2e_unenh.rom optional in repo
Apple //e Unenhanced firmware, 4 KB internal $Cx00 ROM then $D000-$FFFF

apple2c-32Kv0.rom optional in repo
Apple //c two-bank firmware, bank 0 in the lower 16 KB

apple2c-16K.rom optional in repo
Apple //c ROM 255, 16 KB, MAME apple2c a2c.128

3420033a.256 optional in repo
Apple //c ROM 0, UniDisk 3.5 firmware, MAME apple2c0 342-0033-A

  • Path: roms/3420033a.256
  • Size: 32.0 KB
  • SHA1: 10767e96cc17...
  • CRC32: c8b979b3
  • Priority: 3
  • Source: src/SystemProfile.cpp:142-143
  • Third candidate of the //c chain.

apple2cp.rom optional in repo
Apple //c Plus two-bank firmware, MAME apple2cp 341-0625-a.256

apple2_char.rom optional in repo
Apple ][ and ][+ character generator, 2 KB uppercase set

apple2e_char.rom optional in repo
Apple //e Enhanced character generator 342-0265-A, 4 KB with MouseText

apple2e_char_us_unenh.rom optional in repo
Apple //e Unenhanced character generator 342-0133-A, 4 KB

apple2e_char_fr.rom optional in repo
Apple //e French character generator, 4 KB

apple2e_char_frca.rom optional in repo
Apple //e French Canadian Enhanced character generator, 4 KB

apple2e_char_uk.rom optional in repo
Apple //e UK Enhanced character generator 342-0273-A, 4 KB

apple2e_char_uk_unenh.rom optional in repo
Apple //e UK Unenhanced character generator 341-0160-A, 4 KB

apple2e_char_de.rom optional in repo
Apple //e German character generator 341-0161-A, 4 KB

apple2e_char_de_improved.rom optional in repo
Apple //e German Improved character generator, 4 KB

342-0274-a.e9 optional in repo
Apple //e international video ROM 342-0274-A, 8 KB, French Canadian bank then US bank, MAME apple2eefr

apple2e_char_ft_blockascii.rom optional in repo
French Touch Block ASCII dual-bank character generator, 8 KB

  • Path: roms/apple2e_char_ft_blockascii.rom
  • Size: 8.0 KB
  • SHA1: f79815457437...
  • CRC32: 1eae3944
  • Validation: size
  • Source: src/CharRomCatalog.cpp:77-78, src/Memory.cpp:313-345
  • Locale picker entry loaded dual-bank: annunciator 2 flips between the text set and the block glyphs.

Videx Lower Case Chip ROM.bin optional in repo
Videx LOWER CASE CHIP character generator for the ][ and ][+, 2 KB

disk2.rom optional in repo built-in fallback
Disk II 16-sector boot PROM 341-0027-A

diskii_p6.rom optional in repo built-in fallback
Disk II 16-sector P6 logic state sequencer PROM 341-0028-A

disk2_13.rom optional in repo
Disk II 13-sector boot PROM 341-0009

diskii_p6_13.rom optional in repo
Disk II 13-sector P6 logic state sequencer PROM 341-0010

cffa20eec02.bin optional in repo
CFFA 2.0 firmware, 65C02 build

cffa20ee02.bin optional in repo
CFFA 2.0 firmware, 6502 build

mouse_341-0270-c.bin optional in repo
AppleMouse II card slot EPROM 341-0270-C

mouse_341-0269.bin optional in repo
AppleMouse II card MC68705P3 MCU mask ROM 341-0269

grappler_plus.bin optional in repo
Orange Micro Grappler+ parallel printer EPROM 3.2

ae_transwarp_1.4.bin optional in repo
Applied Engineering TransWarp accelerator ROM v1.4, MAME warprom

thunderclock_u9_v1.3.bin optional in repo
Thunderware ThunderClock+ slot ROM rev 1.3, U9

  • Path: roms/thunderclock_u9_v1.3.bin
  • SHA1: 60f434f53258...
  • Aliases: thunderclock_u9.bin, thunderclock.rom, Thunderware_REV_1.3_ROM_U9.bin
  • Validation: size
  • Source: src/ClockCard.cpp:469-524, src/RomCatalog.h:150-160
  • Size options: 256 B, 2.0 KB
  • A 2 KB dump supplies the $C800 expansion ROM as well. The first four even bytes must read $08, $28, $58, $70, the ProDOS clock signature, or the synthetic ROM stays in place.

liron.rom optional in repo
Apple Liron SmartPort controller firmware, 4 KB

341-0358-A.bin optional in repo
Apple II Workstation Card firmware 341-0358-A, 64 KB

341-0438-a.bin optional in repo
Apple II 3.5 Disk Controller SuperDrive firmware 341-0438-A, MAME a2superdrive

342-0326-a.f12 optional in repo
Apple //e French keyboard decode ROM 342-0326-A, MAME apple2eefr

525_seek_2ms.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, 2 ms head seek

525_seek_6ms.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, 6 ms head seek

525_seek_12ms.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, 12 ms head seek

525_seek_20ms.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, 20 ms head seek

525_spin_empty.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, motor running, no disk

525_spin_loaded.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, motor running, disk loaded

525_spin_start_empty.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, motor start, no disk

525_spin_start_loaded.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, motor start, disk loaded

525_spin_end.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, motor stop

525_step_1_1.wav optional in repo game_data
MAME floppy sample, 5.25 inch drive, single track step

35_seek_2ms.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, 2 ms head seek

35_seek_6ms.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, 6 ms head seek

35_seek_12ms.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, 12 ms head seek

35_seek_20ms.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, 20 ms head seek

35_spin_empty.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, motor running, no disk

35_spin_loaded.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, motor running, disk loaded

35_spin_start_empty.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, motor start, no disk

35_spin_start_loaded.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, motor start, disk loaded

35_spin_end.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, motor stop

35_step_1_1.wav optional in repo game_data
MAME floppy sample, 3.5 inch drive, single track step

DejaVuSans.ttf optional in repo game_data bundled
DejaVu Sans, the frontend text font

  • Path: fonts/DejaVuSans.ttf
  • Size: 741.9 KB
  • SHA1: 3061cf7af257...
  • Source: src/main.cpp:522-535
  • Falls back to the system DejaVu, Arial Unicode or Segoe UI, then to the ImGui bitmap font.

fa-solid-900.ttf optional in repo game_data bundled
Font Awesome 6 Free Solid, the frontend icon font

  • Path: fonts/fa-solid-900.ttf
  • Size: 416.1 KB
  • SHA1: 0c8c9706abc0...
  • Source: src/main.cpp:582-600
  • Without it every icon renders as an empty box.

Apple_II_plus.jpg optional missing game_data bundled
Apple ][+ photograph shown in Help > About

Keyboard_AppleIIe.jpeg optional missing game_data bundled
Apple //e keyboard photograph the clickable keyboard window is built on

  • Path: pic/Keyboard_AppleIIe.jpeg
  • Size: 775.6 KB
  • SHA1: a178f3766107...
  • Source: src/MainWindow_MiscPanels.cpp:480
  • The window hotspots are fractions of this image; without it the window has nothing to click.

Generated on 2026-09-14T09:03:10Z