Skip to content

Releases

DOSBox-X 2026.10.01 2026-10-01 19:23 OSFREE

Choose a tag to compare

2026.10.01:

  • Fixed DOS FCB operations trying to read/write from device_CON when performed
    on an unopened or non-existent file. (cimarronm)
  • Don't prompt for working directory when -conf or -userconf is used
    (maron2000)
  • Added RPC debugger agent interface (freeng)
  • Fix OpenGL scaling when modeswitch is off (jpernst)
  • Modesetting resolution change exclusive to fullscreen. (DieSkarrj)
  • Added MCP Protocol support (caiiiycuk)
  • Fixed parsing of command-line executable arguments (maron2000)
  • Enable PS2 mouse events (cyberfox)
  • Fixed VHD fixed-disk geometry detection to correctly decode the partition
    start cylinder from the MBR CHS fields (the high bits were not shifted),
    reject malformed CHS/LBA partition entries instead of producing a bad or
    out-of-bounds sector address. (cimarronm)
  • Added /V arg for VER command to just report the version (bushtail)
  • drive_virtual: fixed CHDIR succeeding on a file on drive Z:
    (MaxFreedomPollard)
  • Fixed the LOCK (0xF0) prefix in the normal, full, and dynamic (dyn_x86 and
    dynrec) CPU cores to prefix the following instruction instead of
    executing as its own no-op, and raise a #UD exception on 80186+ if it
    precedes an instruction LOCK is not legal on. (cimarronm)
  • Fixed IDE CHS cylinder carry handling (caiiiycukοΌ‰
  • Fixed Voodoo OpenGL texture cache invalidation (caiiiycukοΌ‰
  • Fixed PIT timer emulation: prevented float-to-unsigned saturation on ARM
    architectures when Mode 0/4 counts past terminal count, fixed gate pause
    delay calculation for Mode 0/4, and unified Mode 2/3 gate trigger handling
    per 8253/8254 specification. (cimarronm)
  • Experimental: Added Pre-compiled .deb package for Ubuntu 22.04/24.04/26.04
    (maron2000)
  • Experimental: Added support for AppImage on x64 Linux (maron2000)
  • Fixed PIT timer emulation BCD write handling to keep packed BCD values
    intact across two-byte counter writes before converting to binary. (cimarronm)
  • Enable PS1 audio (cyberfox1)
  • Debugger: Added optional filename arguments to MEMDUMP and MEMDUMPBIN,
    defaulting to MEMDUMP.TXT and MEMDUMP.BIN. (cimarronm)
  • Fixed initial directories for GLSL and language file selection dialogs
    (maron2000)
  • ethnet: Initialize SDLNet before initializing ethnet support (patcade)
  • Fixed redefinition of enums to enable building on Macports for legacy macOS
    (maron2000)
  • Fixed build error of MinGW 64-bit builds due to MSYS2 are gradually
    dropping MinGW updates and migrate to UCRT64. (maron2000)
  • Added Pro Audio Spectrum, Pro Audio Spectrum Plus and Pro Audio Spectrum 16
    support (firevaran)
  • Added Crystal CS4231 codec, along with a Windows Sound System (WSS) support
    (cyberfox1)
  • Added Pentium Pro x87 FCMOVcc, FCOMI/FCOMIP, and FUCOMI/FUCOMIP support
    to the dyn_x86 and dynrec CPU cores, and fixed FCOMI/FUCOMI to clear AF,
    SF, and OF. (cimarronm)
  • Added Gravis Ultrasound Max support to the existing GUS implementation,
    building on the CS4231 codec (cyberfox1)
  • FPU: Restored x87 stack metadata if a push-and-load instruction faults on
    its memory operand. (cimarronm)
  • FPU: FSTENV/FNSTENV now masks all floating-point exceptions after saving the
    environment. (cimarronm)
  • Linux: Fixed garbled characters in image file open dialog (maron2000)
  • Enabled PS/2 mouse on BIOS C200 call (cyberfox1)
  • PC-98: keep the bus mouse interrupt running across save states (gymzatan)
  • Configuration tool: Fixed a crash when selecting the Devices section.
    (cimarronm)
  • Added 3D Acceleration for S3 ViRGE (LeonG-ZA)
  • Increased PAS/OPL volume to match DBX gain (cyberfox1)
  • FPU: Refactored the implementation and fixed x87 status-word
    condition-code reporting and tag words saved with FPU state. (cimarronm)
  • CoreMIDI: Fixed device name matching for names starting with digits.
    (maron2000)
  • Added Sound Blaster AWE32 support for games that use EMU8K (cyberfox1)
  • Various fixes and improvements to the original 86box derived emu8k
    implementation. (cyberfox1)
  • FPU: Unified the non-long-double, long-double, and x86 host FPU engines
    around shared 80-bit conversion and stack-loading paths. Improved accuracy
    against real x87 hardware on both x86 and non-x86 hosts. (cimarronm)
  • FPU: Unified real, integer, packed-BCD, and register store operations
    across FPU engines. Fixed x87 stack handling and incorrect integer-store
    results. (cimarronm)
  • Dynamic core: By default, pass all FPU/MMX opcodes to normal core so that
    the FPU exception handling necessary for Windows 95 to task switch the
    CPU and FPU state can work properly. In the event that this makes your
    DOS games slower, there is a dosbox.conf option to re-enable FPU/MMX
    handling by dynamic core for DOS games that do not multitask. (joncampbell123)
  • Fixed items in Configuration Tools window were cropped (maron2000)
  • Added configuration and switch for composite mode (gschmidl)

DOSBox-X 2026.10.01 2026-10-01 19:24

Choose a tag to compare

2026.10.01:

  • Fixed DOS FCB operations trying to read/write from device_CON when performed
    on an unopened or non-existent file. (cimarronm)
  • Don't prompt for working directory when -conf or -userconf is used
    (maron2000)
  • Added RPC debugger agent interface (freeng)
  • Fix OpenGL scaling when modeswitch is off (jpernst)
  • Modesetting resolution change exclusive to fullscreen. (DieSkarrj)
  • Added MCP Protocol support (caiiiycuk)
  • Fixed parsing of command-line executable arguments (maron2000)
  • Enable PS2 mouse events (cyberfox)
  • Fixed VHD fixed-disk geometry detection to correctly decode the partition
    start cylinder from the MBR CHS fields (the high bits were not shifted),
    reject malformed CHS/LBA partition entries instead of producing a bad or
    out-of-bounds sector address. (cimarronm)
  • Added /V arg for VER command to just report the version (bushtail)
  • drive_virtual: fixed CHDIR succeeding on a file on drive Z:
    (MaxFreedomPollard)
  • Fixed the LOCK (0xF0) prefix in the normal, full, and dynamic (dyn_x86 and
    dynrec) CPU cores to prefix the following instruction instead of
    executing as its own no-op, and raise a #UD exception on 80186+ if it
    precedes an instruction LOCK is not legal on. (cimarronm)
  • Fixed IDE CHS cylinder carry handling (caiiiycukοΌ‰
  • Fixed Voodoo OpenGL texture cache invalidation (caiiiycukοΌ‰
  • Fixed PIT timer emulation: prevented float-to-unsigned saturation on ARM
    architectures when Mode 0/4 counts past terminal count, fixed gate pause
    delay calculation for Mode 0/4, and unified Mode 2/3 gate trigger handling
    per 8253/8254 specification. (cimarronm)
  • Experimental: Added Pre-compiled .deb package for Ubuntu 22.04/24.04/26.04
    (maron2000)
  • Experimental: Added support for AppImage on x64 Linux (maron2000)
  • Fixed PIT timer emulation BCD write handling to keep packed BCD values
    intact across two-byte counter writes before converting to binary. (cimarronm)
  • Enable PS1 audio (cyberfox1)
  • Debugger: Added optional filename arguments to MEMDUMP and MEMDUMPBIN,
    defaulting to MEMDUMP.TXT and MEMDUMP.BIN. (cimarronm)
  • Fixed initial directories for GLSL and language file selection dialogs
    (maron2000)
  • ethnet: Initialize SDLNet before initializing ethnet support (patcade)
  • Fixed redefinition of enums to enable building on Macports for legacy macOS
    (maron2000)
  • Fixed build error of MinGW 64-bit builds due to MSYS2 are gradually
    dropping MinGW updates and migrate to UCRT64. (maron2000)
  • Added Pro Audio Spectrum, Pro Audio Spectrum Plus and Pro Audio Spectrum 16
    support (firevaran)
  • Added Crystal CS4231 codec, along with a Windows Sound System (WSS) support
    (cyberfox1)
  • Added Pentium Pro x87 FCMOVcc, FCOMI/FCOMIP, and FUCOMI/FUCOMIP support
    to the dyn_x86 and dynrec CPU cores, and fixed FCOMI/FUCOMI to clear AF,
    SF, and OF. (cimarronm)
  • Added Gravis Ultrasound Max support to the existing GUS implementation,
    building on the CS4231 codec (cyberfox1)
  • FPU: Restored x87 stack metadata if a push-and-load instruction faults on
    its memory operand. (cimarronm)
  • FPU: FSTENV/FNSTENV now masks all floating-point exceptions after saving the
    environment. (cimarronm)
  • Linux: Fixed garbled characters in image file open dialog (maron2000)
  • Enabled PS/2 mouse on BIOS C200 call (cyberfox1)
  • PC-98: keep the bus mouse interrupt running across save states (gymzatan)
  • Configuration tool: Fixed a crash when selecting the Devices section.
    (cimarronm)
  • Added 3D Acceleration for S3 ViRGE (LeonG-ZA)
  • Increased PAS/OPL volume to match DBX gain (cyberfox1)
  • FPU: Refactored the implementation and fixed x87 status-word
    condition-code reporting and tag words saved with FPU state. (cimarronm)
  • CoreMIDI: Fixed device name matching for names starting with digits.
    (maron2000)
  • Added Sound Blaster AWE32 support for games that use EMU8K (cyberfox1)
  • Various fixes and improvements to the original 86box derived emu8k
    implementation. (cyberfox1)
  • FPU: Unified the non-long-double, long-double, and x86 host FPU engines
    around shared 80-bit conversion and stack-loading paths. Improved accuracy
    against real x87 hardware on both x86 and non-x86 hosts. (cimarronm)
  • FPU: Unified real, integer, packed-BCD, and register store operations
    across FPU engines. Fixed x87 stack handling and incorrect integer-store
    results. (cimarronm)
  • Dynamic core: By default, pass all FPU/MMX opcodes to normal core so that
    the FPU exception handling necessary for Windows 95 to task switch the
    CPU and FPU state can work properly. In the event that this makes your
    DOS games slower, there is a dosbox.conf option to re-enable FPU/MMX
    handling by dynamic core for DOS games that do not multitask. (joncampbell123)
  • Fixed items in Configuration Tools window were cropped (maron2000)
  • Added configuration and switch for composite mode (gschmidl)

DOSBox-X 2026.08.31 2026-09-01 08:45 OSFREE

Choose a tag to compare

2026.08.31:

  • Added support for mounting TeleDisk (.td0) floppy image files. (cimarronm)
  • Fixed prompting of working directory option (maron2000)
  • Relax sanity check of floppy image considering specially formatted disks
    (maron2000)
  • Disk sector I/O now returns typed INT 13h status codes instead of a
    catch-all error, and the INT 13h handler propagates the specific code
    (seek failed, controller failure, CRC/data error, etc.) into register
    AH on read/write errors rather than collapsing every failure to 0x04.
    Also fixes AH being left stale on write errors and a VFD fill-sector
    write that reported failure after succeeding. (cimarronm)
  • On non-MSC, only define MIN/MAX if not already defined (skitt)
  • Fixed FreeDOS XCOPY failed to copy files when destination directory was
    not specified (maron2000)
  • IMGMOUNT: Fixed a regression that didn't try loading IMGMAKE.IMG if no
    image was specified (maron2000)
  • Fixed a build error when FFmpeg is upgraded to FFmpeg 9 (maron2000)
  • Fixed freeze when savestate flagged file not found (rebb)
  • Fixed capture and savestate directory locations (maron2000)
  • Refactored the imageDisk subclasses into their own source files and headers
    (VFD, D88, NFD, empty drive, INT 13h passthrough, El Torito floppy, and
    MS-DOS block device), leaving the base imageDisk class and BIOS disk-list
    plumbing in bios_disk. (cimarronm)
  • Shell init: allocate the COMMAND.COM environment block after allocating the
    shell binary/PSP in both SHELL_Init() and CONFIGSHELL_Init(), so memory
    layout and ownership ordering match expected MCB-chain behavior. (cimarronm)
  • Debugger: fixed disassembler showing 16-bit register names for byte-sized
    operands. (cimarronm)
  • Fixed INT 13h CHS decoding for floppies, which incorrectly used the hard
    disk layout (10-bit cylinder / 6-bit sector) instead of the floppy layout
    (8-bit cylinder in CH / 8-bit sector in CL) on read, write, and get drive
    parameters. (cimarronm)
  • Fixed savestates written by a Windows build failing to load on Linux
    builds. The per-drive Opts struct in the DOS component held an unsigned
    long, which is 4 bytes on Windows and 8 on LP64 hosts, so the saved stream
    desynchronized and the load ran off the end of the component. Also fixed
    POD_Load_DOS_Mscdex looping forever on an out-of-range CD drive count, and
    mounted drive paths keeping their Windows path separators when a state is
    restored on a non-Windows host. (ozy24)
  • Fixed chs_write packing the high cylinder bits into the sector field of the
    synthesized MBR partition table, which corrupted the end-CHS entry for disks
    with an end cylinder above 255. (cimarronm)
  • Floppy INT 13h sector reads/writes now honor the bytes-per-sector code from
    the disk base table pointed to by INT 1Eh instead of assuming 512, allowing
    guests that reprogram INT 1Eh to access non-512 media. (cimarronm)
  • Debugger: Resolved named variables in expressions (zlatkok)
  • OpenGL: Fixed fullscreen and modeswitching positional offsets. (DieSkaarj)
  • Simplified the MCB filename-stripping logic in DOS_Execute(). (cimarronm)
  • Fixed FAT volume labels being displayed as 8.3 filenames. (cimarronm)
  • Fixed crash of Win9x lowend build at launch due to use of AttachConsole()
    function (maron2000)
  • Fixed a out-of-bounds array access bug in drive_virtual.cpp (maron2000)

DOSBox-X 2026.08.31 2026-09-01 08:45

Choose a tag to compare

@joncampbell123 joncampbell123 released this 01 Sep 15:44
4f19017

2026.08.31:

  • Added support for mounting TeleDisk (.td0) floppy image files. (cimarronm)
  • Fixed prompting of working directory option (maron2000)
  • Relax sanity check of floppy image considering specially formatted disks
    (maron2000)
  • Disk sector I/O now returns typed INT 13h status codes instead of a
    catch-all error, and the INT 13h handler propagates the specific code
    (seek failed, controller failure, CRC/data error, etc.) into register
    AH on read/write errors rather than collapsing every failure to 0x04.
    Also fixes AH being left stale on write errors and a VFD fill-sector
    write that reported failure after succeeding. (cimarronm)
  • On non-MSC, only define MIN/MAX if not already defined (skitt)
  • Fixed FreeDOS XCOPY failed to copy files when destination directory was
    not specified (maron2000)
  • IMGMOUNT: Fixed a regression that didn't try loading IMGMAKE.IMG if no
    image was specified (maron2000)
  • Fixed a build error when FFmpeg is upgraded to FFmpeg 9 (maron2000)
  • Fixed freeze when savestate flagged file not found (rebb)
  • Fixed capture and savestate directory locations (maron2000)
  • Refactored the imageDisk subclasses into their own source files and headers
    (VFD, D88, NFD, empty drive, INT 13h passthrough, El Torito floppy, and
    MS-DOS block device), leaving the base imageDisk class and BIOS disk-list
    plumbing in bios_disk. (cimarronm)
  • Shell init: allocate the COMMAND.COM environment block after allocating the
    shell binary/PSP in both SHELL_Init() and CONFIGSHELL_Init(), so memory
    layout and ownership ordering match expected MCB-chain behavior. (cimarronm)
  • Debugger: fixed disassembler showing 16-bit register names for byte-sized
    operands. (cimarronm)
  • Fixed INT 13h CHS decoding for floppies, which incorrectly used the hard
    disk layout (10-bit cylinder / 6-bit sector) instead of the floppy layout
    (8-bit cylinder in CH / 8-bit sector in CL) on read, write, and get drive
    parameters. (cimarronm)
  • Fixed savestates written by a Windows build failing to load on Linux
    builds. The per-drive Opts struct in the DOS component held an unsigned
    long, which is 4 bytes on Windows and 8 on LP64 hosts, so the saved stream
    desynchronized and the load ran off the end of the component. Also fixed
    POD_Load_DOS_Mscdex looping forever on an out-of-range CD drive count, and
    mounted drive paths keeping their Windows path separators when a state is
    restored on a non-Windows host. (ozy24)
  • Fixed chs_write packing the high cylinder bits into the sector field of the
    synthesized MBR partition table, which corrupted the end-CHS entry for disks
    with an end cylinder above 255. (cimarronm)
  • Floppy INT 13h sector reads/writes now honor the bytes-per-sector code from
    the disk base table pointed to by INT 1Eh instead of assuming 512, allowing
    guests that reprogram INT 1Eh to access non-512 media. (cimarronm)
  • Debugger: Resolved named variables in expressions (zlatkok)
  • OpenGL: Fixed fullscreen and modeswitching positional offsets. (DieSkaarj)
  • Simplified the MCB filename-stripping logic in DOS_Execute(). (cimarronm)
  • Fixed FAT volume labels being displayed as 8.3 filenames. (cimarronm)
  • Fixed crash of Win9x lowend build at launch due to use of AttachConsole()
    function (maron2000)
  • Fixed a out-of-bounds array access bug in drive_virtual.cpp (maron2000)

DOSBox-X 2026.08.02 2026-08-02 21:30 OSFREE

Choose a tag to compare

2026.08.02

  • Debugger: normalize 16-bit segmented offsets for address display/lookup and
    avoid false "[illegal]" memory operand reports in AnalyzeInstruction()
    (cimarronm)
  • Fixed character rendering and mouse cursor display in DOS/V Japanese mode.
    (nanshiki)
  • Fixed build error of OSFREE release builds (maron2000)
  • Added floppy BPB sanity check, and rearranged existing floppy BPB check code
    (maron2000)
  • Fixed window resizing (OpenGL, SDL2) (misty7666)
  • Updated Nuked-OPL3-fast to v1.8-fast.3 (tgies)
  • Added support for nested subdirectories in Z drive (maron2000)
  • Added experimental "ethnet" command and protocol for NE2000 emulation. Instead
    of using the pcap promiscious mode, which doesn't work over Wi-fi, a client
    server setup can be configured to emulate a private lan between instances of
    DOSBox-X either on localhost or on the local area network. The ethnet command
    is deliberately built so that client and server set up is the same command
    structure as the "ipx" command used to set up an IPX network in DOSBox and
    DOSBox-X. (joncampbell123)
  • FAT driver performance improvements, at least for directory enumeration,
    file creation, reading, and writing (joncampbell123).
  • Added PC3270 and Olivetti machine types (firevaran).
  • Fixed fatDrive error paths so truncated boot-sector reads no longer look
    like successful mounts, and early returns now close diskfile handles
    instead of leaking them. (cimarronm)
  • INT 33h: In PC-98 mode, do not maintain a hide/show display count to match
    real mouse driver behavior (nanshiki)

DOSBox-X 2026.08.02 2026-08-02 21:30

Choose a tag to compare

2026.08.02

  • Debugger: normalize 16-bit segmented offsets for address display/lookup and
    avoid false "[illegal]" memory operand reports in AnalyzeInstruction()
    (cimarronm)
  • Fixed character rendering and mouse cursor display in DOS/V Japanese mode.
    (nanshiki)
  • Fixed build error of OSFREE release builds (maron2000)
  • Added floppy BPB sanity check, and rearranged existing floppy BPB check code
    (maron2000)
  • Fixed window resizing (OpenGL, SDL2) (misty7666)
  • Updated Nuked-OPL3-fast to v1.8-fast.3 (tgies)
  • Added support for nested subdirectories in Z drive (maron2000)
  • Added experimental "ethnet" command and protocol for NE2000 emulation. Instead
    of using the pcap promiscious mode, which doesn't work over Wi-fi, a client
    server setup can be configured to emulate a private lan between instances of
    DOSBox-X either on localhost or on the local area network. The ethnet command
    is deliberately built so that client and server set up is the same command
    structure as the "ipx" command used to set up an IPX network in DOSBox and
    DOSBox-X. (joncampbell123)
  • FAT driver performance improvements, at least for directory enumeration,
    file creation, reading, and writing (joncampbell123).
  • Added PC3270 and Olivetti machine types (firevaran).
  • Fixed fatDrive error paths so truncated boot-sector reads no longer look
    like successful mounts, and early returns now close diskfile handles
    instead of leaking them. (cimarronm)
  • INT 33h: In PC-98 mode, do not maintain a hide/show display count to match
    real mouse driver behavior (nanshiki)

DOSBox-X 2026.07.02 2026-07-02 18:55

Choose a tag to compare

2026.07.02

  • Prepare for release. This time release OSFREE first so that the normal
    version appears first on GitHub.
  • Fixed savestate format incompatibility between MSVC and MinGW builds.
    (AleWin32)
  • Fixed PMULLW signedness issues. (bachimusprime)
  • Fixed FPU_Reg_80 size (cimarronm)
  • gui/sdl_mapper: Fixed startup crash with joysticks reporting >1 hat switch
    (BoykoNeov)
  • Added Nuked-CQM support to OPL emulation. (maron2000)
  • macOS: Build OSFREE nightly builds (maron2000)
  • D3D11: Fix Aspect ratio and Window size was not reflected when returning
    from fullscreen mode (maron2000)
  • qcow2: Set logical (BIOS) CHS instead of physical (IDE) CHS when mounted
    with Drive numbers. (maron2000)
  • Debugger: fix F11 (trace into next instruction) collision being swallowed
    by Windows Terminal (AleWin32)
  • Show OSFREE in the title and help message to distinguish OSFREE builds.
    (maron2000)
  • Fixed possible boot failure when booted from "Boot from disk image" menu.
    (maron2000)
  • Fixed dialog box didn't show when an ISO was mounted via dropdown menu.
    (maron2000)
  • printer.cpp: Fixed various printer emulation issues (maron2000)
    Fixed handling of variable_length command
    Fixed a typo in ESC S command
    Skip DBCS processing for bit graphic data
    Fixed advancing cell position of DBCS characters
  • Fixed geometry detection of host folder converted drives (maron2000)

DOSBox-X 2026.07.02 2026-07-02 18:53 OSFREE

Choose a tag to compare

2026.07.02

  • Prepare for release. This time release OSFREE first so that the normal
    version appears first on GitHub.
  • Fixed savestate format incompatibility between MSVC and MinGW builds.
    (AleWin32)
  • Fixed PMULLW signedness issues. (bachimusprime)
  • Fixed FPU_Reg_80 size (cimarronm)
  • gui/sdl_mapper: Fixed startup crash with joysticks reporting >1 hat switch
    (BoykoNeov)
  • Added Nuked-CQM support to OPL emulation. (maron2000)
  • macOS: Build OSFREE nightly builds (maron2000)
  • D3D11: Fix Aspect ratio and Window size was not reflected when returning
    from fullscreen mode (maron2000)
  • qcow2: Set logical (BIOS) CHS instead of physical (IDE) CHS when mounted
    with Drive numbers. (maron2000)
  • Debugger: fix F11 (trace into next instruction) collision being swallowed
    by Windows Terminal (AleWin32)
  • Show OSFREE in the title and help message to distinguish OSFREE builds.
    (maron2000)
  • Fixed possible boot failure when booted from "Boot from disk image" menu.
    (maron2000)
  • Fixed dialog box didn't show when an ISO was mounted via dropdown menu.
    (maron2000)
  • printer.cpp: Fixed various printer emulation issues (maron2000)
    Fixed handling of variable_length command
    Fixed a typo in ESC S command
    Skip DBCS processing for bit graphic data
    Fixed advancing cell position of DBCS characters
  • Fixed geometry detection of host folder converted drives (maron2000)

DOSBox-X 2026.06.02 2026-06-02 09:05 OSFREE

Choose a tag to compare

2026.06.02

  • DOS file search bugfix: Prevent undefined stat_block usage on failed
    ht_stat() calls. Use a separate variable for special file attribute
    checks to avoid reusing stat_block when it contains garbage values.
    This fixes issues on latest Darwin kernels. (cimarronm)

  • Added function to config to load MS-DOS device drivers. The command is
    config -device -devparm . For example,
    to load OAKCDROM.SYS into memory, you could type:

    config -device C:\DOS\OAKCDROM.SYS -devparm "/D:CD001"

    which is equivalent to the DEVICE line in CONFIG.SYS:

    DEVICE=C:\DOS\OAKCDROM.SYS /D:CD001

    The goal is that DOSBox-X would fully support, through INT 21h and
    other interfaces, real device drivers instead of hard coding specific
    driver emulation. INT 21h would use the actual device chain instead
    of a built-in list. Built-in device emulation could appear properly
    in the device chain instead of fake entries.

    There seems to be interest on the DOSBox-X discussion and issue trackers
    of getting DOSBox-X to provide or emulate the MS-DOS/Windows 95 IFS
    driver to get Windows 95 to boot from a disk image in the native DOSBox-X
    environment, perhaps this would help enable that.

    At this time (in development), only INIT is called. (joncampbell123)

  • External DOS device driver read/write: Optimize I/O by using larger
    read/write transfers (currently 16 based on how much memory is allocated
    for device driver I/O request and data). Until this change, the code
    used an extremely inefficient 1-byte read/write method to transfer
    to or from the device driver. (joncampbell123)

  • DOS execute bugfix: While ownership was properly listed in the MCB for
    the PSP segment, the environment block associated with the program was
    always listed in the MCB as belonging to the parent process. This has
    been addressed (joncampbell123)

  • Fix INT 21h AH=3Fh/40h READ/WRITE processing, when talking to an external
    MS-DOS device driver, so that the bytes actually processed by the driver
    are returned in AX to the DOS program, instead of giving the DOS program
    the impression that all were processed when they may not have been. (joncampbell123)

  • CD Audio: Fix track not advancing at end of playback (maron2000)

  • Fix geometry detection of qcow2 images (maron2000)

  • Fixed advanced scaler rendering artifacts when machine type is MDA,
    Hercules, CGA, EGA, Tandy, or PCjr, or when SVGA 15/16bpp SVGA modes
    are active. CGA/EGA with Advanced MAME 2x/3x and HQ2X scalers should
    render correctly now. (joncampbell123)

  • Added dosbox.conf [devices] section, which functions much like the
    DEVICE= lines in CONFIG.SYS to load MS-DOS device drivers at startup.
    Added support for RUN= lines to run commands like IMGMOUNT to help
    set up drive mounts and CD-ROM devices, or any other diagnostic
    purpose. While RUN= works just like the command shell, it is not
    intended to be a general command shell for running DOS games or
    applications that are unrelated to system startup. Added debugging
    options like ECHO which echo the command about to be run, and
    DEBUGBREAK which breaks into the debugger when starting the program
    or device driver. (joncampbell123)

  • Added code to device driver loading which will, where possible,
    attempt to load the device driver as low as possible and pack it into
    the DOS kernel below the start of the MCB chain to resemble how
    device drivers are loaded in MS-DOS. (joncampbell123)

  • Added debugger command "DOS DEVS" to list and enumerate the device
    drivers in the DOS kernel. Added code to BOOT --boothax msdos to
    track the location of the device driver list in the guest MS-DOS
    kernel so "DOS DEVS" can work there as well. (joncampbell123)

  • DOSBox-X shell will now free any memory it allocated and close files
    that were opened on shutdown. This is important so that the CONFIG
    shell (used for loading device drivers) does not leave behind
    any memory it allocated when transferring control to the main
    command shell. However, do NOT release memory and do NOT close files
    on shell shutdown if the reason for the shutdown is the BOOT command.
    By the time normal shutdown occurs, the BOOT command has already
    overwritten low memory (and the MCB chain) with the guest OS's boot
    code, therefore freeing shell memory in that cause would only cause
    a complaint about a corrupted MCB chain and emulator E_Exit() shutdown.
    (joncampbell123)

  • Fixed VHD, qcow2 image geometry calculation (maron2000)

  • Fix CONFIG vs DOS shell to ensure the welcome screen is printed first
    before anything else on the console during startup. This is to help
    keep any output from programs and device drivers on screen where
    the user can see it (joncampbell123)

  • Add basic support for MS-DOS block device drivers. If a block device
    driver succeeds, set up a disk image object and attach it to the
    FAT filesystem driver, and then a drive letter. At this time, this
    is enough for Microsoft RAMDRIVE.SYS to load and appear as a working
    drive letter in DOSBox-X (joncampbell123)

  • CD-ROM device emulation is no longer strictly tied to MSCDEX emulation.
    While devices are still initialized through MSCDEX emulation, it is now
    possible for other parts of emulation to own a reference to it without
    MSCDEX. This means it is now possible for CD-ROM emulation to work
    after booting a guest OS without reaching back through MSCDEX emulation,
    and MSCDEX emulation can now unload properly with the rest of the DOS
    kernel. (joncampbell123)

  • Fix bug where El Torito no emulation boot failed to notify the DOS
    kernel that the MCB chain is no longer valid, causing MCB chain corruption
    crashes. (joncampbell123)

  • Added checks to sector I/O code to fix potential buffer overrun issues.
    (orbisai0security)

  • Fixed logging of 'Packed file is corrupt' message detection (maron2000)

  • Fixed upper 32-bit of LBA was always cleared (maron2000)

  • Fix and revise MSCDEX and CD-ROM emulation to disentangle the two,
    so that MSCDEX no longer needs to remain in the background when BOOTed
    into a guest OS for IDE emulation to work. (joncampbell123)

  • CD-ROM emulation updated to use reference counting to improve sharing
    of the image between IDE, MSCDEX, and general CD-ROM emulation.
    IDE emulation can hold on to a reference instead of constantly asking
    MSCDEX for it. (joncampbell123)

  • Fix bug where mounting an invalid CUE file with no tracks caused DOSBox-X
    to crash. (joncampbell123)

  • MSCDEX and CD-ROM emulation: Cleanup and centralize creation of CD-ROM
    interface objects, including the creation of the fake "empty" special
    interface used to emulate an empty CD-ROM drive. (joncampbell123)

  • Revise MSCDEX emulation to separate the CD-ROM subunit and drive tracking
    from MSCDEX itself so that state can persist properly for a guest OS
    even when MSCDEX is shutdown during BOOT. (joncampbell123)

  • Add -replace option to IMGMOUNT to allow changing the ISO image assigned
    to a CD-ROM drive without changing or altering the drive letter already
    assigned. -replace is strictly limited to CD-ROM drives where the drive
    letter is already assigned to that drive letter. (joncampbell123)

  • Clean up the Drives menu for any drive letter assigned to a CD-ROM drive.
    Enable the "Mount a disk or CD image file" and "Mount multiple disk/CD images"
    even if the drive letter already has a CD-ROM drive attached, in which case
    the menu item just replaces it. Allow these menu items to work even when
    running a guest OS so that Windows 95 users can load any ISO image they
    want at any time, instead of having to pre-load all images they will need
    on a swap chain before BOOT. (joncampbell123)

  • Replace ISO mounting code from the menu item to call more directly into
    IMGMOUNT to avoid making a commad shell object which would probably interfere
    with the guest OS. (joncampbell123)

  • Enable the "Unmount drive" menu option under Drives for any drive attached
    to a CD-ROM drive while running a guest OS like Windows 95. When used in
    that scenario, it does not remove the drive letter, but instead acts like
    a command to eject the CD from the CD-ROM drive (swaps in the "empty"
    CD-ROM image). In the DOSBox-X environment "Unmount drive" will still
    unmount the drive and remove the drive letter as expected. (joncampbell123)

  • "Swap disk" menu item under "Drives" is now enabled even while running a
    guest OS like Windows 95, if the drive is associated with a CD-ROM drive.
    Using the command rotates through the CD-ROM drive swap chain only for
    that specific drive, instead of all drives as the Swap CD mapper shortcut
    would do. (joncampbell123)

  • IDE emulation: Skip the CD-ROM eject / unload / load delay if media change
    is swapping to the "empty" CD-ROM image object. (joncampbell123)

  • Program object (base class of built-in commands) will no longer attempt to
    do anything with PSP segments or command line strings in memory if invoked
    while DOS kernel is disabled (running a guest OS). (joncampbell123)

  • IDE ATAPI CD-ROM emulation: If the guest issues the START/STOP command
    to eject the CD-ROM drive, replace the CD-ROM image with the "empty" object
    to emulate a now-empty CD-ROM drive. (joncampbell123)

  • Enable "Swap disk" menu command for floppy drives even while running a
    guest OS, as long as a floppy drive was already mounted there. (joncampbell123)

  • BOOT: Fixed a regression of floppy image detection (maron2000)

  • Sound Blaster DSP command 0x10 (Direct DAC) and Disney So...

Read more

DOSBox-X 2026.06.02 2026-06-02 09:05

Choose a tag to compare

2026.06.02

  • DOS file search bugfix: Prevent undefined stat_block usage on failed
    ht_stat() calls. Use a separate variable for special file attribute
    checks to avoid reusing stat_block when it contains garbage values.
    This fixes issues on latest Darwin kernels. (cimarronm)

  • Added function to config to load MS-DOS device drivers. The command is
    config -device -devparm . For example,
    to load OAKCDROM.SYS into memory, you could type:

    config -device C:\DOS\OAKCDROM.SYS -devparm "/D:CD001"

    which is equivalent to the DEVICE line in CONFIG.SYS:

    DEVICE=C:\DOS\OAKCDROM.SYS /D:CD001

    The goal is that DOSBox-X would fully support, through INT 21h and
    other interfaces, real device drivers instead of hard coding specific
    driver emulation. INT 21h would use the actual device chain instead
    of a built-in list. Built-in device emulation could appear properly
    in the device chain instead of fake entries.

    There seems to be interest on the DOSBox-X discussion and issue trackers
    of getting DOSBox-X to provide or emulate the MS-DOS/Windows 95 IFS
    driver to get Windows 95 to boot from a disk image in the native DOSBox-X
    environment, perhaps this would help enable that.

    At this time (in development), only INIT is called. (joncampbell123)

  • External DOS device driver read/write: Optimize I/O by using larger
    read/write transfers (currently 16 based on how much memory is allocated
    for device driver I/O request and data). Until this change, the code
    used an extremely inefficient 1-byte read/write method to transfer
    to or from the device driver. (joncampbell123)

  • DOS execute bugfix: While ownership was properly listed in the MCB for
    the PSP segment, the environment block associated with the program was
    always listed in the MCB as belonging to the parent process. This has
    been addressed (joncampbell123)

  • Fix INT 21h AH=3Fh/40h READ/WRITE processing, when talking to an external
    MS-DOS device driver, so that the bytes actually processed by the driver
    are returned in AX to the DOS program, instead of giving the DOS program
    the impression that all were processed when they may not have been. (joncampbell123)

  • CD Audio: Fix track not advancing at end of playback (maron2000)

  • Fix geometry detection of qcow2 images (maron2000)

  • Fixed advanced scaler rendering artifacts when machine type is MDA,
    Hercules, CGA, EGA, Tandy, or PCjr, or when SVGA 15/16bpp SVGA modes
    are active. CGA/EGA with Advanced MAME 2x/3x and HQ2X scalers should
    render correctly now. (joncampbell123)

  • Added dosbox.conf [devices] section, which functions much like the
    DEVICE= lines in CONFIG.SYS to load MS-DOS device drivers at startup.
    Added support for RUN= lines to run commands like IMGMOUNT to help
    set up drive mounts and CD-ROM devices, or any other diagnostic
    purpose. While RUN= works just like the command shell, it is not
    intended to be a general command shell for running DOS games or
    applications that are unrelated to system startup. Added debugging
    options like ECHO which echo the command about to be run, and
    DEBUGBREAK which breaks into the debugger when starting the program
    or device driver. (joncampbell123)

  • Added code to device driver loading which will, where possible,
    attempt to load the device driver as low as possible and pack it into
    the DOS kernel below the start of the MCB chain to resemble how
    device drivers are loaded in MS-DOS. (joncampbell123)

  • Added debugger command "DOS DEVS" to list and enumerate the device
    drivers in the DOS kernel. Added code to BOOT --boothax msdos to
    track the location of the device driver list in the guest MS-DOS
    kernel so "DOS DEVS" can work there as well. (joncampbell123)

  • DOSBox-X shell will now free any memory it allocated and close files
    that were opened on shutdown. This is important so that the CONFIG
    shell (used for loading device drivers) does not leave behind
    any memory it allocated when transferring control to the main
    command shell. However, do NOT release memory and do NOT close files
    on shell shutdown if the reason for the shutdown is the BOOT command.
    By the time normal shutdown occurs, the BOOT command has already
    overwritten low memory (and the MCB chain) with the guest OS's boot
    code, therefore freeing shell memory in that cause would only cause
    a complaint about a corrupted MCB chain and emulator E_Exit() shutdown.
    (joncampbell123)

  • Fixed VHD, qcow2 image geometry calculation (maron2000)

  • Fix CONFIG vs DOS shell to ensure the welcome screen is printed first
    before anything else on the console during startup. This is to help
    keep any output from programs and device drivers on screen where
    the user can see it (joncampbell123)

  • Add basic support for MS-DOS block device drivers. If a block device
    driver succeeds, set up a disk image object and attach it to the
    FAT filesystem driver, and then a drive letter. At this time, this
    is enough for Microsoft RAMDRIVE.SYS to load and appear as a working
    drive letter in DOSBox-X (joncampbell123)

  • CD-ROM device emulation is no longer strictly tied to MSCDEX emulation.
    While devices are still initialized through MSCDEX emulation, it is now
    possible for other parts of emulation to own a reference to it without
    MSCDEX. This means it is now possible for CD-ROM emulation to work
    after booting a guest OS without reaching back through MSCDEX emulation,
    and MSCDEX emulation can now unload properly with the rest of the DOS
    kernel. (joncampbell123)

  • Fix bug where El Torito no emulation boot failed to notify the DOS
    kernel that the MCB chain is no longer valid, causing MCB chain corruption
    crashes. (joncampbell123)

  • Added checks to sector I/O code to fix potential buffer overrun issues.
    (orbisai0security)

  • Fixed logging of 'Packed file is corrupt' message detection (maron2000)

  • Fixed upper 32-bit of LBA was always cleared (maron2000)

  • Fix and revise MSCDEX and CD-ROM emulation to disentangle the two,
    so that MSCDEX no longer needs to remain in the background when BOOTed
    into a guest OS for IDE emulation to work. (joncampbell123)

  • CD-ROM emulation updated to use reference counting to improve sharing
    of the image between IDE, MSCDEX, and general CD-ROM emulation.
    IDE emulation can hold on to a reference instead of constantly asking
    MSCDEX for it. (joncampbell123)

  • Fix bug where mounting an invalid CUE file with no tracks caused DOSBox-X
    to crash. (joncampbell123)

  • MSCDEX and CD-ROM emulation: Cleanup and centralize creation of CD-ROM
    interface objects, including the creation of the fake "empty" special
    interface used to emulate an empty CD-ROM drive. (joncampbell123)

  • Revise MSCDEX emulation to separate the CD-ROM subunit and drive tracking
    from MSCDEX itself so that state can persist properly for a guest OS
    even when MSCDEX is shutdown during BOOT. (joncampbell123)

  • Add -replace option to IMGMOUNT to allow changing the ISO image assigned
    to a CD-ROM drive without changing or altering the drive letter already
    assigned. -replace is strictly limited to CD-ROM drives where the drive
    letter is already assigned to that drive letter. (joncampbell123)

  • Clean up the Drives menu for any drive letter assigned to a CD-ROM drive.
    Enable the "Mount a disk or CD image file" and "Mount multiple disk/CD images"
    even if the drive letter already has a CD-ROM drive attached, in which case
    the menu item just replaces it. Allow these menu items to work even when
    running a guest OS so that Windows 95 users can load any ISO image they
    want at any time, instead of having to pre-load all images they will need
    on a swap chain before BOOT. (joncampbell123)

  • Replace ISO mounting code from the menu item to call more directly into
    IMGMOUNT to avoid making a commad shell object which would probably interfere
    with the guest OS. (joncampbell123)

  • Enable the "Unmount drive" menu option under Drives for any drive attached
    to a CD-ROM drive while running a guest OS like Windows 95. When used in
    that scenario, it does not remove the drive letter, but instead acts like
    a command to eject the CD from the CD-ROM drive (swaps in the "empty"
    CD-ROM image). In the DOSBox-X environment "Unmount drive" will still
    unmount the drive and remove the drive letter as expected. (joncampbell123)

  • "Swap disk" menu item under "Drives" is now enabled even while running a
    guest OS like Windows 95, if the drive is associated with a CD-ROM drive.
    Using the command rotates through the CD-ROM drive swap chain only for
    that specific drive, instead of all drives as the Swap CD mapper shortcut
    would do. (joncampbell123)

  • IDE emulation: Skip the CD-ROM eject / unload / load delay if media change
    is swapping to the "empty" CD-ROM image object. (joncampbell123)

  • Program object (base class of built-in commands) will no longer attempt to
    do anything with PSP segments or command line strings in memory if invoked
    while DOS kernel is disabled (running a guest OS). (joncampbell123)

  • IDE ATAPI CD-ROM emulation: If the guest issues the START/STOP command
    to eject the CD-ROM drive, replace the CD-ROM image with the "empty" object
    to emulate a now-empty CD-ROM drive. (joncampbell123)

  • Enable "Swap disk" menu command for floppy drives even while running a
    guest OS, as long as a floppy drive was already mounted there. (joncampbell123)

  • BOOT: Fixed a regression of floppy image detection (maron2000)

  • Sound Blaster DSP command 0x10 (Direct DAC) and Disney So...

Read more