Releases: joncampbell123/dosbox-x
Release list
DOSBox-X 2026.08.02 2026-08-02 21:30 OSFREE
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
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
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
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
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...
DOSBox-X 2026.06.02 2026-06-02 09:05
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...
DOSBox-X 2026.05.02 2026-05-02 09:05 OSFREE
2026.05.02
- DOSBox-X will now check both the current directory and the .config
directory in your home directory for DOSBox-X logo PNG files.
It is now possible to configure one set of PNG files as a default
for all uses of DOSBox-X from your user account. (joncampbell123). - src/gui/render.cpp: Added missing ifdef conditional on C_METAL to enable
building on macOS platforms without Metal support. (herrnst) - Fixed Metal support detection: add framework linker flags to configure
check (maron2000) - Fixed window position not centered even when windowposition option is set
to do so. (maron2000) - Fixed MSCDEX device name padding for short names (maron2000)
- When DOS games use the Adlib FM chip to do "digitized speech", DOSBox-X
does emulate that correctly, and it also correctly emulates how low
the volume is on the sound card output. However to make it more
audible, a new option "adlib pcm boost" has been added. If set,
and the Adlib emulation detects that the guest application is
playing PCM audio through it, the audio levels of the FM output
will be amplified to make the digitized speech much more audible.
(joncampbell123) - Fixed mapping of TTF to match with guest codepage when launched with
output=ttf. (maron2000) - Limit window size of TTF output to 2/3rd of the screen in both
dimensions so that the window is not TOO large on the user's screen.
(joncampbell123) - Fix segfault in TTF output code caused by codepage mapping when the
TTF output is not active. (joncampbell123) - Fixed clip_paste_bios option change was not reflected. Also, default is
changed to "true" for Windows due to some characters fails to paste when
set otherwise. (maron2000) - Replaced some deprecated functions in dosbox.h. (maron2000)
- Fixed colors in the screenshot of macOS SDL1 build were wrong.(maron2000)
- Fix savestate restore crash in POD_Load_DOS_Files during live file slot
teardown (catbalony) - Fixed mouse cursor display in DOS/V Japanese mode (nanshiki)
- INT 13h AH=48h: Fixed LBA detection (maron2000)
- Fixed read/write errors on last sectors of disk image (maron2000)
- Int 13h: Added option to enable/disable 48-bit LBA support (maron2000)
- Fix VHD file geometry detection (maron2000)
- Fixed crash when printing out multipages to printer (Windows) (maron2000)
- printer.cpp: Fix occasional missing page break after line wrap (maron2000)
DOSBox-X 2026.05.02 2026-05-02 09:05
2026.05.02
- DOSBox-X will now check both the current directory and the .config
directory in your home directory for DOSBox-X logo PNG files.
It is now possible to configure one set of PNG files as a default
for all uses of DOSBox-X from your user account. (joncampbell123). - src/gui/render.cpp: Added missing ifdef conditional on C_METAL to enable
building on macOS platforms without Metal support. (herrnst) - Fixed Metal support detection: add framework linker flags to configure
check (maron2000) - Fixed window position not centered even when windowposition option is set
to do so. (maron2000) - Fixed MSCDEX device name padding for short names (maron2000)
- When DOS games use the Adlib FM chip to do "digitized speech", DOSBox-X
does emulate that correctly, and it also correctly emulates how low
the volume is on the sound card output. However to make it more
audible, a new option "adlib pcm boost" has been added. If set,
and the Adlib emulation detects that the guest application is
playing PCM audio through it, the audio levels of the FM output
will be amplified to make the digitized speech much more audible.
(joncampbell123) - Fixed mapping of TTF to match with guest codepage when launched with
output=ttf. (maron2000) - Limit window size of TTF output to 2/3rd of the screen in both
dimensions so that the window is not TOO large on the user's screen.
(joncampbell123) - Fix segfault in TTF output code caused by codepage mapping when the
TTF output is not active. (joncampbell123) - Fixed clip_paste_bios option change was not reflected. Also, default is
changed to "true" for Windows due to some characters fails to paste when
set otherwise. (maron2000) - Replaced some deprecated functions in dosbox.h. (maron2000)
- Fixed colors in the screenshot of macOS SDL1 build were wrong.(maron2000)
- Fix savestate restore crash in POD_Load_DOS_Files during live file slot
teardown (catbalony) - Fixed mouse cursor display in DOS/V Japanese mode (nanshiki)
- INT 13h AH=48h: Fixed LBA detection (maron2000)
- Fixed read/write errors on last sectors of disk image (maron2000)
- Int 13h: Added option to enable/disable 48-bit LBA support (maron2000)
- Fix VHD file geometry detection (maron2000)
- Fixed crash when printing out multipages to printer (Windows) (maron2000)
- printer.cpp: Fix occasional missing page break after line wrap (maron2000)
DOSBox-X 2026.03.29 2026-03-29 00:45 OSFREE
2026.03.29
- Add dosbox.conf option to control the duration of the beep when
DOS CON and INT 10h are given the BEL character. (joncampbell123). - DOS CON device BEL (beep) handling: For IBM PC modes, call on
INT 10h to make the beep, rather than duplicate code. Fix the
DOS CON device so that it can also properly beep in PC-98 mode.
(joncampbell123). - Fix bug where the "zero memory on DOS allocation" option was
stuck on. Some games, like "Bad Cat" rely on memory contents
peristing across DOS EXEC and memory allocation. (joncampbell123). - Fix Hercules palette selection related to herc blend. (joncampbell123).
- DOS kernel: When executing an EXE file, the loader can now detect
EXE files that were compressed using EXEPACK. Based on the new
exepack dosbox.conf setting, it can decompress the EXE by itself,
switch off the A20 gate, or do nothing. The purpose of this
setting is to avoid EXEPACK "Packed File is Corrupt" errors that
happen if the A20 gate is enabled and the EXE was loaded too low
in memory. (joncampbell123). - Linux SDL1: Use XDG_SESSION_TYPE environment variable to detect
whether or not the user is running DOSBox-X under X11 or Wayland,
and if so, prevent the fbcon and svga drivers from initializing.
There seems to be a problem where, if run under Wayland and the
XWayland compatibility layer if not present, SDL1 uses the fbcon
driver to take over the screen using vtcon switching and the classic
fbdev driver interface. Don't do that! (joncampbell123). - INT 21h AH=4Ah resize memory: If memory resize fails because there
is not enough room for the requested amount of memory, do not
set ownership of the block to the program. This fixes memory
allocation error in California Games II. The game at one point
seems to miscalculate and ask for an excessively large amount
of memory on resize, and then fail, which doesn't seem to affect
the game. HOWEVER, prior to the bugfix, the memory block that
was available was assigned ownership to the game anyway. Later
on after helicopter takeoff, the game would attempt to allocate
more memory, which would fail because of the erroneous assignment
of ownership to free memory. (joncampbell123). - Add debug logging to not only indicate DOS kernel memory alloc,
free, and resize, but also log when the memory operation fails.
Perhaps someday I'll figure out what the memory management in
California Games II is doing wrong that makes the helicopter part
fail in DOSBox-X. (joncampbell123). - Code development now occurs across two primary branches: master
for fully functional emulation, and main-osfree for versions of
DOSBox-X where built-in MS-DOS OS emulation is disabled. The osfree
branch can only boot a guest OS. main-osfree is for use in jurisdictions
that enforce or wish to enforce OS level age verification, and
therefore, may consider the MS-DOS emulation an OS that is subject
to those laws. (joncampbell123). - El Torito CD-ROM floppy disk boot emulation is no longer as slow
as an actual floppy drive. Your bootable CDs will boot much faster
now. (joncampbell123). - DOSBox-X shell: If a DOS error happened while trying to execute a
DOS program, read the error code and print an appropriate message
on the console. So far only "Access Denied" has any specific error
message there. (joncampbell123). - Skip all keyboard code page and layout loading if running in PC-98
mode. PC-98 systems store the entire font in ROM with only very
limited room for custom fonts, therefore, it makes no sense to load
code pages in PC-98 mode. (joncampbell123). - Keyboard code page layout: Fix bug where an out of range start_pos
can cause DOSBox-X to segfault. Range check and print an error
message instead. (joncampbell123). - Keyboard code page layout: The UPX unpacker checks the stack pointer
(like a COM program would) to determine if there is enough memory
to decompress. If there is not, it executes INT 20h to exit to DOS.
Problem is, the code page execution never makes a proper PSP segment
for that to work, so, during execution, intercept INT 20h and safely
redirect execution to exit properly when called. Set an error flag
so the code can know if that happened and say so. (joncampbell123). - Keyboard code page layout: If executing the CPI/CPX file because UPX
decompression is detected, allocate memory based on the size of the
file plus reasonable stack space rather than assume about 128KB of
RAM following a DOS allocation of less, which for lower memsizes,
only causes a crash on startup. (joncampbell123). - Debug print to log what code page file is being loaded at startup (joncampbell123).
- CPU Idle callback is now strictly limited to processing IRQs and one
CPU instruction, instead of however many CPU instructions can run
until the next scheduled emulator event. This fixes a bug where
system calls that use the Idle callback (INT 21h, etc) can sometimes
vary their delay time by emulator events, and if "scanline render on
demand is enabled", can cause the Idle call to take a full 1ms interval
of time. This fixes an issue where "scanline render on demand" caused
some DOS games like Xargon to take 5 to 10 times longer to transition
between title, main menu, gameplay, etc. (joncampbell123). - Debugger LOGL command now includes the PIC_FullIndex() emulator time
in millseconds so that it can be used to determine time as well as
CPU state for debugging (joncampbell123). - Add dosbox.conf option to control whether VBE emulation provides the
protected mode interface or not (joncampbell123). - Add dosbox.conf option vbememsize and vbememsizekb to control how much
video memory is reported through the VESA BIOS, which can be less than
actual video memory (but must be at least 256KB). This option can help
with some DOS programs that have problems with "too much" video memory
in the system (joncampbell123). - Add INT 10h mode flag _REQUIRE_LFB. When set, INT 10h calls to set
VESA BIOS modes will fail unless requesting to set the linear framebuffer
version of the mode (joncampbell123). - S3 emulation will mark any more large enough to exceed bank switching
limits in S3 hardware as _REQUIRE_LFB (joncampbell123). - I'm not sure why Adlib emulation defaults to 48KHz in most versions of
DOSBox, but the hardware rate is 49716 and that should be the default
(joncampbell123). - Fixed crash on starting debugger on MinGW builds (maron2000)
- Adjusted the ChinaSea/Big5-2003 extended code point ranges for CP951 to
0x9140–0xA3FE and 0xC6A1–0xFEFE (1abcd) - Replaced deprecated symbols to enable launching on old macOSs (maron2000)
- Converted all bash-dependent shell files to POSIX-shell compliant
(pandasoli) - Removed 7 duplicate Chinese character mappings from CP951 (Big5-UAO) (1abcd)
- Added SoundBlaster microphone input support (Windows WASAPI)
(meldro364-glitch) - Fixed segfault on launch of macOS builds (maron2000)
- Added OS/2 support for tinyfiledialogs, browser and external programs and
some more fixes. (josch1710) - Fixed savestate load "Memory size mismatch" error on MSVC build (rebb)
- Fixed savestate loading crash related to dynamically allocated TempLine in
VGA system (rebb) - Added Direct3D11 and Metal support (Experimental, SDL2 only) (maron2000)
- When leaving fullscreen, only force rebuilding the window for OpenGL mode.
(rebb) - Clear modifier keys before savestate gets saved. (rebb)
- Re-enabled WinMM joystick support (Windows SDL1) (maron2000)
- Fixed colors option fails at launch on TTF mode (maron2000)
- Optional switch to disable post exit delay in DX-CAPTURE (villesundell)
- Fixed Emscripten builds for Dosbox x v2026.01.02 (grootpot)
- Fixed long freeze during startup on linux (SmileTheory)
- Fixed windowposition option at launch (maron2000)
- Fixed detection of EXEPACK failures (maron2000)
- Added OS/2 dimension handling to UpdateWindowDimensions (josch1710)
- Fixed handling of volume label searches (Allofich)
- Microphone input: Make Hands-Free profile (HFP) optional (maron2000)
- macOS: Fixed build script typo that made loading freetype library fail
(maron2000) - Fixed FPU FILD emulation (asemarafa)
- Removed range check in INT10_GetCursorPos causing text glitches (maron2000)
- Added experimental VS2026 CI builds. Can be downloaded as 64-bit Visual
Studio nightly builds. (maron2000) - macOS: Fixed garbled message when opening image file(s) from dropdown menu.
(maron2000) - Fixed XCOPY argument parsing to correctly handle switches appended directly
to file paths without whitespace. (maron2000) - Fixed some Yes/No character was remained hardcoded as Y/N for some languages
specifiying other characters (e.g. German). (maron2000)
DOSBox-X 2026.03.29 2026-03-29 00:45
2026.03.29
- Add dosbox.conf option to control the duration of the beep when
DOS CON and INT 10h are given the BEL character. (joncampbell123). - DOS CON device BEL (beep) handling: For IBM PC modes, call on
INT 10h to make the beep, rather than duplicate code. Fix the
DOS CON device so that it can also properly beep in PC-98 mode.
(joncampbell123). - Fix bug where the "zero memory on DOS allocation" option was
stuck on. Some games, like "Bad Cat" rely on memory contents
peristing across DOS EXEC and memory allocation. (joncampbell123). - Fix Hercules palette selection related to herc blend. (joncampbell123).
- DOS kernel: When executing an EXE file, the loader can now detect
EXE files that were compressed using EXEPACK. Based on the new
exepack dosbox.conf setting, it can decompress the EXE by itself,
switch off the A20 gate, or do nothing. The purpose of this
setting is to avoid EXEPACK "Packed File is Corrupt" errors that
happen if the A20 gate is enabled and the EXE was loaded too low
in memory. (joncampbell123). - Linux SDL1: Use XDG_SESSION_TYPE environment variable to detect
whether or not the user is running DOSBox-X under X11 or Wayland,
and if so, prevent the fbcon and svga drivers from initializing.
There seems to be a problem where, if run under Wayland and the
XWayland compatibility layer if not present, SDL1 uses the fbcon
driver to take over the screen using vtcon switching and the classic
fbdev driver interface. Don't do that! (joncampbell123). - INT 21h AH=4Ah resize memory: If memory resize fails because there
is not enough room for the requested amount of memory, do not
set ownership of the block to the program. This fixes memory
allocation error in California Games II. The game at one point
seems to miscalculate and ask for an excessively large amount
of memory on resize, and then fail, which doesn't seem to affect
the game. HOWEVER, prior to the bugfix, the memory block that
was available was assigned ownership to the game anyway. Later
on after helicopter takeoff, the game would attempt to allocate
more memory, which would fail because of the erroneous assignment
of ownership to free memory. (joncampbell123). - Add debug logging to not only indicate DOS kernel memory alloc,
free, and resize, but also log when the memory operation fails.
Perhaps someday I'll figure out what the memory management in
California Games II is doing wrong that makes the helicopter part
fail in DOSBox-X. (joncampbell123). - Code development now occurs across two primary branches: master
for fully functional emulation, and main-osfree for versions of
DOSBox-X where built-in MS-DOS OS emulation is disabled. The osfree
branch can only boot a guest OS. main-osfree is for use in jurisdictions
that enforce or wish to enforce OS level age verification, and
therefore, may consider the MS-DOS emulation an OS that is subject
to those laws. (joncampbell123). - El Torito CD-ROM floppy disk boot emulation is no longer as slow
as an actual floppy drive. Your bootable CDs will boot much faster
now. (joncampbell123). - DOSBox-X shell: If a DOS error happened while trying to execute a
DOS program, read the error code and print an appropriate message
on the console. So far only "Access Denied" has any specific error
message there. (joncampbell123). - Skip all keyboard code page and layout loading if running in PC-98
mode. PC-98 systems store the entire font in ROM with only very
limited room for custom fonts, therefore, it makes no sense to load
code pages in PC-98 mode. (joncampbell123). - Keyboard code page layout: Fix bug where an out of range start_pos
can cause DOSBox-X to segfault. Range check and print an error
message instead. (joncampbell123). - Keyboard code page layout: The UPX unpacker checks the stack pointer
(like a COM program would) to determine if there is enough memory
to decompress. If there is not, it executes INT 20h to exit to DOS.
Problem is, the code page execution never makes a proper PSP segment
for that to work, so, during execution, intercept INT 20h and safely
redirect execution to exit properly when called. Set an error flag
so the code can know if that happened and say so. (joncampbell123). - Keyboard code page layout: If executing the CPI/CPX file because UPX
decompression is detected, allocate memory based on the size of the
file plus reasonable stack space rather than assume about 128KB of
RAM following a DOS allocation of less, which for lower memsizes,
only causes a crash on startup. (joncampbell123). - Debug print to log what code page file is being loaded at startup (joncampbell123).
- CPU Idle callback is now strictly limited to processing IRQs and one
CPU instruction, instead of however many CPU instructions can run
until the next scheduled emulator event. This fixes a bug where
system calls that use the Idle callback (INT 21h, etc) can sometimes
vary their delay time by emulator events, and if "scanline render on
demand is enabled", can cause the Idle call to take a full 1ms interval
of time. This fixes an issue where "scanline render on demand" caused
some DOS games like Xargon to take 5 to 10 times longer to transition
between title, main menu, gameplay, etc. (joncampbell123). - Debugger LOGL command now includes the PIC_FullIndex() emulator time
in millseconds so that it can be used to determine time as well as
CPU state for debugging (joncampbell123). - Add dosbox.conf option to control whether VBE emulation provides the
protected mode interface or not (joncampbell123). - Add dosbox.conf option vbememsize and vbememsizekb to control how much
video memory is reported through the VESA BIOS, which can be less than
actual video memory (but must be at least 256KB). This option can help
with some DOS programs that have problems with "too much" video memory
in the system (joncampbell123). - Add INT 10h mode flag _REQUIRE_LFB. When set, INT 10h calls to set
VESA BIOS modes will fail unless requesting to set the linear framebuffer
version of the mode (joncampbell123). - S3 emulation will mark any more large enough to exceed bank switching
limits in S3 hardware as _REQUIRE_LFB (joncampbell123). - I'm not sure why Adlib emulation defaults to 48KHz in most versions of
DOSBox, but the hardware rate is 49716 and that should be the default
(joncampbell123). - Fixed crash on starting debugger on MinGW builds (maron2000)
- Adjusted the ChinaSea/Big5-2003 extended code point ranges for CP951 to
0x9140–0xA3FE and 0xC6A1–0xFEFE (1abcd) - Replaced deprecated symbols to enable launching on old macOSs (maron2000)
- Converted all bash-dependent shell files to POSIX-shell compliant
(pandasoli) - Removed 7 duplicate Chinese character mappings from CP951 (Big5-UAO) (1abcd)
- Added SoundBlaster microphone input support (Windows WASAPI)
(meldro364-glitch) - Fixed segfault on launch of macOS builds (maron2000)
- Added OS/2 support for tinyfiledialogs, browser and external programs and
some more fixes. (josch1710) - Fixed savestate load "Memory size mismatch" error on MSVC build (rebb)
- Fixed savestate loading crash related to dynamically allocated TempLine in
VGA system (rebb) - Added Direct3D11 and Metal support (Experimental, SDL2 only) (maron2000)
- When leaving fullscreen, only force rebuilding the window for OpenGL mode.
(rebb) - Clear modifier keys before savestate gets saved. (rebb)
- Re-enabled WinMM joystick support (Windows SDL1) (maron2000)
- Fixed colors option fails at launch on TTF mode (maron2000)
- Optional switch to disable post exit delay in DX-CAPTURE (villesundell)
- Fixed Emscripten builds for Dosbox x v2026.01.02 (grootpot)
- Fixed long freeze during startup on linux (SmileTheory)
- Fixed windowposition option at launch (maron2000)
- Fixed detection of EXEPACK failures (maron2000)
- Added OS/2 dimension handling to UpdateWindowDimensions (josch1710)
- Fixed handling of volume label searches (Allofich)
- Microphone input: Make Hands-Free profile (HFP) optional (maron2000)
- macOS: Fixed build script typo that made loading freetype library fail
(maron2000) - Fixed FPU FILD emulation (asemarafa)
- Removed range check in INT10_GetCursorPos causing text glitches (maron2000)
- Added experimental VS2026 CI builds. Can be downloaded as 64-bit Visual
Studio nightly builds. (maron2000) - macOS: Fixed garbled message when opening image file(s) from dropdown menu.
(maron2000) - Fixed XCOPY argument parsing to correctly handle switches appended directly
to file paths without whitespace. (maron2000) - Fixed some Yes/No character was remained hardcoded as Y/N for some languages
specifiying other characters (e.g. German). (maron2000)