コンピュータソフトウェアプログラムの種類
Tenberry Software の DOS/4GW スタートアップ バナー
DOS エクステンダーは、 DOS で実行される コンピュータ ソフトウェア プログラムであり 、ホスト オペレーティング システムが リアル モード でしか動作できない場合でも、ソフトウェアを 保護モード 環境で実行できるようにします。
DOS エクステンダは、 Intel 80286プロセッサ (後に Intel 80386 で拡張) の導入後、 1980 年代に DOS のメモリ制限に対処するために最初に開発されました 。
DOSエクステンダーの操作
DOSエクステンダは、DOSを「拡張」するプログラムであり、プロテクトモードで実行されるプログラムが、基盤となる DOS API と透過的にインターフェースできるようにします。これは、DOSが提供する多くの機能が、 メモリの最初の640キロバイト内のメモリ位置を指す16ビットのセグメントおよびオフセットアドレスを必要とするため必要でした。しかし、プロテクトモードでは、セグメントレジスタ(現在はセレクタと呼ばれます)を使用して、セグメントの特性を記述する グローバル記述子テーブル 内のエントリを指すという、互換性のないアドレス指定方法が使用されます。2つのアドレス指定方法は相互に排他的であり、プロセッサは非プロテクトモードの要求を処理するために、リアルモード(または V86 モード)へのコストのかかる切り替えを行う必要があります 。
DOS エクステンダは、環境の設定と実際の実行プログラムのロードに加え、 1 MB リアル モード メモリ バリアの下に割り当てられた バッファ を管理する変換レイヤも提供します。これらのバッファは、基礎となるリアル モード オペレーティング システムとプロテクト モード プログラム間でデータを転送するために使用されます。リアル/V86 モードとプロテクト モード間の切り替えは比較的時間のかかる操作なので、エクステンダは、多くのリアル モード操作の機能を自身のプロテクト モード環境内に複製することで、切り替え回数を最小限に抑えようとします。DOS はオペレーティング システムとユーザー レベルのソフトウェア間の通信に 割り込みを頻繁に使用するため、DOS エクステンダは一般的なハードウェア割り込み ( リアルタイム クロック やキーボード コントローラなど) やソフトウェア割り込み (DOS 自体やマウス API など) の多くをインターセプトします 。一部のエクステンダは、ビデオ BIOS ルーチンなど、他の一般的な割り込み機能も処理します。
本質的に、DOS エクステンダーは小型のオペレーティング システムのようなもので、基盤となるオペレーティング システム自体の機能の多くを処理します。
開発の歴史
Tenberry Software の DOS/4G 製品ロゴ
DOSエクステンダーは Phar Lap によって発明されたとされていますが、 プロテクトモードDOSプログラムを一般市場に普及させたのは、 Tenberry Software (旧Rational Systems)の386エクステンダー DOS/4GWでした。Watcomの386クラスプロセッサ向けC、C++、Fortranコンパイラに同梱されていたDOS/ 4GWは、すぐに id Software のヒット作 Doom をはじめとするPCアプリケーションやゲームの定番となりました 。
当初、DOSエクステンダーの開発を牽引したのはメモリを大量に消費するビジネスアプリケーションでしたが、PCゲームが真に脚光を浴びるようになったのは、この頃です。DOSエクステンダーの開発により、既存の多様なメモリ管理方法から生じる可能性のある多くの競合に対処し、クライアントプログラムに統一されたインターフェースを提供するために、2つの新しいソフトウェアインターフェースが開発されました。
これらのインタフェースの最初のものは 仮想制御プログラムインタフェース (VCPI)でしたが、 Windows 3.0の開発から発展した DOSプロテクトモードインタフェース(DPMI)仕様によって急速に影を潜めました。 [1] VCPIは、拡張プログラムがリアルモードソフトウェアとインタフェースし、メモリを割り当て、割り込みサービスを処理するためのAPIを提供しました。また、VCPIは、拡張プログラムがプロテクトモードへの切り替えを容易に設定できるようにし、複数のプロテクトモードプログラムを平和的に共存させることを可能にしました。
DOSエクステンダー
Tenberry Software, Inc. の DOS/4G、DOS/4GW 、DOS/16M。
286|DOS Extender および 386|DOS Extender ( Phar Lap 製) 。後に TNT Dos Extender に置き換えられました。
PROTはAl Williamsによって開発され、Dr. Dobb's Journal [2] [3] と2冊の本[4] に掲載された32ビットDOSエクステンダーです。 [ 5] このエクステンダーには、リアルモードに切り替える代わりに、エミュレーションモードでDOSおよびBIOS呼び出しを実行できるという利点がありました。
CauseWayはかつてDOS4Gと競合していたプロプライエタリな拡張機能でした。2000年以降はオープンソースとしてリリースされています。Daggerfallなど、ごく少数のゲームで 使用 されています。
DOS/4G の代替としての DOS/32 (Narech K. 著)
Ergo(旧Eclipse、旧AI Architects)OS/286およびOS/386エクステンダー、およびDPM16およびDPM32サーバー
386Power 32ビットDOSエクステンダーは、32ビットアセンブリ アプリケーション用のエクステンダーです 。 ソースコード が含まれています。
1990年以降の NT 版を除く すべての Microsoft Windows バージョンには、 DPMIサーバーとDOSエクステンダーの両方 が含まれています。 [6]
HX DOS Extenderは、Windowsコンソール( Far Manager など)や一部のWin32 GUIアプリケーションをDOS上で実行できるように、限定的なWin32サポートを提供します。プロテクトモードのDOSプログラムで使用するための16ビットおよび32ビットの DPMI サーバー(HDPMI16/HDPMI32)が含まれています [7]
DosWin32は限定的なWin32サポートを提供します
WDosX は、TMT Pascal コンパイラで使用される、限定的な Win32 サポートの初期の実装でした。
Borland Power Pack は 、Win32 API の限定された部分にアクセスできる、一部の開発スイートに含まれていた拡張機能でした。
TASM も Borland 製で、2 つの DPMI ホストである DPMI32VM を搭載した 32RTM と DPMI16BI を搭載した RTM が含まれていました。
CWSDPMI (Charles W. Sandmann 作) は、32 ビット保護モードの DOS DJGPP プログラムで使用する DPMI サーバーです。
Quarterdeck Office Systems の QDPMI は、 QEMM に含まれる DPMI ホストでした 。
GO32、 DJGPP の古いバージョン(v2より前) および Free Pascalで使用
D3Xは、完全にアセンブリ言語 で書かれたDPMIサーバーです 。まだアルファ版ですが、完成前に開発が中止されました。
DPMIONEは別のDPMIサーバーです。元々はBorland C++とDelphiで生成された32ビットプログラム用に開発されました。
Salford SoftwareのDBOSは、主にFTN77 Fortranコンパイラで使用される32ビットプロテクトモードDOSエクステンダーです [8]
FlashTek の X32 および X32VM はDigital Mars コンパイラ によってターゲットとしてサポートされています。
Blink Inc.のBLINKERバージョン3以降は、CA-Clipper、Microsoft C/C++、PASCAL、FORTRAN、Borland C/C++など、複数の16ビットDOSコンパイラに対応した286 DOSエクステンダーを提供していました。実行環境に応じてリアルモードまたはプロテクトモードで実行可能な独自の「デュアルモード」実行ファイルもサポートしていました。
EMX
PMODE/Wは、Watcom C/C++コンパイラ用の32ビット保護DOSエクステンダーで、2023年7月からオープンソース化されています。 [9]
注目すべきDOS拡張アプリケーション
参考文献
^ ダンカン, レイ; ペッツォルド, チャールズ ; シュルマン, アンドリュー; ベイカー, M. スティーブン; ネルソン, ロス P.; デイビス, スティーブン R.; ムート, ロバート (1992). 『DOS の拡張:プロテクトモード DOS プログラマガイド (第 2 版)』 Addison-Wesley Publishing Company, Inc. pp. 433– 462. ISBN 0-201-56798-9 。
^ Williams, Al (1990年10月). 「Roll your own DOS extender: Part I」. Dr. Dobb's Journal . 15 (10). CMP Technology : 16–18 , 20, 24. ISSN 1044-789X.
^ Williams, Al (1990年11月). 「Roll Your Own DOS Extender: Part II」. Dr. Dobb's Journal . 15 (11). CMP Technology : 74, 76, 80, 81– 83, 85, 122– 128, 130. ISSN 1044-789X.
^ アル・ウィリアムズ (1991). DOS 5: 開発者ガイド 。米国カリフォルニア州レッドウッドシティ: Markt&Technik 。 ISBN 1-55851-177-6 。
^ アル・ウィリアムズ (1993)。 DOS 6: 開発者ガイド 。マルクト&テクニック。 ISBN 1-55851-309-4 。
^ Williams, Al (1993). DOSとWindowsの保護モード:C言語によるDOSエクステンダを使ったプログラミング . Addison-Wesley . p. 30. ISBN 0-201-63218-7 。
^ 「HX DOS エクステンダー」。
^ FTN77 Fortranコンパイラ
^ Charles Scheffold、Tomasz Pytel. 「PMODE/W」 . 2023年12月13日 閲覧 。
外部リンク
「FreeDOS wikiのDOS Extender」。2009年3月2日時点のオリジナルよりアーカイブ 。 2009年 8月12日 閲覧。
HX-DOS
フリーカントリーのDOSエクステンダー一覧