DOS-Extender
Als DOS-Extender bezeichnet man Programme für MS-DOS bzw. dazu kompatibles DOS (wie PC DOS oder DR-DOS), die den {{#invoke:Vorlage:lang|flat}} verwenden. Dieser steht bei der x86-Architektur ab dem Intel 80286 (16-Bit-{{#invoke:Vorlage:lang|flat}}) und 80386 (zusätzlich 32-Bit-{{#invoke:Vorlage:lang|flat}}) neben dem bisherigen {{#invoke:Vorlage:lang|flat}} zur Verfügung. Da PC-kompatibles DOS ein {{#invoke:Vorlage:lang|flat}}-Betriebssystem ist, sind DOS-Programme grundsätzlich ebenfalls auf diesen Modus beschränkt, und damit auch auf den konventionellen Speicher von 640 KiB. Mithilfe eines DOS-Extenders allerdings können DOS-Programme nicht nur im {{#invoke:Vorlage:lang|flat}} laufen, sondern vor allem haben sie direkten Zugriff auf den erweiterten Speicher, womit diese Limitierung wegfällt.<ref name="CW_1989_Extender-appeal">{{#invoke:Vorlage:Literatur|f}}</ref>
Die bekanntesten Standards für DOS-Extender sind VCPI und DPMI. Anfang der 1990er Jahre etablierte sich durchwegs DPMI, weil es mit den DOS-basierten Windows-Versionen ab Windows 3.x und mit OS/2 voll kompatibel ist.
Geschichte
In 86-DOS, das ab 1981 als PC DOS mit dem IBM PC, Modell 5150, der die PC-Plattform begründet, vertrieben und für kompatible PCs als MS-DOS vermarktet wurde, steht nur 1 MiB Adressraum zur Verfügung. Dieses Limit ist auf den im IBM PC verwendeten 8088-Prozessor zurückzuführen, einer 16-Bit-Architektur mit 8-Bit-Daten- und 20-Bit-Adressbus, wo dieser als Arbeitsspeicher auf 640 KiB für Betriebssystem und Programme und 384 KiB für den Zugriff auf Geräte wie das BIOS oder den Grafikspeicher aufgeteilt wurde. Dadurch steht auf IBM-PC-Kompatiblen unter DOS nur 640 KiB „Konventioneller Speicher“ zur Verfügung.<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Mit dem IBM PC/AT verwendete IBM Ende 1984 erstmals einen 80286-Prozessor, bei dem Intel mit dem {{#invoke:Vorlage:lang|flat}} einen zusätzlichen Betriebsmodus hinzugefügt hatte. Da DOS jedoch für den 8086/8088 geschrieben worden war, lief es auch auf dem PC/AT im retronym mit {{#invoke:Vorlage:lang|flat}} bezeichneten Modus des 8086 und machte vom neuen Betriebsmodus keinen Gebrauch. Im {{#invoke:Vorlage:lang|flat}} kann der gesamte Speicher adressiert werden, beim 80286 sind dies 16 MiB, allerdings ist die Adressierung immer noch segmentiert.<ref>https://www.xtof.info/inside-windows3.html#h-protected-mode</ref> Bereits im darauffolgenden Jahr, 1985, stellte Intel mit dem 80386 den ersten 32-Bit-x86-Prozessor vor, dessen {{#invoke:Vorlage:lang|flat}} im 32-Bit-Modus theoretisch bis zu 4 GiB Arbeitsspeicher linear adressieren kann.
Da der {{#invoke:Vorlage:lang|flat}} und der „Erweiterte Speicher“ ({{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}}) für Anwendungsprogramme unter DOS brach lag, wurden Ende der 1980er Jahre die ersten „MS-DOS-Extender“ angeboten, die einzelnen dafür programmierten DOS-Programmen den {{#invoke:Vorlage:lang|flat}} exklusiv zugänglich machten.<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Technik
DOS-Extender ermöglichen Programme, die mehr Speicher nutzen können, als PC-kompatibles DOS eigentlich bereitstellen kann. Nur ein {{#invoke:Vorlage:lang|flat}}-DOS-Programm ist von der Beschränkung auf den konventionelle Speicher befreit und kann im erweiterten Speicher Programmcode und Daten verarbeiten. Dazu stellen DOS-Extender Mechanismen bereit, kontrolliert zwischen {{#invoke:Vorlage:lang|flat}} und {{#invoke:Vorlage:lang|flat}} zu wechseln. Die Notwendigkeit dafür entstammt der Architektur von MS-DOS: als 16-Bit-Betriebssystem nutzt es auf dem IBM PC viele Funktionen dessen Systemfirmware, des BIOS. Sowohl die BIOS-Routinen als auch die DOS-Funktionen sind nur im Betriebsmodus des 8086 (bzw. 8088) – dem {{#invoke:Vorlage:lang|flat}} – verfügbar. DOS-Programme müssen also grundsätzlich, um diese System-Funktionen ansprechen zu können, im selben Modus laufen. Ein Programm, das im {{#invoke:Vorlage:lang|flat}} läuft, muss daher für die BIOS- und DOS-Funktionen in den {{#invoke:Vorlage:lang|flat}} zurück wechseln – oder alle Funktionen, die eigentlich vom Betriebssystem (im Falle von DOS beinhaltet dies auch die BIOS-Funktionen) zur Verfügung gestellt werden, selbst implementieren.
Bei der Verwendung von DOS-Extendern soll sich der Aufwand für die Entwickler und Programmierer möglichst gering halten, denn für das DOS-Programm, das im {{#invoke:Vorlage:lang|flat}} laufen soll, ändert sich vorerst nichts: es ruft wie gewohnt die Funktionen von DOS und dem BIOS auf – der DOS-Extender kümmert sich um den kontrollierten Wechsel in den {{#invoke:Vorlage:lang|flat}}, und anschließend zurück in den {{#invoke:Vorlage:lang|flat}}, wo die Ausführung des eigentlichen Programms stattfindet.<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
DOS-Extender haben gegenüber größeren Betriebssystemen wie PC-Unix oder OS/2, die von sich aus den {{#invoke:Vorlage:lang|flat}} bieten, den Vorteil, dass sie insgesamt, mit dem Betriebssystem und dem eigentlichen Anwendungsprogramm, mit weniger Arbeitsspeicher auskommen.<ref>{{#invoke:Vorlage:Literatur|f}}</ref> Auf IBM-PC-kompatiblen Computern mit 80386 profitieren DOS-Programme zusätzlich von der neuen 32-Bit-Architektur IA-32, was der Performance zugutekommt, solange sie im {{#invoke:Vorlage:lang|flat}} verbleiben. Die allgemeine Verbesserung der Performance wurde insbesondere mit der Einführung eines linearen Speicherzugriffs aus dem {{#invoke:Vorlage:lang|flat}} bei den VESA BIOS Extension (VBE) der Version 2.0 auf den VRAM der Grafikkarte deutlich, was beispielsweise einige Computerspiele beschleunigte. Sobald jedoch DOS- und BIOS-Funktionsaufrufe erforderlich sind, ist meist ein Kontextswitch (ein Wechsel des Betriebsmodus) in den {{#invoke:Vorlage:lang|flat}} erforderlich, was vergleichsweise viele Prozessorzyklen in Anspruch nimmt und daher Zeit kostet. Um derartige Wechsel zu minimieren, reimplementieren manche DOS-Extender ausgesuchte BIOS- und DOS-Funktionen im {{#invoke:Vorlage:lang|flat}}. DOS-Extender werden daher manchmal auch mit einer Art Mini-Betriebssystem verglichen, denn auch alle 32-Bit-PC-Betriebssysteme haben keinen Zugriff auf die BIOS-Funktionen und müssen deren Funktionalität im {{#invoke:Vorlage:lang|flat}} neu implementieren.
Diverse Compiler für DOS der späteren 1990er Jahre bieten die Option, {{#invoke:Vorlage:lang|flat}}-Programme zu erzeugen. Damit diese unter DOS ausführbar sind, muss ein DOS-Extender mitgeliefert werden.<ref>{{#invoke:Vorlage:Literatur|f}}</ref> Anfangs machten vor allem Business-Programme vom {{#invoke:Vorlage:lang|flat}} Gebrauch, beispielsweise AutoCAD und Lotus 1-2-3. In den 1990er Jahren stach der Watcom C/C++ Compiler besonders hervor, da er mit DOS/4GW einen günstigen DOS-Extender mitlieferte, der für kommerzielle Programme lizenzfrei verwendet werden durfte und somit schnell, insbesondere in der Computerspielbranche, Verbreitung fand. Eines der ersten und bekanntesten DOS-Spiele, das den 32-Bit-DOS-Extender DOS/4GW nutzt, ist DOOM.<ref>https://www.xtof.info/inside-windows3.html#h-dpmi--dos-extender</ref>
Standardisierung
In der zweiten Hälfte der 1980er Jahre entstanden unterschiedliche, zueinander nicht kompatible DOS-Extender. Ein erster erfolgreicher Versuch einer Standardisierung ist das {{#invoke:Vorlage:lang|flat}}, kurz VCPI, das von Phar Lap und Quarterdeck ab 1987 entwickelt wurde. VCPI setzt jedoch einen i386 voraus und ist mit dem 80286 nicht kompatibel.
Beispiele für DOS-Extender vor VCPI:
- 286|DOS-Extender und 386|DOS-Extender von Phar Lap Software<ref name="CW_1989_Extender-appeal" /><ref name="PCMag_386-DOS-Extenders" />
- DOS/16M von Rational Systems<ref name="CW_1989_Extender-appeal" /><ref name="PCMag_386-DOS-Extenders" /> (später Tenberry Software; weiterentwickelt zu DOS/4G und die Version für den Watcom C/C++ Compiler DOS/4GW)<ref>{{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:|{{{autor}}}: }}{{#if:|{{#if:Unofficial DOS/4G(W) documentation.|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=Unofficial DOS/4G(W) documentation.}}]{{#if:| ({{{format}}})}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:https://rgmroman.narod.ru/Dos4g.htm%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=Unofficial DOS/4G(W) documentation.}}}}|[{{#invoke:URLutil|getNormalized|1=https://rgmroman.narod.ru/Dos4g.htm}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=Unofficial DOS/4G(W) documentation.}}}}]}}{{#if:| ({{{format}}}{{#if:rgmroman.narod.ru2005{{#if: 2025-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| )
| {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ;
| )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:https://rgmroman.narod.ru/Dos4g.htm%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://rgmroman.narod.ru/Dos4g.htm}}%7C%7C}}}}{{#if:Unofficial DOS/4G(W) documentation.|{{#if:{{#invoke:WLink|isValidLinktext|1=Unofficial DOS/4G(W) documentation.|lines=0}}||}}}}{{#if: rgmroman.narod.ru| In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=rgmroman.narod.ru}}}}{{#if: | {{{hrsg}}}{{#if: 2005|,|{{#if: 2025-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: 2005| {{#if:{{#invoke:DateTime|format|2005|noerror=1}}
|{{#invoke:DateTime|format|2005|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=2005|class=Zitationswartung}} }}{{#if: |,|{{#if: 2025-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2025-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:2005|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:708686||(?)}}}}}}{{#if: DOS/4G, DOS/4GW, DOS/4GW Professional and DOS/16M are dos extenders from Tenberry Software (old name Rational Systems). … DOS/16M is a 16-bit dos extender, DOS/4G(W) based on it.2025-12-29|;}}}}{{#if: 2025-12-29| {{#if:2005{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2025-12-29 |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2025-12-29|class=Zitationswartung}} }} {{#invoke:DateTime|format|2025-12-29|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:rgmroman.narod.ru2005{{#if: 2025-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| (
| {{#if: | | (}}
}}{{#ifeq:{{#if:en|en|de}}|de||
{{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: 2005{{#if: 2025-12-29 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}enDOS/4G, DOS/4GW, DOS/4GW Professional and DOS/16M are dos extenders from Tenberry Software (old name Rational Systems). … DOS/16M is a 16-bit dos extender, DOS/4G(W) based on it.|{{#if: DOS/4G, DOS/4GW, DOS/4GW Professional and DOS/16M are dos extenders from Tenberry Software (old name Rational Systems). … DOS/16M is a 16-bit dos extender, DOS/4G(W) based on it.|: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if: DOS/4G, DOS/4GW, DOS/4GW Professional and DOS/16M are dos extenders from Tenberry Software (old name Rational Systems). … DOS/16M is a 16-bit dos extender, DOS/4G(W) based on it.
| {{#if:
| {{#if: DOS/4G, DOS/4GW, DOS/4GW Professional and DOS/16M are dos extenders from Tenberry Software (old name Rational Systems). … DOS/16M is a 16-bit dos extender, DOS/4G(W) based on it.
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: https://rgmroman.narod.ru/Dos4g.htm | {{#if: | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://rgmroman.narod.ru/Dos4g.htm | {{#if:{{#invoke:URLutil|isWebURL|https://rgmroman.narod.ru/Dos4g.htm}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://rgmroman.narod.ru/Dos4g.htm Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://rgmroman.narod.ru/Dos4g.htm | {{#if:{{#invoke:URLutil|isWebURL|https://rgmroman.narod.ru/Dos4g.htm}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[https://rgmroman.narod.ru/Dos4g.htm }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: https://rgmroman.narod.ru/Dos4g.htm | {{#if: | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://rgmroman.narod.ru/Dos4g.htm | {{#if:{{#invoke:URLutil|isWebURL|https://rgmroman.narod.ru/Dos4g.htm}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://rgmroman.narod.ru/Dos4g.htm Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://rgmroman.narod.ru/Dos4g.htm | {{#if:{{#invoke:URLutil|isWebURL|https://rgmroman.narod.ru/Dos4g.htm}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[https://rgmroman.narod.ru/Dos4g.htm }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>
- OS/286 und OS/386 von A. I. Architects<ref name="CW_1989_Extender-appeal" />
- X-AM von Intelligent Graphics Corp. (IGC)<ref name="PCMag_386-DOS-Extenders">{{#invoke:Vorlage:Literatur|f}}</ref>
Die DOS-Extender zu dieser Zeit liefen exklusiv und waren mit (kooperativen) Multitasking-Erweiterungen wie DESQview und Windows 3.x nur eingeschränkt kompatibel.<ref>{{#invoke:Vorlage:Literatur|f}}</ref> Die Zusammenarbeit von Quarterdeck mit Phar Lap schuf zwar den VCPI-Standard, mit dem DESQview voll kompatibel war, aber in Windows 3.0 wurde für den 80386 ein neuer Betriebsmodus eingeführt: der „386 Erweiterte Modus“ bzw. „{{#invoke:Vorlage:lang|flat}}“. Anders als beim 80286 bietet der 80386 einen {{#invoke:Vorlage:lang|flat}}, in dem Windows DOS-Programme parallel und mit eigenem Adressraum zur Ausführung bringen kann. Das erlaubt transparentes Multitasking für DOS-Programme. Gleichzeitig gab es zu dieser Zeit bereits zahlreiche {{#invoke:Vorlage:lang|flat}}-DOS-Programme, die in diesem Modus nicht funktionieren.
Obwohl Windows 3.0 im 8086-kompatiblen „{{#invoke:Vorlage:lang|flat}}“ und im 80286-kompatiblen „{{#invoke:Vorlage:lang|flat}}“, die beide auch weiterhin auf dem 80386 funktionieren, mit den bisherigen DOS-Extendern kompatibel bleibt, war Microsoft klar, dass ein neuer und auch mit dem „{{#invoke:Vorlage:lang|flat}}“ kompatibler DOS-Extender entwickelt werden müsste, damit der Vorteil des 80386 – dessen {{#invoke:Vorlage:lang|flat}} – in der Realität nicht zu einem Nachteil werden würde. Das {{#invoke:Vorlage:lang|flat}} (DPMI) wurde daher nicht nur in Windows 3.0 und OS/2 2.0 integriert, sondern auch als freie Spezifikation veröffentlicht. Da die Hersteller der DOS-Extender DPMI übernahmen, konnten die Entwickler existierender {{#invoke:Vorlage:lang|flat}}-DOS-Programme, die diese DOS-Extender nutzten, ihre Produkte von VCPI- in DPMI-kompatible Programme weiterentwickeln, die somit auch unter Windows und OS/2 die volle Stärke des 80386 und nachfolgender IA-32-Prozessoren wie dem 80486 nutzen konnten.
DPMI wurde der bekanntesten Standard für DOS-Extender und in den 1990er Jahren zum Industriestandard. Da zur gleichen Zeit immer nur ein DOS-Extender aktiv sein kann, schließlich verwaltet er sowohl den Speicher als auch die Kontextwechsel vom {{#invoke:Vorlage:lang|flat}} in den {{#invoke:Vorlage:lang|flat}} und zurück, sind DOS-Extender nach DPMI- und VCPI- und frühe proprietäre Spezifikationen zueinander inkompatibel. Wenn ein DPMI-fähiger DOS-Extender läuft, können somit nur DPMI-Clientprogramme ausgeführt werden. Soll ein Programm gestartet werden, dass der VCPI-Spezifikation folgt, so muss der DPMI-DOS-Extender beendet und ein VCPI-fähiger DOS-Extender gestartet werden. Viele DOS-Extender nutzen daher jene Umgebung, die beim Start bereits vorhanden ist; am Beispiel PMODE:<ref>{{#if:|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:Thomas Pytel alias „Tran“|Thomas Pytel alias „Tran“: }}{{#if:|{{#if:PMODE 3.07 documentation|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1={{{archiv-url}}}}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=PMODE 3.07 documentation}}]{{#if:Textdatei| (Textdatei)}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}|{{#if:https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7C}}%7C{{#invoke:Vorlage:Internetquelle%7CTitelFormat%7Ctitel={{#invoke:WLink%7CgetEscapedTitle%7C1=PMODE 3.07 documentation}}}}|[{{#invoke:URLutil|getNormalized|1=https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1=PMODE 3.07 documentation}}}}]}}{{#if:Textdatei| (Textdatei{{#if:1994-12-05{{#if: 2026-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| )
| {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ;
| )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC}}%7C%7C}}}}{{#if:PMODE 3.07 documentation|{{#if:{{#invoke:WLink|isValidLinktext|1=PMODE 3.07 documentation|lines=0}}||}}}}{{#if: | In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{{werk}}}}}}}{{#if: | {{{hrsg}}}{{#if: 1994-12-05|,|{{#if: 2026-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: 1994-12-05| {{#if:{{#invoke:DateTime|format|1994-12-05|noerror=1}}
|{{#invoke:DateTime|format|1994-12-05|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=1994-12-05|class=Zitationswartung}} }}{{#if: |,|{{#if: 2026-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2026-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:1994-12-05|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:708686||(?)}}}}}}{{#if: 2026-01-24|;}}}}{{#if: 2026-01-24| {{#if:1994-12-05{{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2026-01-24 |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2026-01-24|class=Zitationswartung}} }} {{#invoke:DateTime|format|2026-01-24|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:1994-12-05{{#if: 2026-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
| (
| {{#if:Textdatei | | (}}
}}{{#ifeq:{{#if:en|en|de}}|de||
{{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: 1994-12-05{{#if: 2026-01-24 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if:
| {{#if:
| {{#if:
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC | {{#if: | [3] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC | {{#if:{{#invoke:URLutil|isWebURL|https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC | {{#if:{{#invoke:URLutil|isWebURL|https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC | {{#if: | [4] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC | {{#if:{{#invoke:URLutil|isWebURL|https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC | {{#if:{{#invoke:URLutil|isWebURL|https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[https://www.mytears.org/resources/doc/Assembly/ASNIP11/ASNIP11X/PMODE/PMODE.DOC }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>
- findet der DOS-Extender PMODE einen DPMI-Host, so reicht er alle Aufrufe durch; das 32-Bit-DOS-Programm, das PMODE als DOS-Extender nutzt, läuft denn in Wirklichkeit auf dem bereits vorhandenen DPMI-DOS-Extender (wie z. B. Windows 3.x)
- bei vorhandenem Speichermanager, neben Vorlage:Monospace auch etwa QEMM oder 386Max, startet PMODE im VCPI-Modus, weil die Ausführung im Ring 0 schneller ist als im Ring 3 von DPMI
- läuft DOS ohne einen DPMI-Host oder VCPI-Server, ist aber ein Speichermanager für {{#invoke:Vorlage:lang|flat}} (XMS) geladen – wie z. B. Vorlage:Monospace – so nutzt PMODE diesen für die Verwaltung von Erweitertem Speicher; PMODE läuft in diesem Fall in seinem eigenen Modus (weder VCPI, noch DPMI), um einem 32-Bit-DOS-Programm den {{#invoke:Vorlage:lang|flat}} zu bieten.
- fehlt ein XMS-Speichermanager (Vorlage:Monospace), so läuft PMODE im „Vorlage:Monospace“: in diesem Fall übernimmt der DOS-Extender auch die Speicherverwaltung für den Erweiterten Speicher (XMS) selbst
Bekannte DOS-Extender
DOS-Extender finden sich oft in integrierten Entwicklungsumgebungen für DOS, OS/2 und Windows, aber auch als {{#invoke:Vorlage:lang|flat}}:
- der „{{#invoke:Vorlage:lang|flat}}“ verschiedener Borland-Compiler, u. a. Borland Pascal 7.0 (Vorlage:Monospace, 16-Bit, und Vorlage:Monospace, 32-Bit, nur noch in Turbo C)
- DOS/4GW (bei Watcom C/C++ mitgeliefert, sehr beliebt bis 1995, danach Entwicklung eingestellt)
- PMODE/W (als Alternative zu DOS/4GW bei Watcom C/C++)
- CauseWay
- DOS/32 Advanced (DOS/32A; kompatibel zu DOS/4GW, letzte Version 9.12 von 2006)
- HX DOS Extender – HDPMI16 (16-Bit) und HDPMI32 (32-Bit)
- CWSDPMI (unter der Bezeichnung GO32 Bestandteil von DJGPP)
- PMODE/DJ
- Wuschel’s DOS eXtender (WDOSX)
- TNT DOS-Extender SDK von Phar Lap
- 386|DOS-Extender SDK von Phar Lap
- emx von Eberhard Mattes
- Zortech C++
- Zurenava DOS extender (ZRDX)
Die meisten Implementierungen können sowohl VCPI als auch DPMI als Client verwenden, wenn diese als Server (VCPI) bzw. Host (DPMI) bereits geladen sind. Ansonsten nutzen DOS-Extender meist eine eigene Programmierschnittstelle, die nicht zwingend mit anderen DOS-Extendern kompatibel ist – normalerweise lässt sich ein Protected-Mode-Programm für DOS daher nicht mit einem beliebigen anderen DOS-Extender nutzen.
Einzelnachweise
<references />
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Vorlage:"
- Wikipedia:Weblink offline fix-attempted
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL fehlt
- Programmierschnittstelle