Skip to content

DOSBox-X - RetroBIOS

Type standalone
Classification Enhanced forks
Source https://github.com/joncampbell123/dosbox-x
Version 2026.08.31
Profiled 2026-09-17
Cores dosbox-x, dosboxx
Systems dos, ibm-pc, ibm-pcjr, tandy-1000, pc-98
Technical notes

Fork of DOSBox SVN with its own DOS kernel. The machine setting picks the emulated hardware: mda, cga and its composite variants, hercules, hercules_plus, hercules_incolor, hercules_color, tandy, pcjr, amstrad, olivetti/m24/att6300, pc3270, ega, ega200, jega, mcga, vgaonly, the S3, Tseng, Paradise and ATI SVGA cards, the vesa variants, and pc98/pc9801/pc9821. fm_towns is marked STUB in the same list. ref: src/dosbox.cpp:1537-1577

No system BIOS: the PC BIOS, VGA BIOS, video fonts, keyboard layouts, codepage tables, the Z: drive utilities including GLIDE2X.OVL, and the TTF text font are compiled in. ref: int10_memory.cpp, dos_keyboard_layout_data.h, dos_codepages.h, src/builtin/glide2x.cpp:2861, src/output/output_ttf.cpp:664

Files named without a directory are searched in the working directory, the program directory, the user configuration directory and the resource directory. On Linux the configuration directory is $XDG_CONFIG_HOME/dosbox-x or ~/.config/dosbox-x, and the resource directory is $APPDIR/usr/share/dosbox-x inside an AppImage, otherwise $XDG_DATA_HOME/dosbox-x, then /usr/local/share/dosbox-x, then /usr/share/dosbox-x. Windows uses C:\DOSBox-X. ref: src/ints/int10.cpp:1442-1485, src/misc/cross.cpp:129-190, 193-226

Configuration: -conf and -userconf name the files to read. Otherwise dosbox-x.conf then dosbox.conf is tried in the working directory, then in the program directory, then in the configuration directory, which is last tried for dosbox-x-<version>.conf; that file is written with the defaults when it does not exist. ref: src/gui/sdlmain.cpp:8667-8743, src/misc/cross.cpp:229-245

MT-32: libmt32emu is built from src/libs/mt32. Only four file names are ever opened, and each candidate is identified by exact file size then SHA1, so the name says nothing about the contents. addROMFile matches against the full image list only, which rejects the interleaved chip dumps. ref: src/gui/midi_mt32.h:74-109, src/libs/mt32/c_interface/c_interface.cpp:442-462, src/libs/mt32/ROMInfo.cpp:206-215 mt32.model = auto opens CM32L_CONTROL.ROM then MT32_CONTROL.ROM, and CM32L_PCM.ROM then MT32_PCM.ROM; cm32l keeps only the CM32L names, mt32 only the MT32 names. The directory is mt32.romdir, then the working directory, then the resource directory, then the configuration directory. A missing pair logs the accepted file names and disables the device. ref: src/gui/midi_mt32.h:246-275, src/dosbox.cpp:3607-3617

FluidSynth reads fluid.soundfont; fluid_synth_sfload is the only check. With the setting empty it probes /usr/share/soundfonts/default.sf2, /usr/share/sounds/sf2/FluidR3_GM.sf2 and GeneralUser_GS.sf2 on Linux, and C:\soundfonts\default.sf2 then the two same names under C:\DOSBox-X on Windows. ref: src/gui/midi_synth.h:342-384, 462-480

PC-98 character generator, tried in order: FONT.ROM as generated by T98Tools, then the FONTX2 files named by pc-98 fontx sbcs and pc-98 fontx dbcs, then the file named by pc-98 anex86 font or ANEX86.BMP followed by FREECG98.BMP, then the built-in FREECG single-byte font and the built-in Japanese double-byte font. Each stage fills only what the previous one left empty. ref: src/ints/int10.cpp:1882-1893, 1652-1675

PC-98 sound board BIOS: with pc-98 sound bios set, SOUND.ROM is read from the working directory into CC000h. Without it a callback Sound BIOS is installed at CEE0:0000 answering INT D2h. ref: src/hardware/pc98_fm.cpp:367-385, 416-434

DOS/V and CJK text: fontxsbcs, fontxsbcs16, fontxsbcs24, fontxdbcs, fontxdbcs14 and fontxdbcs24 name font files. LoadFontxFile reads a FONTX2 header, otherwise tries BDF and PCF, otherwise accepts a raw bitmap font identified by its size, which covers ASC16 and ASCFONT.15 from UCDOS and ETen Chinese DOS, ASC24, HZK14, HZK16, HZK24 and STDFONT.15 and STDFONT.24. Unset settings fall back to the built-in font data. ref: src/ints/int_dosv.cpp:654-749, 1631-1710, src/dosbox.cpp:2550-2583

BOOT -bios loads a BIOS image at the top of the first megabyte, truncated to 128 KB, or 96 KB on PC-98 where it also looks for <image>.itf.rom, <image>.ITF.ROM, itf.rom and ITF.ROM to serve the bank switched Initial Firmware Test region through port 43Dh. ref: src/dos/dos_programs.cpp:2227-2228, 2261-2350

BIOSTEST.COM loads an image of up to 64 KB at F000:0 and restarts the CPU at the reset vector; it is compiled only when the debugger is enabled. The settings call binary on reset and call binary on boot load blobs of up to 128 KB into the ROM BIOS area for CPU testing. ref: src/dos/dos_programs.cpp:3666-3719, src/ints/bios.cpp:13298-13374

A build configured with --enable-dosbox_agent reads the key=value file named by -agent-config to start the RPC debugger agent; the file names the transport and endpoint, nothing else is read from disk. ref: configure.ac:1441-1448, src/gui/sdlmain.cpp:8490-8496, src/agent/protocol/agent_protocol.cpp:477-632

Glide passthrough loads glide2x.dll, libglide2x.so or libglide2x.dylib. ref: src/hardware/glide.cpp:353-359, src/dosbox.cpp:3507-3509

ttf.font, ttf.fontbold, ttf.fontital and ttf.fontboit name a TTF, OTF, FON or TTC font resolved through the same search order plus the system font directories. Unset, the TTF output uses the built-in font, except on PC-98 or a double-byte code page where SarasaGothicFixed.ttf is tried first. ref: src/output/output_ttf.cpp:318-473, 653-668

Shipped in the resource directory: FREECG98.BMP, wqy_11pt.bdf, wqy_12pt.bdf, Nouveau_IBM.ttf, SarasaGothicFixed.ttf and the two reference configuration files. ref: src/Makefile.am:14-22

Overrides for data that is compiled in: the boot logo PNG, the mapper file, the customcodepage translation table, .kl layout files and the KEYBOARD.SYS to KEYBRD4.SYS libraries read from a mounted drive, the glshaders directory and the .lng translations. ref: src/ints/bios.cpp:11466-11475, src/gui/sdlmain.cpp:968-970, 7012-7020, src/gui/sdl_mapper.cpp:5731-5787, src/dos/dos.cpp:4402-4437, src/dos/dos_keyboard_layout.cpp:300-340, src/gui/render.cpp:1547-1554, src/misc/messages.cpp:300-326

36 files | 0 required, 36 optional | 33 in repo, 2 missing, 1 unsourceable | 5 with HLE fallback

MT32_CONTROL.ROM optional in repo
MT-32 Control v1.04

MT32_CONTROL.ROM optional in repo
MT-32 Control v1.05

MT32_CONTROL.ROM optional in repo
MT-32 Control v1.06

MT32_CONTROL.ROM optional in repo
MT-32 Control v1.07

MT32_CONTROL.ROM optional in repo
MT-32 Control BlueRidge

MT32_CONTROL.ROM optional in repo
MT-32 Control v2.03

MT32_CONTROL.ROM optional in repo
MT-32 Control v2.04

MT32_CONTROL.ROM optional in repo
MT-32 Control v2.06

MT32_CONTROL.ROM optional in repo
MT-32 Control v2.07

CM32L_CONTROL.ROM optional in repo
CM-32L/LAPC-I Control v1.00

CM32L_CONTROL.ROM optional in repo
CM-32L/LAPC-I Control v1.02

CM32L_CONTROL.ROM optional in repo
CM-32LN/CM-500/LAPC-N Control v1.00

MT32_PCM.ROM optional in repo
MT-32 PCM ROM

CM32L_PCM.ROM optional in repo
CM-32L/CM-64/LAPC-I PCM ROM

default.sf2 optional unsourceable
SoundFont the operating system installs as FluidSynth default

FluidR3_GM.sf2 optional in repo
Fluid R3 GM SoundFont by Frank Wen

GeneralUser_GS.sf2 optional missing
GeneralUser GS SoundFont by S. Christian Collins

FONT.ROM optional in repo HLE fallback
PC-98 character generator ROM, T98Tools layout

ANEX86.BMP optional in repo HLE fallback
PC-98 character generator, Anex86 bitmap

  • Source: src/ints/int10.cpp:1555-1647, src/dosbox.cpp:2498-2501
  • 2048 by 2048 monochrome Windows bitmap, biSize 40, one plane, one bit per pixel, no compression, inverse colour scheme; the first row is the 8x16 single-width set and the rest is 16x16 full-width. Also reachable through the pc-98 anex86 font setting, which is tried before FONT.ROM

FREECG98.BMP optional in repo HLE fallback
PC-98 character generator, free generated bitmap

wqy_12pt.bdf optional in repo
WenQuanYi 16-pixel bitmap font

wqy_11pt.bdf optional in repo
WenQuanYi 14-pixel bitmap font

SarasaGothicFixed.ttf optional in repo HLE fallback
CJK fixed-width TrueType font

roman.ttf optional in repo
Printer Roman typeface

sansserif.ttf optional in repo
Printer Sans Serif typeface

courier.ttf optional in repo
Printer Courier typeface

script.ttf optional in repo
Printer Script typeface

ocra.ttf optional in repo
Printer OCR-A typeface

SOUND.ROM optional in repo HLE fallback
PC-9801-26K/86 FM board BIOS

et4000.bin optional in repo
Tseng ET4000 video BIOS

TRIO64 (Ver. 1.5-07) [VGA] (S3 Incorporated).bin optional in repo
S3 Trio64 video BIOS

ibm-vga.bin optional in repo
IBM VGA option ROM of 10/27/86, laid out as mapped at C000:0

  • Size: min 16.0 KB, max 32.0 KB
  • SHA1: dce6491424f1...
  • Validation: size
  • Source: src/dos/dos_programs.cpp:3606-3632, src/dos/dos_programs.cpp:3643-3649
  • read by LOADROM.COM from a mounted local drive; accepted when the file starts with 55 AA, byte 3 masked with 0xFC equals 0xE8 and the string IBM appears at offset 0x1E, and the machine is EGA or better

IBMROMBASIC-F6000h-1982-10-27.ROM optional in repo
IBM 5150 Cassette BASIC ROM

  • Size: min 32.0 KB, max 64.0 KB
  • SHA1: 07449ebca18f...
  • Aliases: ibm-basic-1.10.rom
  • Validation: size
  • Source: src/ints/bios.cpp:13230-13250, src/dos/dos_programs.cpp:3633-3637, src/dosbox.cpp:1948-1950
  • the ibm rom basic setting maps it just below the ROM BIOS and accepts 32 KB to 64 KB in 4 KB steps; LOADROM.COM maps the same image at F600:0 when it is exactly 32768 bytes, starts with E9 8F 7E and carries the string IBM at offset 0x4CD4

system.rom optional in repo
IBM PCjr system ROM

  • Size: min 56.0 KB
  • SHA1: 1f5f7013f18c...
  • Aliases: bios.rom
  • Validation: size
  • Source: src/dos/dos_programs.cpp:3079-3088
  • read during PCjr cartridge boot; bytes 0x3000 to 0xDFFF are copied to physical F3000. A short read leaves the region untouched and the cartridge still boots

System BIOS image optional missing
PC/AT or PC-98 BIOS ROM image booted by BOOT -bios

  • Source: src/dos/dos_programs.cpp:2261-2311
  • loaded at the top of the first megabyte, rounded up to a paragraph and truncated to 128 KB, or to 96 KB on PC-98; a larger image is clamped rather than rejected

ITF.ROM optional in repo
PC-98 Initial Firmware Test BIOS

  • Size: max 32.0 KB
  • Validation: size
  • Source: src/dos/dos_programs.cpp:2313-2344
  • Platforms: batocera, retrobat
  • served through the port 43Dh bank switch alongside a BOOT -bios image; <image>.itf.rom is tried before the bare name so one directory can hold several

Generated on 2026-10-10T11:26:01Z