ntalaec wrote on 2026-08-27, 09:13:Many thanks for keep improving this utility. […]
Show full quote
crazii wrote on 2026-08-27, 02:41:
I think it could be better adding a VCPI whitelist so that some games' VCPI requests are blocked, because some games prefer VCPI to DPMI, even if both they supports. but VCPI is a ring0 protected mode interface providing a whole separated PM space, making original PM port trapping invalid.
Many thanks for keep improving this utility.
Tested more software in SBEMU with VDPMI:
This utility to reduce frequency and voltage of Intel Atom CPUs crashes: SSTEP
Norton Commander 5.51 hangs when trying to extract files from ZIP.
Games:
MDK (1997): Works great. No issues.
Lotus: The Ultimate Challenge (1993): Unplayable. Keyboard doesn't work.
Theme Hospital (1997): SETSOUND.EXE detects MIDI hardware but no sound hardware. Game runs in slow motion.
I've added VCPI support and tested game wizard recently (GW v2.50, v3.0a always freezes) , but it is a very weird piece that works in real mode, and with EMM386. but not for VDPMI, it can install (but freezes sometimes) but the activation hotkey doesn't work.
After some debugging and conversation with google AI, I found that it remaps master PIC (08h to 50h), not via the VCPI interface DE0A/DE0B but probably via port IO (20,21,A0,A1).
with EMM386 the PIC is actually remapped. I think EMM386 does a lot of work for those weird cases.
The other problem will be fixed after some features are complete. Please wait, and thank you.
vico wrote on 2026-08-30, 01:57:
crazii wrote on 2026-08-27, 02:43:
UPDATE: I tested a little bit of DOSZip, because by default EMS provided by VDPMI is low (4M) it seems a strategy of DOSZip not pre-alloc on low EMS. if you open a txt file and exit to main menu, the EMS is allocated.
or if your specify /EMS=8 or /EMSX=8 (8MB) then the initial EMS allocation is not 0.
If the situation you encountered is not like that, please give me more details on it. Thanks.
The /EMS=8 and EMSX=8 options don't work for me; DOSZip can't open text files when I press F4, I only get the message "Not enough space," a typical message when EMS isn't loading, the Joe & Mac - Caveman Ninja game doesn't work either; when I run it, it takes me to a black screen and the system freezes. it's a game that needs EMS, maybe that's why.
Thank you for the feedback.
I have found some bugs in EMS allocation and I will write some more test cases to find more bugs. Thanks for your patience.
A quick update (without any binaries yet):
1) A config file is added to support cmdline options, and a whitelist of programs to hack GDT, tested with CPUSPD.EXE and MTRRLFBE.EXE now both works.
the options in config file will be overridden by options in CONFIG.SYS or DOS command line, if any exists.
2) A builtiin XMM is added so that VDPMI doesn't need HIMEMX.EXE or HIMEM.SYS. the builtin XMM is optional, and will be auto disabled if HIMEMX.EXE/HIMEM.SYS installed before VDPMI.
but it is recommended to use builtin XMM because it saves 2K conventional memory used by HIMEMX.EXE/HIMEM.SYS.
3) A VCPI interface is added and now in test. because VCPI conflicts with builtin drivers (drivers handles HW reqs and traps IO ports, but not work in VCPI clients. and drivers changes HW states that out of sync with VCPI client), the builtin drivers (PIT/KBD/MOUSE) are disabled in build. It is obvious why Windows does not support VCPI, it is fully out of the control of its VMM.
a VCPI whitelist is also added in config file.
The total VCPI stuff is just experimental yet.
4) DPMI server now is optional. set /DPMIMEM=0 to disable it. when DPMI server is not present, VCPI is fully available, ignoring the VCPI whitelist. in such case VDPMI works only as an EMM.
It is ironic that initially only a DPMI host is needed, but later I found v86 monitor is mandatory for my virtual interrupt (VIF/VIP) implementation, and now every feature is optional except the v86 monitor. 🤣
My plan now is "feature complete" first (XMM+VCPI+VDS+GEMMIS, now with VDS+GEMMIS left), so that no architectural adjustment is needed any more and so no more new bugs caused by that. and then I will focus on the bugs for programs.
Current focus is on VCPI improvements and then full test cases for XMS/UMB/EMS.
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