emulator: POM2 type: standalone core_classification: other source: "https://github.com/habib256/pom2" upstream: "https://github.com/habib256/pom2" profiled_date: "2026-09-14" source_commit: "78aa14c1135ea9eaf3e68f09d624fab788aab236" core_version: "0.9.2" display_name: "Apple - Apple II (POM2)" cores: - pom2 systems: - apple-ii mode: standalone 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. files: - name: "apple2o.rom" path: "roms/apple2o.rom" description: "Apple ][ Original monitor and Integer BASIC, $D000-$FFFF" required: false priority: 1 size: 12288 sha256: "68d9db6bb4c305d40c3fa89fa0f2d7b7f71516a9431e3138859f23bc5bddb2d1" sha1: "78008be557f643e956a106121bcc182c0fb9ea6d" validation: [size, sha256] source_ref: "src/SystemProfile.cpp:38, src/Memory.cpp:174-224, src/RomFetch.cpp:61-63" note: "First candidate of the Apple ][ Original profile; apple2.rom is probed next." - name: "apple2.rom" path: "roms/apple2.rom" description: "Apple ][ generic 12 KB fallback, Autostart monitor and Applesoft" required: false priority: 2 size: 12288 sha256: "fc3e9d41e9428534a883df5aa10eb55b73ea53d2fcbb3ee4f39bed1b07a82905" sha1: "33a24f5489ba9195b44be77d9afb2252594cb5c7" validation: [size, sha256] source_ref: "src/SystemProfile.cpp:38, src/SystemProfile.cpp:54, src/MainWindow_Slots.cpp:1470-1477, src/RomFetch.cpp:65-67" note: "Probed after the profile image for the ][ and ][+ profiles. When it resolves in place of that image the loader logs that the ROM identity may not match the machine." - name: "apple2p.rom" path: "roms/apple2p.rom" description: "Apple ][+ Autostart monitor and Applesoft, 4 KB pad then $C000-$FFFF" required: false priority: 1 size_options: [12288, 20480] sha1: "29a53f3bb158b160433369e8e4a1d7cd5bf68ac6" validation: [size] source_ref: "src/SystemProfile.cpp:54, src/Memory.cpp:209-219, src/RomFetch.cpp:69-79" note: "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." - name: "apple2e.rom" path: "roms/apple2e.rom" description: "Apple //e Enhanced firmware, 32 KB dump with the 16 KB firmware in the upper half" required: true priority: 1 size: 32768 sha256: "c17bc38c75ba96c33a30c688a1efd60144811073423533fe7f8453cdd9457aab" sha1: "d756eba578a6c5a4807510dfee30ee585c63755e" validation: [size, sha256] source_ref: "src/SystemProfile.cpp:101, src/SystemProfile.cpp:239-251, src/Memory.cpp:189-201, src/Memory.cpp:220-222, src/MainWindow.cpp:223-226, src/RomFetch.cpp:80-83" note: "Sole candidate of the //e Enhanced profiles, NTSC and PAL, PAL being the default machine. Also the last fallback of the //e Unenhanced chain." - name: "apple2e_unenh.rom" path: "roms/apple2e_unenh.rom" description: "Apple //e Unenhanced firmware, 4 KB internal $Cx00 ROM then $D000-$FFFF" required: false priority: 1 aliases: ["342-0135-b.64.rom"] size: 16384 sha256: "1fb812584c6633fa16b77b20915986ed1178d1e6fc07a647f7ee8d4e6ab9d40b" sha1: "61fa9254628e5bb7236fb474006116d67684d747" validation: [size, sha256] source_ref: "src/SystemProfile.cpp:78-79, src/SystemProfile.cpp:265-277, src/RomFetch.cpp:84-87" note: "First candidate of the //e Unenhanced profiles; 342-0135-b.64.rom is probed second, apple2e.rom third." - name: "apple2c-32Kv0.rom" path: "roms/apple2c-32Kv0.rom" description: "Apple //c two-bank firmware, bank 0 in the lower 16 KB" required: false priority: 1 size: 32768 crc32: "323952d1" sha1: "fb0d644aafaff1352d0816bc8494f6c9913809d5" source_ref: "src/SystemProfile.cpp:142-143, src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:432-438, src/Memory.cpp:189-201, src/Memory.cpp:220-222" note: "First candidate of the //c and //c PAL profiles, third of the //c Plus chain. Bank 0 is mapped at reset, the $C028 ROMBANK switch selects the other. Identical to 3420033a.256 with its first 256 bytes zeroed." - name: "apple2c-16K.rom" path: "roms/apple2c-16K.rom" description: "Apple //c ROM 255, 16 KB, MAME apple2c a2c.128" required: false priority: 2 size: 16384 crc32: "f0edaa1b" sha1: "1a9b8aca5e32bb702ddb7791daddd60a89655729" source_ref: "src/SystemProfile.cpp:142-143, src/Memory.cpp:207-208" note: "Second candidate of the //c chain, loaded at $C000." - name: "3420033a.256" path: "roms/3420033a.256" description: "Apple //c ROM 0, UniDisk 3.5 firmware, MAME apple2c0 342-0033-A" required: false priority: 3 size: 32768 crc32: "c8b979b3" sha1: "10767e96cc17bad0970afda3a4146564e6272ba1" source_ref: "src/SystemProfile.cpp:142-143" note: "Third candidate of the //c chain." - name: "apple2cp.rom" path: "roms/apple2cp.rom" description: "Apple //c Plus two-bank firmware, MAME apple2cp 341-0625-a.256" required: false priority: 1 aliases: ["apple2c-plus.rom"] size: 32768 crc32: "0b996420" sha1: "1a27ae26966bbafd825d08ad1a24742d3e33557c" source_ref: "src/SystemProfile.cpp:204-205, src/SystemProfile.cpp:432-438" note: "First candidate of the //c Plus profile; apple2c-plus.rom is probed second and apple2c-32Kv0.rom third." - name: "apple2_char.rom" path: "roms/apple2_char.rom" description: "Apple ][ and ][+ character generator, 2 KB uppercase set" required: false priority: 1 size: 2048 sha256: "08f5d22230481019844492dde0a29a018cb193712a9e4a43770a3870608f28de" sha1: "f9d312f128c9557d9d6ac03bfad6c3ddf83e5659" validation: [size, sha256] source_ref: "src/SystemProfile.cpp:39, src/SystemProfile.cpp:55, src/CharRomCatalog.cpp:42-43, src/RomFetch.cpp:90-93, src/Memory.cpp:313-345" note: "Sole candidate of the ][ and ][+ profiles and the last fallback of every //e-class chain." - name: "apple2e_char.rom" path: "roms/apple2e_char.rom" description: "Apple //e Enhanced character generator 342-0265-A, 4 KB with MouseText" required: false priority: 1 aliases: ["apple2e_char_us.rom"] size: 4096 sha256: "52c3b87900ac939f6525402cab1ccfd8f8259290fc6df54da48fb4c98ae3ed0f" sha1: "b2b5d87f52693817fc747df087a4aa1ddcdb1f10" validation: [size, sha256] source_ref: "src/SystemProfile.cpp:105, src/SystemProfile.cpp:144, src/SystemProfile.cpp:206, src/CharRomCatalog.cpp:48-49, src/RomFetch.cpp:94-97, src/Memory.cpp:313-345" note: "First candidate of the //e Enhanced, //c and //c Plus profiles; the same dump answers to apple2e_char_us.rom in the locale picker." - name: "apple2e_char_us_unenh.rom" path: "roms/apple2e_char_us_unenh.rom" description: "Apple //e Unenhanced character generator 342-0133-A, 4 KB" required: false priority: 1 aliases: ["apple2e_char_2k.rom", "341-0265-a.chr.rom"] size: 4096 sha256: "ed5bdd4afa509134e85f1d020685af7ff50e279226eb869a17825b471cc1634c" sha1: "58ad0008df72896a18601e090ee0d58155ffa5be" validation: [size, sha256] source_ref: "src/SystemProfile.cpp:83-84, src/CharRomCatalog.cpp:50-51, src/RomFetch.cpp:98-101, src/Memory.cpp:313-345" note: "The //e Unenhanced profile probes apple2e_char_2k.rom then 341-0265-a.chr.rom then apple2_char.rom; the same dump ships under both names." - name: "apple2e_char_fr.rom" path: "roms/apple2e_char_fr.rom" description: "Apple //e French character generator, 4 KB" required: false aliases: ["apple2e_char_frca_unenh.rom"] size: 4096 crc32: "ab0be706" sha1: "42afb02aab4146f781ac52803a2733adc4da834e" validation: [size] source_ref: "src/CharRomCatalog.cpp:52-53, src/CharRomCatalog.cpp:56-57, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" note: "Locale picker entry. The same dump is also listed as the FR Canadian unenhanced set 341-0168-A." - name: "apple2e_char_frca.rom" path: "roms/apple2e_char_frca.rom" description: "Apple //e French Canadian Enhanced character generator, 4 KB" required: false size: 4096 crc32: "2c8fc403" sha1: "4043e0808af8be096660827445e41149d16c5c85" validation: [size] source_ref: "src/CharRomCatalog.cpp:54-55, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" note: "Locale picker entry; equals the low bank of 342-0274-a.e9." - name: "apple2e_char_uk.rom" path: "roms/apple2e_char_uk.rom" description: "Apple //e UK Enhanced character generator 342-0273-A, 4 KB" required: false size: 4096 crc32: "dda11653" sha1: "d19c2e2cc12b27d77edc403d5d0701186a4ed988" validation: [size] source_ref: "src/CharRomCatalog.cpp:58-59, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" note: "Locale picker entry." - name: "apple2e_char_uk_unenh.rom" path: "roms/apple2e_char_uk_unenh.rom" description: "Apple //e UK Unenhanced character generator 341-0160-A, 4 KB" required: false size: 4096 crc32: "7a9a91ef" sha1: "6ca9767e0f47f642d1caab6ed41b8f58c58bb9eb" validation: [size] source_ref: "src/CharRomCatalog.cpp:60-61, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" note: "Locale picker entry." - name: "apple2e_char_de.rom" path: "roms/apple2e_char_de.rom" description: "Apple //e German character generator 341-0161-A, 4 KB" required: false size: 4096 crc32: "0d72f153" sha1: "a7fd75ae8611572b0b4d99ad54562014b879dbbf" validation: [size] source_ref: "src/CharRomCatalog.cpp:62-63, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" note: "Locale picker entry." - name: "apple2e_char_de_improved.rom" path: "roms/apple2e_char_de_improved.rom" description: "Apple //e German Improved character generator, 4 KB" required: false size: 4096 crc32: "d345d332" sha1: "12ce44f02bd28c350e2b0723d94ab8d9066f8798" validation: [size] source_ref: "src/CharRomCatalog.cpp:64-65, src/CharRomCatalog.cpp:151-165, src/Memory.cpp:313-345" note: "Locale picker entry." - name: "342-0274-a.e9" path: "roms/342-0274-a.e9" description: "Apple //e international video ROM 342-0274-A, 8 KB, French Canadian bank then US bank, MAME apple2eefr" required: false size: 8192 crc32: "8f342081" sha1: "c81c1bbf237e70f8c3e5eef3c8fd5bd9b9f54d1e" validation: [size] source_ref: "src/CharRomCatalog.cpp:73-76, src/CharRomCatalog.cpp:144-149, src/Memory.cpp:313-345" note: "Locale picker entries select bank 0 or bank 1; loaded whole, both banks stay live and annunciator 2 picks the set." - name: "apple2e_char_ft_blockascii.rom" path: "roms/apple2e_char_ft_blockascii.rom" description: "French Touch Block ASCII dual-bank character generator, 8 KB" required: false size: 8192 crc32: "1eae3944" sha1: "f79815457437e50404f4f537d8aabe34bff3a220" validation: [size] source_ref: "src/CharRomCatalog.cpp:77-78, src/Memory.cpp:313-345" note: "Locale picker entry loaded dual-bank: annunciator 2 flips between the text set and the block glyphs." - name: "Videx Lower Case Chip ROM.bin" path: "roms/Videx Lower Case Chip ROM.bin" description: "Videx LOWER CASE CHIP character generator for the ][ and ][+, 2 KB" required: false size: 2048 crc32: "00f68076" sha1: "447874fe0850c8add3fd5b13fa98f6648fe6f999" validation: [size, crc32] source_ref: "src/CharRomCatalog.cpp:44-45, src/RomCatalog.h:143-148, src/RomStatus_ImGui.cpp:306" note: "Locale picker entry for the ][ and ][+ profiles; without it the picker keeps the stock uppercase set." - name: "disk2.rom" path: "roms/disk2.rom" description: "Disk II 16-sector boot PROM 341-0027-A" required: false has_builtin: true size: 256 sha256: "de1e3e035878bab43d0af8fe38f5839c527e9548647036598ee6fe7ec74d2a7d" sha1: "d4181c9f046aafc3fb326b381baac809d9e38d16" validation: [size, sha256] source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:135-140, src/DiskIICard.cpp:150-172, src/RomFetch.cpp:104-107" note: "The card carries the same PROM built in; the file replaces it when present." - name: "diskii_p6.rom" path: "roms/diskii_p6.rom" description: "Disk II 16-sector P6 logic state sequencer PROM 341-0028-A" required: false has_builtin: true size: 256 sha256: "e5e30615040567c1e7a2d21599681f8dac820edbdcda177b816a64d74b3a12f2" sha1: "bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4" validation: [size, sha256] source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:141-148, src/DiskIICard.cpp:175-197, src/DiskIICard.cpp:245-262, src/RomFetch.cpp:108-111" note: "Loading the file switches the bit-level LSS path on for every image; without it the legacy 32-cycle nibble gate serves non-WOZ images and the built-in PROM serves WOZ images." - name: "disk2_13.rom" path: "roms/disk2_13.rom" description: "Disk II 13-sector boot PROM 341-0009" required: false size: 256 sha256: "2d2599521fc5763d4e8c308c2ee7c5c4d5c93785b8fb9a4f7d0381dfd5eb60b6" sha1: "afd060e6f35faf3bb0146fa889fc787adf56330a" validation: [size, sha256] source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:203-220, src/RomCatalog.h:79-81, src/RomFetch.cpp:112-115" note: "13-sector disks mount but cannot boot without it." - name: "diskii_p6_13.rom" path: "roms/diskii_p6_13.rom" description: "Disk II 13-sector P6 logic state sequencer PROM 341-0010" required: false size: 256 sha256: "383c55f5333cbfde39dd41528186631e5aca2eddfec30716344f03b6a4d44655" sha1: "e3d6d1c30653572b49ecc2dc54ce073978411a04" validation: [size, sha256] source_ref: "src/SlotCardFactory.cpp:93-106, src/DiskIICard.cpp:222-239, src/RomCatalog.h:82-84, src/RomFetch.cpp:116-119" note: "Paired with disk2_13.rom; the card never switches to the 13-sector pair without both." - name: "cffa20eec02.bin" path: "roms/cffa20eec02.bin" description: "CFFA 2.0 firmware, 65C02 build" required: false size: 4096 crc32: "fb3726f8" sha1: "080ff88f19de22328e162954ee2b51ee65f9d5cd" validation: [size, crc32] source_ref: "src/SlotCardFactory.cpp:115-139, src/CffaCard.cpp:26-40, src/RomCatalog.h:103-106" note: "Preferred when the CPU is a 65C02, the 6502 build is the fallback; the slot stays empty when neither is found." - name: "cffa20ee02.bin" path: "roms/cffa20ee02.bin" description: "CFFA 2.0 firmware, 6502 build" required: false size: 4096 crc32: "3ecafce5" sha256: "3d7f6918f9af3828f5a6299299a817df0d354ee62e547bc0238755de66162a88" sha1: "d600692ed9626668233a22a48236af639410cb7b" validation: [size, crc32, sha256] source_ref: "src/SlotCardFactory.cpp:115-139, src/CffaCard.cpp:26-40, src/RomCatalog.h:107-110, src/RomFetch.cpp:122-126" note: "Preferred on an NMOS 6502, fallback for a 65C02." - name: "mouse_341-0270-c.bin" path: "roms/mouse_341-0270-c.bin" description: "AppleMouse II card slot EPROM 341-0270-C" required: false size: 2048 sha256: "7f8e50c0e8a409991264201f9300f109b872b68e09c43f3e6c26af35fd8b89af" sha1: "3a9d881a8a8d30f55b9719aceebbcf717f829d6f" validation: [size, sha256] source_ref: "src/SlotCardFactory.cpp:51-83, src/SlotCardFactory.cpp:232-247, src/MouseCard.cpp:115-149, src/MouseCardAppleWin.cpp:87-100, src/RomFetch.cpp:127-130" note: "Needed by both mouse cards: the MC68705 card also needs the MCU ROM, the AppleWin HLE card needs this one only." - name: "mouse_341-0269.bin" path: "roms/mouse_341-0269.bin" description: "AppleMouse II card MC68705P3 MCU mask ROM 341-0269" required: false size: 2048 sha256: "66480812edad5f6bd70349949cf8bd8fbafee2dc8bf396541d4e78bac2629ec0" sha1: "3a2baa6648efe4456d3ec3721216e57c64f7acfc" validation: [size, sha256] source_ref: "src/SlotCardFactory.cpp:51-83, src/MouseCard.cpp:146-149, src/M68705P3.cpp:85-104, src/RomFetch.cpp:131-134" note: "The MC68705 mouse card leaves its slot empty without it." - name: "grappler_plus.bin" path: "roms/grappler_plus.bin" description: "Orange Micro Grappler+ parallel printer EPROM 3.2" required: false aliases: ["grappler+.bin", "grappler.bin"] size: 4096 sha256: "9be4dea7722ad8928aee64c2ae708f365a6d66c50a63bff8a3c1a4e7596d44c6" sha1: "829072cc19a58b24d36c2af972abaad6f9ba35d9" validation: [size, sha256] source_ref: "src/SlotCardFactory.cpp:147-166, src/GrapplerCard.cpp:29-52, src/RomCatalog.h:113-118, src/RomFetch.cpp:135-138" note: "Without it the card runs a stub ROM: PR#n prints, the graphics dump commands are absent." - name: "ae_transwarp_1.4.bin" path: "roms/ae_transwarp_1.4.bin" description: "Applied Engineering TransWarp accelerator ROM v1.4, MAME warprom" required: false aliases: ["ae transwarp rom v1.4.bin"] size: 4096 crc32: "afe37f55" sha1: "7b75534e7895e04859a0b1337801c6eeb0cef52a" validation: [size, crc32] source_ref: "src/TranswarpCard.h:166, src/TranswarpCard.cpp:200-218, src/RomCatalog.h:119-125" note: "Not shipped by POM2. The card accelerates without it and only shadows $F000-$FFFF with the speed-corrected monitor when the dump is present." - name: "thunderclock_u9_v1.3.bin" path: "roms/thunderclock_u9_v1.3.bin" description: "Thunderware ThunderClock+ slot ROM rev 1.3, U9" required: false aliases: ["thunderclock_u9.bin", "thunderclock.rom", "Thunderware_REV_1.3_ROM_U9.bin"] size_options: [256, 2048] sha1: "60f434f5325899d7ea257a6e56e6f53eae65146a" validation: [size] source_ref: "src/ClockCard.cpp:469-524, src/RomCatalog.h:150-160" note: "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." - name: "liron.rom" path: "roms/liron.rom" description: "Apple Liron SmartPort controller firmware, 4 KB" required: false size: 4096 sha1: "fa94ecc2aa23f336f7da9e18bc8f4a6cfbb4ea60" validation: [size] source_ref: "src/SlotCardFactory.cpp:194-220, src/LironCard.cpp:61-85, src/SmartPortCard.cpp:80-97, src/RomCatalog.h:87-90" note: "The Liron card refuses to plug without it. The SmartPort 3.5 card loads it on machines with physical slots and otherwise presents a synthetic identity." - name: "341-0358-A.bin" path: "roms/341-0358-A.bin" description: "Apple II Workstation Card firmware 341-0358-A, 64 KB" required: false aliases: ["341-0358-a.bin"] size: 65536 crc32: "63819dcb" sha1: "59c8e8c88bac5c31ada1306b412edfcf5912a720" validation: [size, crc32] source_ref: "src/SlotCardFactory.cpp:169-192, src/WorkstationCard.cpp:60-74, src/RomCatalog.h:133-142" note: "The Workstation card leaves its slot empty without it; the card runs its own 65C02 on the upper 32 KB." - name: "341-0438-a.bin" path: "roms/341-0438-a.bin" description: "Apple II 3.5 Disk Controller SuperDrive firmware 341-0438-A, MAME a2superdrive" required: false size: 32768 crc32: "c73ff25b" sha1: "440c3f84176c7b9f542da0b6ddf4fb13ec326c46" validation: [size, crc32, sha256] source_ref: "src/RomCatalog.h:91-96, src/RomStatus_ImGui.cpp:169-181, src/RomFetch.cpp:139-141" note: "No card reads it; the ROM Status panel and the fetch gate check it." - name: "342-0326-a.f12" path: "roms/342-0326-a.f12" description: "Apple //e French keyboard decode ROM 342-0326-A, MAME apple2eefr" required: false size: 2048 crc32: "f04970a9" sha1: "806a602195c18ffec637c03b6bb3405188b0dc1e" validation: [size, crc32] source_ref: "src/RomCatalog.h:97-102, src/RomStatus_ImGui.cpp:169-181, src/RomStatus_ImGui.cpp:306" note: "Host keys are mapped directly, no keyboard decode ROM is emulated; the ROM Status panel checks the file only." - name: "525_seek_2ms.wav" path: "roms/floppy_samples/525_seek_2ms.wav" description: "MAME floppy sample, 5.25 inch drive, 2 ms head seek" category: game_data required: false size: 5336 sha1: "2d046a880476218685ed738fe8c8381962afd74a" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" note: "One of ten samples per drive bank; a missing sample is logged and that sound stays silent." - name: "525_seek_6ms.wav" path: "roms/floppy_samples/525_seek_6ms.wav" description: "MAME floppy sample, 5.25 inch drive, 6 ms head seek" category: game_data required: false size: 14860 sha1: "6f698055fa6e9da6c5ae3fd6fb05de76b92a45a9" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "525_seek_12ms.wav" path: "roms/floppy_samples/525_seek_12ms.wav" description: "MAME floppy sample, 5.25 inch drive, 12 ms head seek" category: game_data required: false size: 22764 sha1: "fbbbb5e8724c076d194e66a4443d299d54a8efd6" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "525_seek_20ms.wav" path: "roms/floppy_samples/525_seek_20ms.wav" description: "MAME floppy sample, 5.25 inch drive, 20 ms head seek" category: game_data required: false size: 30060 sha1: "b6cd14944454c743861196edb4fcab1cc9b586d4" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "525_spin_empty.wav" path: "roms/floppy_samples/525_spin_empty.wav" description: "MAME floppy sample, 5.25 inch drive, motor running, no disk" category: game_data required: false size: 8864 sha1: "4b13701d9a7f8ab0f0827f17ba80b5c32b4e0fa7" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "525_spin_loaded.wav" path: "roms/floppy_samples/525_spin_loaded.wav" description: "MAME floppy sample, 5.25 inch drive, motor running, disk loaded" category: game_data required: false size: 17708 sha1: "875f90538a3ff5db863ad4c384e1808841ddea9b" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "525_spin_start_empty.wav" path: "roms/floppy_samples/525_spin_start_empty.wav" description: "MAME floppy sample, 5.25 inch drive, motor start, no disk" category: game_data required: false size: 11180 sha1: "b87d89c4b46c36dd78dec3dc5170ca61501e7cd9" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "525_spin_start_loaded.wav" path: "roms/floppy_samples/525_spin_start_loaded.wav" description: "MAME floppy sample, 5.25 inch drive, motor start, disk loaded" category: game_data required: false size: 17708 sha1: "510476098848e2b5cdfe9f1608f8dfa3207fe9b4" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "525_spin_end.wav" path: "roms/floppy_samples/525_spin_end.wav" description: "MAME floppy sample, 5.25 inch drive, motor stop" category: game_data required: false size: 8864 sha1: "f8d9b94c4d92d35d9ffb1117b693fc74a93f613f" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "525_step_1_1.wav" path: "roms/floppy_samples/525_step_1_1.wav" description: "MAME floppy sample, 5.25 inch drive, single track step" category: game_data required: false size: 6628 sha1: "669ee98fb9fac4371c72ed0b60be1bc8470bc7f8" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "35_seek_2ms.wav" path: "roms/floppy_samples/35_seek_2ms.wav" description: "MAME floppy sample, 3.5 inch drive, 2 ms head seek" category: game_data required: false size: 7450 sha1: "55caafbd19486b8d517e4b33a6fa65250df55e25" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" note: "One of ten samples per drive bank; a missing sample is logged and that sound stays silent." - name: "35_seek_6ms.wav" path: "roms/floppy_samples/35_seek_6ms.wav" description: "MAME floppy sample, 3.5 inch drive, 6 ms head seek" category: game_data required: false size: 22230 sha1: "87e5dec269e67497681c15849777ebfc301131c1" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "35_seek_12ms.wav" path: "roms/floppy_samples/35_seek_12ms.wav" description: "MAME floppy sample, 3.5 inch drive, 12 ms head seek" category: game_data required: false size: 26540 sha1: "c6b34fc61496943134ac45cc836a24e743caf794" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "35_seek_20ms.wav" path: "roms/floppy_samples/35_seek_20ms.wav" description: "MAME floppy sample, 3.5 inch drive, 20 ms head seek" category: game_data required: false size: 44144 sha1: "b2fe4c3a4185146a7d11483d92d4412dd79dbc78" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "35_spin_empty.wav" path: "roms/floppy_samples/35_spin_empty.wav" description: "MAME floppy sample, 3.5 inch drive, motor running, no disk" category: game_data required: false size: 17708 sha1: "db04fc097bdd0411cff232f57525ded491b48c6c" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "35_spin_loaded.wav" path: "roms/floppy_samples/35_spin_loaded.wav" description: "MAME floppy sample, 3.5 inch drive, motor running, disk loaded" category: game_data required: false size: 17708 sha1: "96ce04a5b02af0da6d311f06fc4906a3cf71c78f" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "35_spin_start_empty.wav" path: "roms/floppy_samples/35_spin_start_empty.wav" description: "MAME floppy sample, 3.5 inch drive, motor start, no disk" category: game_data required: false size: 17708 sha1: "af770fd9261a8efee23d66cd39b27be7b2ab7853" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "35_spin_start_loaded.wav" path: "roms/floppy_samples/35_spin_start_loaded.wav" description: "MAME floppy sample, 3.5 inch drive, motor start, disk loaded" category: game_data required: false size: 35308 sha1: "c82b1714378bf2507ed86dea1e9fe743c380abab" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "35_spin_end.wav" path: "roms/floppy_samples/35_spin_end.wav" description: "MAME floppy sample, 3.5 inch drive, motor stop" category: game_data required: false size: 17684 sha1: "a8901b692de15eb7a9052f61283f0e7a2b63d67d" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "35_step_1_1.wav" path: "roms/floppy_samples/35_step_1_1.wav" description: "MAME floppy sample, 3.5 inch drive, single track step" category: game_data required: false size: 6878 sha1: "40d756d0cb5f7998ca26ac1de142a96a83fa2b97" source_ref: "src/FloppySoundDevice.cpp:80-118, src/MainWindow.cpp:335-348" - name: "DejaVuSans.ttf" path: "fonts/DejaVuSans.ttf" description: "DejaVu Sans, the frontend text font" category: game_data required: false bundled: true unsourceable: "host program component shipped inside every POM2 package, not emulation data" size: 759720 sha1: "3061cf7af25793a655a1ff5a509385f3620f3eb3" source_ref: "src/main.cpp:522-535" note: "Falls back to the system DejaVu, Arial Unicode or Segoe UI, then to the ImGui bitmap font." - name: "fa-solid-900.ttf" path: "fonts/fa-solid-900.ttf" description: "Font Awesome 6 Free Solid, the frontend icon font" category: game_data required: false bundled: true unsourceable: "host program component shipped inside every POM2 package, not emulation data" size: 426112 sha1: "0c8c9706abc0116f08b66d11a69da6aa9ef7e6bf" source_ref: "src/main.cpp:582-600" note: "Without it every icon renders as an empty box." - name: "Apple_II_plus.jpg" path: "pic/Apple_II_plus.jpg" description: "Apple ][+ photograph shown in Help > About" category: game_data required: false bundled: true unsourceable: "host program component shipped inside every POM2 package, not emulation data" size: 102046 sha1: "69358dd499148deae4112b49cedb7bec220584e2" source_ref: "src/MainWindow_MiscPanels.cpp:621" - name: "Keyboard_AppleIIe.jpeg" path: "pic/Keyboard_AppleIIe.jpeg" description: "Apple //e keyboard photograph the clickable keyboard window is built on" category: game_data required: false bundled: true unsourceable: "host program component shipped inside every POM2 package, not emulation data" size: 794259 sha1: "a178f37661078739637ff7642cd6450c762993aa" source_ref: "src/MainWindow_MiscPanels.cpp:480" note: "The window hotspots are fractions of this image; without it the window has nothing to click."