CWSDPMI

CWSDPMI is a 32-bit DPMI host written by Charles W. Sandmann from 1996 to 2010, currently at r7. It is loosely based upon prior GO32.EXE code used in DJGPP v1. It can provide DPMI 0.90+ 32-bit services for programs compiled with latest versions of DJGPP etc. compilers. Since r5, it can also be used for programs requiring a DPMI stub in lieu of PMODE/DJ. It supports up to 4 GB, virtual memory, and hardware interrupt reflection from real mode to protected mode. Programs compiled with DJGPP v2 require a DPMI host, which is usually CWSDPMI.EXE or CWSDPR0.EXE. In case of CWSDPMI.EXE, the default paging/virtual memory file is C:\CWSDPMI.SWP. It is capable of running on a 386 in under 512 KB of RAM.

CWSDPMI is functionally similar to other 32-bit DPMI hosts such as HDPMI32, which is part of HX DOS Extender.

CWSDPMI r7 is free and open-source software.

CWSDPMI editions
CWSDSTUB.EXE is a stub loader image for DJGPP which includes CWSDPMI.

CWSDPR0.EXE is an alternative version, implemented at request of id Software when writing Quake, which runs at ring 0 with virtual memory disabled. It may be used if access to ring 0 features are desired. It currently does not switch stacks on hardware interrupts, so some DJGPP features such as SIGINT and SIGFPE are not supported and will generate a double fault or stack fault error.

Developer Charles W. Sandmann also hoped to eventually supply code for CWSDPMI r7 that allows CWSDPMI to map up to 64 GB memory into the address space upon request.