Lualb wrote on 2026-10-25, 14:50:
Hi ! ... I have checked the BIOS settings: Legacy USB Support is enabled, Port 60/64 Emulation is also enabled, and XHCI/EHCI Hand-off is enabled. The BIOS detects one USB keyboard, one USB mouse, and three hubs; my computer does not have any physical PS/2 ports. Without VDPMI, CTMOUSE installs correctly on the Virtual PS/2 port (thanks to the BIOS’s Port 60/64 emulation). However, when VDPMI is loaded, CTMOUSE no longer detects the USB mouse, even though all the relevant BIOS settings are enabled—the keyboard continues to work within the system, but CTMOUSE fails in the DOS environment.
There could be compatibility problems of the VDPMI builtin keyboard/mouse driver. There are bad keyboard response reported in github.
you can set VIntFlag=0 in the VDPMI.CFG to disable the builtin drivers. VDPMI.CFG is available in recent release, may not in the one you're using.
RayeR wrote on Yesterday, 04:11:
1) my tools like CPUID and MTRRLFBE crashed when acessing GDT even they are whitelisted in VDPMI.CFG (I have both files directly in C:\, loaded in config.sys by DEVICE=VDPMI.EXE)
I haven't tested with recent changes, it turns out broken. I've fixed it in the new attachment. it's a bug in the loader that access a freed buffer and corrupts the whitelist.
RayeR wrote on Yesterday, 04:11:
2) when trying to start Win98 - hoping that GEMMIS works and allows take over it crashed too.
It seems the exception context is valid, i.e. not a wild execution. It is LMSW instruction, it's OK as long as the PE bit is set. It's possible that this is a untested code path on your CPU, related to FPU settings, which I haven't encountered with my CPU. It also could be a rare chance that VDPMI failed to switch to real mode and still in v86. Anyway I've add emulation for LMSW, you can test with the new attachment below.
I've finished testing win98se and winME, and added special fix for the UMB:
new option:
/UMB80: prevent DOS kernel from being loaded to UMB.
only visible and accessible in dos 8.0 aka winme only.
other LH/DEVICEHIGH still works, only 10K DOS kernel data kept in conventional memory.
This is a hack that patches two DOS8.0 memory locations, 1 in dos loader data, 1 in dos data. along with some IVT fixes if IVT hooked by UMB address (interrupt installed by driver through LH/DEVICEHIGH), and DOS device header in UMB (loaded by DEVICEHIGH).
Here is the comparison of mem.exe otuput without and with /UMB80.
The attachment WinME_ImprovedUMB.png is no longer available
The attachment WinME_OriginalUMB.png is no longer available
With /UMB80 (WinME_ImprovedUMB) the block device tables, FILES, FCBS, BUFFERS, LASTDRIVE=Z, STACKS and still in conventional memory.
this allow WinME to startup with DOS=UMB. Note that all drivers loaded with LH/DEVICEHIGH won't be accessible in WinME GUI session, they are hidden.
To make the /UMB80 hack work, "DEVICE=C:\WINDOWS\IFSHLP.SYS" must be the last line in config.sys
I will continue with more tests and bugfixes with SBEMU on real PC.
The attachment vdpmi0.33fix.zip is no longer available
Toshiba Satellite Pro 4300 - YMF744, Savage IX
Toshiba Satellite 2805-S501 - YMF754, GeForce 2Go
IBM Thinkpad A21p - CS4624, Mobility Radeon 128
main: Intel NUC11PHKi7C Phantom Canyon: i7-1165G7 RTX2060 64G 2T760PSDD