Q: What is this DPMI thing you are all talking about?
Q: Where can I find the specifications for the DPMI functions?
A: DPMI, the DOS Protected-Mode Interface, is an API that allows protected-mode programs to run on top of DOS, which is a real-mode operating system, and still be able call real-mode DOS and BIOS services. A special API is required because DOS code cannot be run in protected mode: if you try, your system will immediately crash, since the real-mode DOS and BIOS code violates many restrictions of protected-mode programming. See restrictions of protected mode, for more details. Another place to look for explanations why DPMI is necessary is in the Overview of DJGPP.
The DPMI API is implemented as a set of functions of Interrupt 31h which allow such chores as switch from real to protected mode and back (generally done upon startup and at exit), memory allocation, calling real-mode services, etc. DPMI is by far the most portable way of running protected-mode programs on MS-DOS, MS-Windows and compatible systems.
You can find the DPMI 0.9 spec by anonymous ftp to one of the following sites:
dpmip1.zipat the same location is the PostScript version of this spec), and also at the Oulu site.