Skip to content

ZEsarUX - RetroBIOS

Type standalone
Classification Other
Source https://github.com/chernandezba/zesarux
Version 13.1-SN
Profiled 2026-08-10
Cores zesarux
Systems sinclair-zx-spectrum, sinclair-zx-spectrum-next, sinclair-zx80, sinclair-zx81, sinclair-ql, cambridge-z88, jupiter-ace, timex-ts1500, timex-tc2048, timex-ts2068, microdigital-tk85, amstrad-cpc, pcw, sam-coupe, colecovision, sg-1000, sega-mastersystem, msx, spectravideo, science-of-cambridge-mk14
Checked by existence
Technical notes

Multi-machine Sinclair emulator. Every ROM is read from disk at run time; none is compiled into the binary. rom_load (src/cpu.c:3158-3751) maps current_machine_type to a filename through a switch, then resolves it with find_sharedfile (src/utils.c:1310-1348), which searches the current directory, ../Resources/, INSTALL_PREFIX/share/zesarux/ and the directory holding the binary, in that order.

ZEsarUX ships these files and installs them next to the binary: src/configure:1909 lists *.rom, zxuno.flash, zxmmcplus.flash, tbblue.mmc, pcw_8x_boot*dsk, mantransfev3.bin and alternate_roms in COMMONFILES. A normal install therefore already carries every entry below, which is why they are marked bundled: true.

A missing machine ROM is not fatal: rom_load logs an error and returns (src/cpu.c:3420-3428), the panic having been removed deliberately. The machine then runs on uninitialised memory, so the ROMs the switch names are marked required for the machine they serve. The one hard failure is prism_failsafe.rom, which prism_load_failsafe_rom loads through its own path and which calls cpu_panic when missing or short (src/machines/prism.c:581-590).

The emulator verifies no hash on any of these files. It does check size: the machine ROMs are compared against get_rom_size (src/utils.c:3514-3588) and the interface ROMs against their own *_ROM_SIZE constants, with a mismatch logged as an error. validation: [size] is set only where the code makes that comparison.

--romfile (src/start.c:998) overrides the machine ROM with any file the user picks (src/cpu.c:3410-3413); the ROMs under alternate_roms/ and the extra variants in the install root exist for that path and are documented in the shipped src/ALTERNATEROMS file. Interface ROMs are equally overridable (--divide-rom, --divmmc-rom, --dandanator-rom, --ifrom-rom, --kartusho-rom), and each falls back to the bundled default named here.

ES-DE drives ZEsarUX for its zxnext system with --machine tbblue --tbblue-fast-boot-mode --enable-esxdos-handler. Fast boot swaps tbblue_loader.rom for 48.rom (src/cpu.c:3263-3264), and the esxdos handler needs the divMMC firmware esxmmc085.rom, so that path loads 48.rom, esxmmc085.rom and the tbblue.mmc card image rather than a dedicated Next ROM.

ZEsarUX also loads UI and bundled-software resources through the same find_sharedfile path: keyboards/*.bmp on-screen keyboard art (src/menu/menu_items.c:19210, 21731, 21752), z88_shortcuts.bmp (src/video/screen.c:11078) and the my_soft/ homebrew collection (src/menu/menu_items.c:32146, 32205; src/menu/menu_items_storage.c:582). They are application resources rather than system firmware and carry no entry below. PrismChime.bin sits in the source tree but no code reads it and COMMONFILES does not install it.

107 files | 44 required, 63 optional | 105 in repo, 2 missing

48.rom required in repo bundled

48es.rom required in repo bundled

inves.rom required in repo bundled

128.rom required in repo bundled

128s.rom required in repo bundled

p2.rom required in repo bundled

p2f.rom required in repo bundled

p2s.rom required in repo bundled

p2a40.rom required in repo bundled

p2a41.rom required in repo bundled

p2as.rom required in repo bundled

pentagon.rom required in repo bundled

se.rom required in repo bundled

chrome.rom required in repo bundled

prism.rom required in repo bundled

prism_failsafe.rom required in repo bundled

zxuno_bootloader.rom required in repo bundled

  • System: sinclair-zx-spectrum
  • Size: 7.9 KB
  • Source: src/cpu.c:3243-3244, src/cpu.c:3486-3490
  • Size note: Read caps at 8192 bytes and only errors when fewer than 1 byte is read, so no exact size check. get_rom_size returns 214 for ZX-Uno (src/utils.c:3534) but that value is unused on this path.

zxevo_tsconf.rom required in repo bundled

zxevo_baseconf.rom required in repo bundled

tbblue_loader.rom required in repo bundled

tbblue.mmc optional in repo bundled

  • System: sinclair-zx-spectrum-next
  • Size: 64.0 MB
  • Source: src/menu/menu_items_storage.c:12144-12155, src/configure:1909
  • Size note: 64 MB, so it needs storage: large_file once the image is acquired and uploaded as a release asset.
  • SD card image carrying the Next system software. Assigned as MMC card 0 by the local-tbblue menu action; the emulator reports 'tbblue.mmc image not found' when absent.

tk90x.rom required in repo bundled

tk90xs.rom required in repo bundled

tk95.rom required in repo bundled

tk95es.rom required in repo bundled

tc2048.rom required in repo bundled

ts2068.rom required in repo bundled

ts1500.rom required in repo bundled

zx80.rom required in repo bundled

zx81.rom required in repo bundled

  • System: sinclair-zx81
  • Size: 8.0 KB
  • Validation: size
  • Source: src/cpu.c:3319-3330, src/utils.c:3564
  • Serves ZX81, Timex TS1000, TK82C, TK83 and the Czerweny CZ 1000/1500 models.

tk85.rom required in repo bundled

  • System: microdigital-tk85
  • Size: 10.0 KB
  • Validation: size
  • Source: src/cpu.c:3338-3340, src/utils.c:3562
  • The TK85 test precedes the generic ZX81 test in get_rom_size, so 10240 wins over 8192.

zxpand_zx81.rom optional in repo bundled

zxpand_zx80.rom optional in repo bundled

ace.rom required in repo bundled

ql_js.rom required in repo bundled

  • System: sinclair-ql
  • Size: 48.0 KB (min 16.0 KB)
  • Validation: size
  • Source: src/cpu.c:3379-3380, src/cpu.c:3719-3728
  • Size note: Reads up to 131072 bytes and errors only below 16384, so the check is a minimum rather than an exact size.

ql_jm.rom optional in repo bundled

  • System: sinclair-ql
  • Size: 48.0 KB
  • Source: src/cpu.c:3383, src/start.c:998
  • JM release. Reachable through --romfile; the switch selects ql_js.rom.

Z88OZ47.rom required in repo bundled

  • System: cambridge-z88
  • Size: 512.0 KB
  • Source: src/cpu.c:3350-3352, src/cpu.c:3675-3685
  • Size note: Reads up to 512K and errors only when nothing is read; z88_internal_rom_size is derived from the byte count, so any size is accepted.

mk14.rom required in repo bundled

cpc464.rom required in repo bundled

cpc664.rom required missing bundled

cpc6128.rom required missing bundled

pcw_boot.rom required in repo bundled

pcw_8x_boot1.dsk optional in repo bundled

pcw_8x_boot2.dsk optional in repo bundled

samcoupe.rom required in repo bundled

atomlite.rom optional in repo bundled

samram.rom optional in repo bundled

samram_eng.rom optional in repo bundled

coleco.rom required in repo bundled

sg1000.rom required in repo bundled

  • System: sg-1000
  • Size: 155 B
  • Source: src/cpu.c:3279-3280, src/cpu.c:3613-3617
  • Size note: Nothing is read from this file. The SG-1000 branch is empty and the source comment states the file only has to exist for the open to succeed.

sms.rom required in repo bundled

msx.rom required in repo bundled

svi.rom required in repo bundled

esxmmc085.rom optional in repo bundled

esxide085.rom optional in repo bundled

unodos3.rom optional in repo bundled

trdos.rom optional in repo bundled

if1-v1.rom optional in repo bundled

if1-v2.rom optional in repo bundled

hilow_datadrive.rom optional in repo bundled

zxmmcplus.flash optional in repo bundled

zxuno.flash optional in repo bundled

mf1.rom optional in repo bundled

mf128.rom optional in repo bundled

mf3.rom optional in repo bundled

specmate.rom optional in repo bundled

phoenix3.rom optional in repo bundled

defcon.rom optional in repo bundled

dinamid3.rom optional in repo bundled

interface007.rom optional in repo bundled

ramjet2.rom optional in repo bundled

ramjet3.rom optional in repo bundled

transtape2.rom optional in repo bundled

transtape3-vC.rom optional in repo bundled

transtape3-vA.rom optional in repo bundled

transtape3-vB.rom optional in repo bundled

hilow_barbanegra.rom optional in repo bundled

mhpokeador.rom optional in repo bundled

mhpokeador-transfer.rom optional in repo bundled

mhpokeador-salvapan.rom optional in repo bundled

mantransfev3.bin optional in repo bundled

gs105a.rom optional in repo bundled

gs104.rom optional in repo bundled

  • System: sinclair-zx-spectrum
  • Size: 32.0 KB
  • Source: src/configure:1909
  • General Sound firmware v1.04. Shipped alongside gs105a.rom, but GS_ROM_NAME is fixed and there is no option to point the loader elsewhere, so it is usable only in place of gs105a.rom.

80-lec.rom optional in repo bundled

tk90x_v1br.rom optional in repo bundled

tk90x_v2es.rom optional in repo bundled

tk95es_modif.rom optional in repo bundled

Z88OZ431.rom optional in repo bundled

Z88OZ441.rom optional in repo bundled

Z88OZ45.rom optional in repo bundled

Z88OZ46.rom optional in repo bundled

Z88UK220.rom optional in repo bundled

Z88UK300.rom optional in repo bundled

Z88UK400.rom optional in repo bundled

aszmice07.rom optional in repo bundled

  • Path: alternate_roms/aszmice07.rom
  • System: sinclair-zx81
  • Size: 8.0 KB
  • Source: src/ALTERNATEROMS:4-5, src/start.c:998
  • ASZMIC E07 replacement ROM with assembler and debugger. The 4K image is stored twice to reach 8K.

sp-rom.rom optional in repo bundled

ace.rom optional in repo bundled

opense.rom optional in repo bundled

sebasic4_rom1.rom optional in repo bundled

derby_p_32K.rom optional in repo bundled

derby_pp_64K.rom optional in repo bundled

plus2c.rom optional in repo bundled

plus2b.rom optional in repo bundled

plus3e_mmcen3eE.rom optional in repo bundled

plus3e_mmces3eE.rom optional in repo bundled

plus3e_sm8en3eE.rom optional in repo bundled

plus3e_sm8es3eE.rom optional in repo bundled

Generated on 2026-08-23T16:12:06Z