DOS Protected Mode Interface
From Wikipedia, the free encyclopedia
DOS Protected Mode Interface (DPMI) is an interface which allows a DOS program to run in protected mode, granting access to many features of the processor not available in real mode. Almost all DOS extenders are based on DPMI and allow DOS programs to address all memory available in the PC and to run in protected mode. It was initially developed by Microsoft for Windows 3.0, although Microsoft later turned control of the specification over to an industry committee with open membership. [1]
This service can be 16-bit, 32-bit, or "universal" and is called the DPMI kernel, DPMI host, or DPMI server. It is provided either by the host operating system (virtual DPMI host) or by a DOS extender (real DPMI host). The DPMI kernel can be part of a DOS extender such as in DOS/4GW or DOS/32A, or separate, like CWSDPMI or HDPMI.
The first DPMI specification drafts were published in 1989. Version 0.9 was published in 1990 by the DPMI Committee, and it was again extended in 1991 with version 1.0. An additional feature called "True DPMI" or "DOS API translation" was proposed in the version 0.9 drafts, but never became part of the official specification, nevertheless, it is featured by some products. The DPMI specification is available from Intel Literature Sales as well as online. Since version 1.0 was never implemented in Windows, many programs and DOS extenders were written to version 0.9 only. The most famous separate DPMI kernel is probably CWSDPMI, however, it supports DPMI 0.9 only and no "DOS API translation". A newer product called HDPMI provides "DOS API translation" and almost complete DPMI 1.0 implementation. Currently DPMIONE is the only standalone DPMI host which supports DPMI 1.0 completely.
[edit] VCPI
VCPI (Virtual Control Program Interface) was an earlier and incompatible method for doing the same thing as DPMI and was limited to 32-bit mode. VCPI was provided by an expanded memory manager in DOS (e.g. CEMM, QEMM, later EMM386). It was eclipsed by DPMI, most notably because it was not supported for DOS programs run in Windows 3.0's native protected mode (called 386 enhanced mode) and because VCPI runs programs in Ring 0, which defeated the purpose of x86 protection. It also did not work with OS/2 2.0 and later. Windows 3.x only supported VCPI in Standard and Real modes. Earlier Windows/386 2.1 was not compatible with DOS extenders at all.
VCPI also had a more limited scope in that it allowed a protected mode DOS program to run only when the program was started from DOS already running inside a virtual 8086 mode task. (This was typically accomplished through a memory manager operating as a virtual [mode] control program for the processor.) Because the virtual 8086 mode isolates programs from the hardware, it is not possible for a program to switch to protected mode without some support from the control program.
In the late 1980s an extended version of the specification XVCPI addressed some of these problems and was implemented or used by a small number of products including INTERACTIVE UNIX and Digital Research operating systems.
[edit] References
- ^ Duncan, Ray (1992). Extending DOS: A Programmer's Guide to Protected-Mode DOS, 2nd ed., Addison-Wesley, pp. 433-436. ISBN 0-201-56798-9.
[edit] External links
- Virtual Control Program Interface Version 1.0
- DPMI Specification version 0.9 provided by C.W.Sandman
- DPMI Specification version 1.0 provided by C.W.Sandman
- DPMI Specification provided by Delorie software
- DPMI Specification provided by Tenberry
- CWSDPMI download
- HX DOS-Extender containing HDPMI (HXRT.ZIP package)
- DPMIONE Documentation File
This article was originally based on material from the Free On-line Dictionary of Computing, used with permission. Update as needed.