Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
DOS Protected Mode Interface
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== History{{anchor|True|DOS API translation|0.04|0.9|1.0}} == The first DPMI specification drafts were published in 1989 by Microsoft's [[Ralph Lipe]].<ref name="DPMI-0.04"/><ref name="Duncan_1991"/> While based on a prototypical version of DPMI for [[Windows 3.0]] in 386 enhanced mode, several features of this implementation were removed from the official specification, including a feature named '''MS-DOS Extensions'''<ref name="Lipe_1992_MSDOSEXT"/> or '''DOS API translation''' that had been proposed by Ralph Lipe in the original drafts.<ref name="DOS-API-0.02"/> Most of it was implementing DOS and BIOS interfaces (due to this history some INT 21h APIs like 4Ch have to be implemented by all DPMI implementations). DPMI version 0.9 was published in 1990 by the newly formed [[#DPMI Committee|DPMI Committee]]. The version number 0.9 of the resulting specification was chosen to reflect the stripped-down nature and incomplete status of the standard the members of the DPMI Committee could agree upon.<ref name="Duncan_1991"/> While Windows reports DPMI version 0.9 for compatibility, it actually implements the other parts as well, since they present a vital part of the system.<ref name="Lipe_1992_MSDOSEXT"/><ref name="Duncan_1991"/> This undocumented full nature of DPMI has become known as "'''true DPMI'''" in the industry.<ref name="DPMI-True"/> The DPMI standard was not the only effort to overcome the shortcomings of the [[Virtual Control Program Interface|VCPI specification]]. At the same time that Microsoft developed DPMI for Windows 3.0, another industry alliance including [[Intel Software Focus Group|Intel's Software Focus Group]],<ref name="DesignElektronik_1991_PC-Architektur"/><ref name="Duncan_1991"/> [[Lotus Development Corporation|Lotus]],<ref name="DesignElektronik_1991_PC-Architektur"/> [[Digital Research]], [[Interactive Systems]] and others developed a specification named [[Extended VCPI]] ([[XVCPI]]) to make the memory management and multitasking capabilities of the 386 available for extended DOS applications.<ref name="DesignElektronik_1991_PC-Architektur"/><ref name="Duncan_1991"/><ref name="DPMI_1991_1.0"/> When it turned out that Microsoft's DPMI proposal addressed a number of similar issues and was supported by Windows, these efforts led to the creation of the DPMI Committee in February 1990 during a meeting at Intel in Santa Clara.<ref name="DesignElektronik_1991_PC-Architektur"/><ref name="Duncan_1991"/> In 1991, the DPMI Committee revised DPMI to version 1.0 in order to incorporate a number of clarifications and extensions, but it still did not include the missing "true DPMI" bits implemented in Windows. In fact, "true DPMI" never became part of the official DPMI specification, and Windows likewise never implemented the DPMI 1.0 extensions (and not many DPMI hosts did). While DPMI is tailored to run extended DOS application software in protected mode and extended memory,<ref name="Schneider_1994"/> it is not particularly well suited for resident system extensions. Another specification named [[DOS Protected Mode Services|DPMS]],<ref name="Schneider_1994"/> developed by [[Digital Research]] / [[Novell]] around 1992, specifically addresses requirements to easily relocate modified DOS driver software into extended memory and run them in protected mode, thereby reducing their conventional [[memory footprint]] down to small [[DOS memory stub|stub]]s. This is also supported by [[Helix Cloaking]]. The DPMI "method" is specific to DOS and the IBM PC. Other computer types were upgraded from 16-bit to 32-bit, and the advanced program support was provided by upgrading the operating system with a new 32-bit [[API]] and new memory management/addressing capabilities. For example, the [[OS/2]] core system supports 32-bit programs, and can be run without the GUI. The DPMI solution appears to be mainly needed to address third party need to get DOS protected mode programs running stably on Windows 3.x before the dominant operating system vendor, Microsoft, could or would address the future of 32-bit Windows. In addition, Microsoft didn't see the answer to the 32-bit transition as a 32-bit DOS, but rather a 32-bit Windows with a completely different (and incompatible) API. === Compatibility === While Windows 3.0 implements "true DPMI"<ref name="Lipe_1992_MSDOSEXT"/> and reports support for DPMI 0.9,<ref name="NetBIOS_2004"/> DPMI version 1.0 was never implemented in [[Microsoft Windows]], so most programs and DOS extenders were mostly only written for version 0.9. Few extenders, however, implement "true DPMI". Beta versions of [[Qualitas]] [[386MAX]] implemented "true DPMI" and could run Windows' KRNL386.EXE from the command line, but it was claimed that was disabled in the released product in an internal email.<ref name="Lipe_1992_MSDOSEXT"/> However, DPMIONE (by Bob Smith based on the 386MAX code) can do it. Currently [[DPMIONE]] and [[386MAX|386<sup>MAX</sup>]] is also the only DPMI host which supports DPMI 1.0 completely (e.g. uncommitted memory) and they are the main supporter of DPMI 1.0.<ref name="Sokolov_1998_DPMI10"/> The KRNL386.SYS (aka "MultiMAX") of [[DR DOS "Panther"]] and [[DR DOS "StarTrek"|"StarTrek"]], which has been under development since 1991,<ref group="nb" name="NB_Panther"/> and the [[EMM386.EXE]] memory managers of [[Novell DOS 7]],<ref name="Schneider_1994"/> [[Caldera OpenDOS]] and [[DR-DOS]] 7.02 and higher have built-in support for DPMI when loaded with the <code>/DPMI[=ON]</code> option. KRNL386.SYS even had a command line option <code>/VER=0.9|1.0</code> to provide support for either DPMI 1.0 or 0.9.<ref name="Schulman_1994_Undocumented-DOS"/> DOS API translation was referred to as "called interrupt 21 from protected mode". [[Multiuser DOS]], [[Datapac System Manager|System Manager]] and [[REAL/32]] support DPMI as well. The most famous separate DPMI kernel is probably [[CWSDPMI]]; it supports DPMI 0.9, but no undocumented "DOS API translation". Another variant called PMODE by "TRAN" aka [[Thomas Pytel]] was popular with 32-bit programmers during the [[demo scene]] of the 1990s. Many games used DOS/4GW, which was developed by [[Rational Systems]] as a subset of [[DOS/4G]] and was distributed with the [[Watcom C compiler]]. HDPMI (part of [[HX DOS Extender]]) provides "DOS API translation" and almost complete DPMI 1.0 implementation. === DPMI Committee === The DPMI 1.0 Committee met between 1990 through 1991 and consisted of 12 groups: * [[Borland International]] ([[Borland]] C, [[Turbo Pascal]]) * [[IBM Corporation]] ([[PC DOS]], [[OS/2]]) * [[AI Architects]]/[[Ergo Computer Solutions]]/[[Eclipse Computer Solutions]]/[[Ergo Computing]] ([[OS/286]], [[OS/386]] DOS extenders) * [[Intelligent Graphics Corporation]] ([[VM/386]] multi-user DOS) * [[Intel Corporation]] ([[Intel 80286|286]], [[Intel 80386|386]], [[Intel 80486|486]] microprocessors) * [[Locus Computing Corporation]] ([[Merge (software)|Merge]]) * [[Lotus Development Corporation]] ([[Lotus 1-2-3]]) * [[Microsoft Corporation]] ([[MS-DOS]], [[Microsoft Windows]]) * [[Phar Lap Software]] ([[286/DOS|DOS<nowiki>|</nowiki>286]], [[386/DOS|DOS<nowiki>|</nowiki>386]], [[TNT (DOS extender)|TNT]]) * [[Phoenix Technologies]] ([[Phoenix BIOS]], [[PMate]], [[PForCe]], [[Plink-86]]) * [[Quarterdeck Office Systems]] ([[QEMM]], [[DESQview]], [[DESQview/X]]) * [[Rational Systems]]/[[Tenberry Software]] ([[DOS/16M]], [[DOS/4G]], [[DOS/4GW]] DOS extenders)
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)