emulator: XRoar type: standalone source: "https://www.6809.org.uk/git/xroar.git" upstream: "https://www.6809.org.uk/xroar/" profiled_date: "2026-03-26" core_version: "1.10" display_name: "Dragon / CoCo / MC-10 (XRoar)" cores: - xroar systems: - dragon32 - dragon64 - coco - coco3 - mc10 notes: | XRoar by Ciaran Anscomb emulates Dragon 32/64, Tandy CoCo 1/2/3, MC-10, Alice, and clones (MX-1600, CP-400, Dragon 200-E, Deluxe CoCo). ROM files are searched in a configurable rompath directory with automatic extension appending (.rom, .ROM, .dgn, .DGN). Batocera sets rompath to /userdata/bios/xroar/. The romlist mechanism defines fallback filenames per ROM slot. Each machine type has a default romlist that tries filenames in priority order. CRC32 is computed for loaded ROMs and matched against known-good values for breakpoint and feature detection, but mismatches do not prevent loading. Machine selection: Batocera maps system names to default machines via xroarGenerator.py (mc10 -> mc10, dragon64 -> dragon64, others -> coco2bus). files: # ---- Dragon 32 ---- - name: "d32.rom" system: dragon32 description: "Dragon 32 BASIC ROM" required: true size: 16384 crc32: "e3879310" validation: [crc32] aliases: [dragon32, d32rom, "Dragon Data Ltd - Dragon 32 - IC17"] source_ref: "xroar.c:643 (romlist d32), dragon.c:792,798-803,820-821 (load + CRC)" note: "Combined 16K ROM. Loaded into a single 16384-byte rombank slot." # ---- Dragon 64 ---- - name: "d64_1.rom" system: dragon64 description: "Dragon 64 32K mode BASIC ROM" required: true size: 16384 crc32: "84f68bf9" validation: [crc32] aliases: [d64rom1, dragrom, "Dragon Data Ltd - Dragon 64 - IC17", "Dragon Data Ltd - TANO IC18", "Eurohard S.A. - Dragon 200 IC18"] source_ref: "xroar.c:641 (romlist d64_1), xroar.c:647 (romlist dragon64), dragon64.c:138-141,155-157 (load + CRC)" note: "IC17 ROM. Required for the machine to start." - name: "d64_2.rom" system: dragon64 description: "Dragon 64 64K mode BASIC ROM" required: false size: 16384 crc32: "17893a42" validation: [crc32] aliases: [d64rom2, "Dragon Data Ltd - Dragon 64 - IC18", "Dragon Data Ltd - TANO IC17", "Eurohard S.A. - Dragon 200 IC17"] source_ref: "xroar.c:642 (romlist d64_2), xroar.c:648 (romlist dragon64_alt), dragon64.c:146-152,160-162 (load + CRC)" note: "IC18 ROM. 64K mode alternate BASIC. Machine starts without it (32K mode only)." # ---- Dragon 200-E ---- - name: "d200e_1.rom" system: dragon64 description: "Dragon 200-E BASIC IC18 (Spanish)" region: [spain] required: true size: 16384 crc32: "95af0a0a" validation: [crc32] aliases: [d200e_rom1, ic18_v1.4e.ic34] source_ref: "xroar.c:644 (romlist d200e_1), xroar.c:650 (romlist dragon200e), xroar.c:735 (crclist)" note: "Required for Dragon 200-E. Falls back to d64_1 then generic dragon if not found." - name: "d200e_2.rom" system: dragon64 description: "Dragon 200-E BASIC IC17 (Spanish)" region: [spain] required: false size: 16384 aliases: [d200e_rom2, ic17_v1.4e.ic37] source_ref: "xroar.c:645 (romlist d200e_2), xroar.c:651 (romlist dragon200e_alt)" note: "64K mode alternate. Falls back to d64_2 if not found." - name: "d200e_26.rom" system: dragon64 description: "Dragon 200-E external character generator ROM" region: [spain] required: false size: 4096 aliases: [rom26.ic1] source_ref: "xroar.c:652 (romlist dragon200e_charset), dragon.c:523-539 (ext_charset load)" note: "Spanish character set. Loaded into a 4096-byte rombank. Machine works without it (uses standard charset)." # ---- Dragon Professional (Alpha) ---- - name: "alpha-boot-v1.0.rom" system: dragon64 description: "Dragon Professional (Alpha) boot ROM v1.0" required: true size: 8192 crc32: "c3dab585" validation: [crc32] aliases: [alpha_bt_10, "Dragon Data Ltd - Dragon Alpha Boot v1.0 150584"] source_ref: "xroar.c:654 (romlist dragonpro_boot), xroar.c:741 (crclist), dragonpro.c:226 (BOOT bank 8192), dragonpro.c:231-234 (load), dragonpro.c:249 (0xc3dab585 = Dragon Pro BOOT 1.0)" note: >- Required for Dragon Professional machine. Loaded as extbas_rom into the BOOT bank. rombank_verify_crc accepts any member of @dragonpro_boot, which also holds 0xd6172b56 for the v0.4 slot. - name: "alpha-boot-v0.4.rom" system: dragon64 description: "Dragon Professional (Alpha) boot ROM v0.4" required: false size: 8192 aliases: [alpha_bt_04] source_ref: "xroar.c:654 (romlist dragonpro_boot), xroar.c:741 (crclist), dragonpro.c:226 (BOOT bank 8192)" note: >- Fourth and fifth candidates of the dragonpro_boot romlist, tried when no v1.0 image is found. The crclist carries 0xd6172b56 next to the v1.0 value, but the source labels only the latter, so no crc32 is declared here. - name: "alpha-basic.rom" system: dragon64 description: "Dragon Professional (Alpha) BASIC ROM" required: true size: 16384 crc32: "84f68bf9" validation: [crc32] aliases: [alpha_ba, "Dragon Data Ltd - Dragon Alpga Basic"] source_ref: "xroar.c:655 (romlist dragonpro_basic), xroar.c:742 (crclist = @d64_1), dragonpro.c:227 (ROM0 bank 16384), dragonpro.c:240-243 (load), dragonpro.c:254 (0x84f68bf9 = Dragon 64 32K mode BASIC)" note: "Loaded as altbas_rom into the 32K BASIC bank. Falls back to d64_1 if not found." # ---- Tandy CoCo (Colour BASIC) ---- - name: "bas13.rom" system: coco description: "Tandy CoCo Colour BASIC 1.3" required: true size: 8192 crc32: "d8f4d15e" validation: [crc32] source_ref: "xroar.c:657 (romlist coco), xroar.c:747 (crclist bas13), dragon.c:807-812,824-826 (load + CRC)" note: "Default Colour BASIC. First tried in the @coco romlist. 8K ROM loaded into slot 1 of a 2-slot rombank." - name: "bas12.rom" system: coco description: "Tandy CoCo Colour BASIC 1.2" required: false size: 8192 crc32: "54368805" validation: [crc32] aliases: ["Color Basic v1.2 (1982)(Tandy)"] source_ref: "xroar.c:657 (romlist coco), xroar.c:746 (crclist bas12)" note: "Alternative to bas13. Second in fallback order." - name: "bas11.rom" system: coco description: "Tandy CoCo Colour BASIC 1.1" required: false size: 8192 crc32: "6270955a" validation: [crc32] source_ref: "xroar.c:657 (romlist coco), xroar.c:745 (crclist bas11)" note: "Used by CoCo 1E. Third in fallback order." - name: "bas10.rom" system: coco description: "Tandy CoCo Colour BASIC 1.0" required: false size: 8192 crc32: "00b50aaa" validation: [crc32] source_ref: "xroar.c:657 (romlist coco), xroar.c:744 (crclist bas10)" note: "Earliest version. Used by original CoCo 1. Last in fallback order." # ---- Tandy CoCo (Extended Colour BASIC) ---- - name: "extbas11.rom" system: coco description: "Tandy CoCo Extended Colour BASIC 1.1" required: true size: 8192 crc32: "a82a6254" validation: [crc32] source_ref: "xroar.c:658 (romlist coco_ext), xroar.c:752 (crclist extbas11), dragon.c:798-803,828-829 (load + CRC)" note: "Default Extended BASIC. 8K ROM loaded into slot 0 of a 2-slot rombank." - name: "extbas10.rom" system: coco description: "Tandy CoCo Extended Colour BASIC 1.0" required: false size: 8192 crc32: "e031d076" validation: [crc32] source_ref: "xroar.c:658 (romlist coco_ext), xroar.c:751 (crclist extbas10)" note: "Earlier version. Second in fallback order." # ---- Tandy CoCo 3 ---- - name: "coco3.rom" system: coco3 description: "CoCo 3 Super Extended Colour BASIC (NTSC)" required: true size: 32768 crc32: "b4c88d6c" validation: [crc32] source_ref: "xroar.c:688 (romlist coco3), xroar.c:762 (crclist coco3), coco3.c:254-256,512-526 (load + CRC)" note: "32K combined ROM. Single required ROM for CoCo 3 NTSC." - name: "coco3p.rom" system: coco3 description: "CoCo 3 Super Extended Colour BASIC (PAL)" required: true size: 32768 source_ref: "xroar.c:689 (romlist coco3p), xroar.c:505,514 (machine config), coco3.c:254-256" note: "PAL variant of the CoCo 3 ROM. Required for PAL CoCo 3 machines." # ---- Tandy MC-10 ---- - name: "mc10.rom" system: mc10 description: "Tandy MC-10 Microcolour BASIC" required: true size: 8192 crc32: "11fda97e" validation: [crc32] source_ref: "xroar.c:695 (romlist mc10), xroar.c:767 (crclist mc10), mc10.c:157-158,397-407 (load + CRC)" note: "Single required ROM for MC-10." - name: "alice.rom" system: mc10 description: "Matra & Hachette Alice Microcolour BASIC" region: [france] required: true size: 8192 crc32: "f876abe9" validation: [crc32] source_ref: "xroar.c:697 (romlist alice), xroar.c:769 (crclist alice), mc10.c:157-158" note: "French Alice variant. Required for Alice machine. MC-10 compatible." # ---- Deluxe CoCo (prototype) ---- - name: "deluxe.rom" system: coco description: "Tandy Deluxe CoCo Advanced BASIC (bank 0)" required: true crc32: "1cce231e" validation: [crc32] aliases: [adv070_u24] source_ref: "xroar.c:673 (romlist deluxecoco), xroar.c:757 (crclist), deluxecoco.c:191-194 (load)" note: "Primary ROM for the Deluxe CoCo prototype. Loaded as extbas_rom." - name: "adv071_u24.rom" system: coco description: "Tandy Deluxe CoCo ROM bank 1" required: false source_ref: "xroar.c:675 (romlist deluxecoco1), deluxecoco.c:201-204 (load)" - name: "adv072_u24.rom" system: coco description: "Tandy Deluxe CoCo ROM bank 2" required: false source_ref: "xroar.c:676 (romlist deluxecoco2), deluxecoco.c:208-211 (load)" - name: "adv073-2_u24.rom" system: coco description: "Tandy Deluxe CoCo ROM bank 3" required: false aliases: [adv073_u24] source_ref: "xroar.c:677 (romlist deluxecoco3), deluxecoco.c:215-218 (load)" # ---- Dynacom MX-1600 (Brazilian clone) ---- - name: "mx1600bas.rom" system: coco description: "Dynacom MX-1600 Colour BASIC" required: true crc32: "d918156e" validation: [crc32] aliases: [mx1600bas_zephyr] source_ref: "xroar.c:679 (romlist mx1600), xroar.c:748 (crclist mx1600)" note: "Required for MX-1600. Zephyr-patched variant (CRC32 d11b1c96) is an alias." - name: "mx1600extbas.rom" system: coco description: "Dynacom MX-1600 Extended Colour BASIC" required: true crc32: "322a3d58" validation: [crc32] source_ref: "xroar.c:680 (romlist mx1600ext), xroar.c:753 (crclist mx1600ext)" # ---- Prologica CP-400 (Brazilian clone) ---- - name: "cp400bas.rom" system: coco description: "Prologica CP-400 Colour BASIC" required: true crc32: "0b2903d4" validation: [crc32] source_ref: "xroar.c:682 (romlist cp400), xroar.c:749 (crclist cp400)" - name: "cp400ext.rom" system: coco description: "Prologica CP-400 Extended Colour BASIC" required: true crc32: "114accbc" validation: [crc32] source_ref: "xroar.c:683 (romlist cp400ext), xroar.c:754 (crclist cp400ext)" # ---- DOS cartridge ROMs (all optional) ---- - name: "disk11.rom" system: coco description: "Tandy RS-DOS 1.1 (CoCo floppy disk controller)" required: false source_ref: "xroar.c:708 (romlist rsdos), rsdos.c:176 (default @rsdos)" note: "Primary CoCo disk controller ROM. disk10.rom (RS-DOS 1.0) is an earlier version used as fallback." - name: "hdbdw3bck.rom" system: coco description: "RS-DOS with Becker port (DriveWire)" required: false source_ref: "xroar.c:718 (romlist rsdos_becker), xroar.c:572-574 (cart becker)" note: "For CoCo with Becker port hardware. Enables DriveWire connectivity." - name: "ddos12a.rom" system: dragon64 description: "DragonDOS 1.2a (Dragon floppy disk controller)" required: false source_ref: "xroar.c:702 (romlist dragondos), dragondos.c:173 (default @dragondos_compat)" note: "Latest DragonDOS version. Fallback chain tries DOSPlus -> SuperDOS -> DragonDOS -> Cumana. Older versions: ddos12, ddos40, ddos15, ddos10." - name: "dplus49b.rom" system: dragon64 description: "DOSPlus 4.9b (Dragon compatible DOS)" required: false source_ref: "xroar.c:703 (romlist dosplus)" note: "First tried in DragonDOS-compatible cartridge. Enhanced Dragon DOS. Older version: dplus48 (alias: dosplus-4.8, DOSPLUS)." - name: "sdose6.rom" system: dragon64 description: "SuperDOS E6 (Dragon compatible DOS)" required: false aliases: ["PNP - SuperDOS E6"] source_ref: "xroar.c:704 (romlist superdos)" note: "Latest SuperDOS. Older versions: sdose5, sdose4." - name: "cdos20.rom" system: dragon64 description: "Cumana DOS 2.0 (Dragon compatible DOS)" required: false aliases: [CDOS20, "CumanaDOSv2.0"] source_ref: "xroar.c:705 (romlist cumana)" - name: "delta2.rom" system: dragon64 description: "Delta System 2 (Premier Microsystems disk controller)" required: false aliases: ["Premier Micros - DeltaDOS"] source_ref: "xroar.c:711 (romlist delta), deltados.c:160 (default @delta)" note: "Latest Delta version. Older versions: delta1a, delta19, delta, deltados." - name: "cp450dsk.rom" system: coco description: "Prologica CP-450 DOS cartridge" required: false source_ref: "xroar.c:709 (romlist cp450)" note: "Falls back to RS-DOS if not found." # ---- Other cartridge ROMs (all optional) ---- - name: "orch90.rom" system: coco description: "Orchestra-90 CC sound cartridge ROM" required: false source_ref: "orch90.c:122 (default rom = orch90)" note: "Sound synthesis cartridge. Loaded directly (no romlist fallback)." - name: "mcx128.rom" system: mc10 description: "MCX128 memory expansion BASIC ROM" required: false aliases: [MCX_Basic_21] source_ref: "xroar.c:724 (romlist mcx128), mcx128.c:208 (default @mcx128)" note: "128K memory expansion for MC-10. Adds enhanced BASIC." - name: "mcx128a.rom" system: mc10 description: "MCX128 memory expansion BASIC ROM (AZERTY)" required: false aliases: [MCX_Basic_21_AZERTY] source_ref: "xroar.c:725 (romlist mcx128_azerty), xroar.c:632-633 (cart mcx128a)" note: "AZERTY keyboard variant for Alice. Same MCX128 hardware." - name: "yados.rom" system: coco description: "YADOS (Glenside IDE interface ROM)" required: false source_ref: "xroar.c:690 (romlist glenside_ide), idecart.c:204 (default @glenside_ide)" note: "IDE hard disk interface. Fallback: hdblba.rom (alternative IDE ROM)." - name: "sdbdos.rom" system: dragon64 description: "SDBDOS (MOOH memory cartridge ROM)" required: false source_ref: "mooh.c:254 (default rom = sdbdos)" note: "SD card boot DOS for MOOH cartridge. Loaded directly." - name: "dragonfly-2.3.rom" system: dragon64 description: "Ikon Ultra Drive Dragonfly ROM 2.3" required: false unsourceable: "not yet dumped, only v1.3 publicly available, XRoar support is experimental (#ifdef WANT_EXPERIMENTAL)" source_ref: "xroar.c:715 (romlist ikon), ikon.c:151 (default @ikon)" note: "Experimental. Ikon Ultra Drive storage interface. First candidate of the ikon romlist." - name: "dragonfly-1.3.rom" system: dragon64 description: "Ikon Ultra Drive Dragonfly ROM 1.3" required: false source_ref: "xroar.c:715 (romlist ikon), ikon.c:151 (default @ikon), romlist.c:46-48 (extensions tried)" note: >- Experimental. Second candidate of the ikon romlist, loaded when dragonfly-2.3 is absent. romlist_find appends the extensions "", .rom, .ROM, .dgn, .DGN in that order. ikon.c loads the bank through cart_rom_init and checks nothing: no crclist entry names this ROM.