Zum Inhalt springen

DOS-Extender

aus Wikipedia, der freien Enzyklopädie

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 />