DOS API

DOS APIは86-DOSを起源とするAPIで、MS-DOS/PC DOSや他のDOS互換のオペレーティングシステムで使われている。DOS APIのほとんどの呼び出しは、INT 21hを使用して呼び出される。AH プロセッサレジスタのサブファンクション番号と他のレジスタの他のパラメータを指定してINT 21hを呼び出すことによって、さまざまなDOSサービスを呼び出せる。これには、キーボード入力、ビデオ出力、ディスクファイルアクセス、プログラム実行、メモリ割り当て、その他さまざまなアクティビティの処理が含まれる。1980年代後半には、DOSエクステンダとDPMIを併用することで、プログラムを16ビットまたは32ビットの保護モードで実行してもDOS APIにアクセスできるようになった。

 DOS APIの歴史 
86-DOSおよびMS-DOS 1.0の元のDOS APIは、CP/Mと機能的に互換性があるように設計されている。ファイルアクセスにはファイルコントロールブロック (FCB)が利用された。DOS APIは、ファイルハンドルを使用したファイルアクセス、階層ディレクトリ、およびデバイスのI/O制御など、いくつかのUNIXの概念によってMS-DOS 2.0で大幅に拡張された。DOS 3.1では、ネットワークリダイレクタのサポートが追加された。MS-DOS 3.31では、32 MBを超えるハードディスクをサポートするようにINT 25h/26h機能が強化された。MS-DOS 5は、上位メモリブロック（UMB）を使用するためのサポートを追加した。MS-DOS 5以降は、DOSの連続したスタンドアロンリリースのDOS APIは変更されていない。

 DOS APIとWindows 
Windows 9xでは、プロテクトモードのシステムとGUIシェルをロードするブートローダとしてDOSが使用されていた。DOSは通常VDMからアクセスされていたが、WindowsをロードせずにリアルモードMS-DOS 7.0としてブートすることも可能であった。（LFN）はVDMでのみ利用可能であったが、DOS APIは拡張国際化サポートとLFNサポートで拡張された。Windows 95 OSR2では、DOSは7.1に更新されてFAT32サポートが追加され、DOS APIに機能追加された。Windows 98およびWindows MEもMS-DOS 7.1 APIを実装しているが、Windows MEはMS-DOS 8.0として報告する。

Windows XPやWindows VistaなどのWindows NT系のシステムはMS-DOSを利用していない。そのため、NTVDMを利用してDOS APIを処理している。NTVDMは、仮想8086モードでDOSプログラムを実行する。NTVDMはDOS 5.0 APIをサポートする。Linux用のも同様の方法を利用している。

 DOSで使用される割込みベクタ 
以下は、DOS API関数を呼び出すための割り込みベクタのリストである。
割り込みベクタ説明バージョン備考 プログラムを終了 1.0+ DOSカーネルに実装 メインDOS API 1.0+ DOSカーネルに実装 プログラム終了アドレス 1.0+呼び出し元プログラムの戻りアドレス  Control-Cハンドラアドレス 1.0+デフォルトのハンドラはコマンドシェル（通常はCOMMAND.COM）にある 重大なエラーハンドラアドレス 1.0+デフォルトのハンドラはコマンドシェル（通常はCOMMAND.COM）にある 絶対ディスク読み取り 1.0+ DOSカーネルで実装され、DOS 3.31で拡張され、最大2 GBのパーティションをサポート 絶対ディスク書き込み 1.0+ DOSカーネルで実装され、DOS 3.31で拡張され、最大2 GBのパーティションをサポート 終了して常駐する 1.0+ DOS 1.0ではCOMMAND.COM、DOS 2.0+ではDOSカーネルで実装されている アイドルコールアウト 2.0以上入力待ちのときにDOSカーネルによって呼び出される 高速コンソール出力 2.0以上組み込みのコンソールデバイスドライバまたはANSI.SYSのような代替ドライバによって実装される ネットワーキングと重要なセクション 3.0以上ネットワークソフトウェアとインターフェイスするためにDOSカーネルによって呼び出される 未使用 未使用 未使用 一時的なリロード 2.0以上 COMMAND.COMで実装されている 多重化 3.0以上サブファンクション番号に応じて、DOSカーネルおよびさまざまなプログラム（PRINT、MSCDEX、DOSKEY、APPENDなど）で実装されている

 DOS INT 21hサービス 
以下は、DOS APIのプライマリソフトウェア割り込みベクタを介して提供される機能のリストである。
説明バージョンプログラム終了1.0+文字入力1.0+文字出力1.0+補助入力1.0+補助出力1.0+プリンタ出力1.0+直接コンソール入出力1.0+エコーなし直接コンソール入力1.0+エコー付きコンソール入力1.0+文字列表示1.0+バッファドキーボード入力1.0+入力状態取得1.0+入力と入力バッファの破棄1.0+ディスクリセット1.0+デフォルトドライブ設定1.0+ファイルオープン(FCB)1.0+ファイルクローズ(FCB)1.0+一番目のファイル検索1.0+次のファイル検索1.0+ファイル削除1.0+シーケンシャル読み込み1.0+シーケンシャル書き込み1.0+ファイル作成/上書き1.0+ファイル名変更1.0+予約済み1.0+デフォルトドライブ取得1.0+Set disk transfer address1.0+Get allocation info for default drive1.0+Get allocation info for specified drive1.0+予約済み1.0+予約済み1.0+Get disk parameter block for default drive1.0+予約済み1.0+ランダム読み込み1.0+ランダム書き込み1.0+レコード中のファイル長取得1.0+Set random record number1.0+割り込みベクタ設定1.0+PSP作成1.0+ランダムブロック読み込み1.0+ランダムブロック書き込み1.0+ファイル名解析1.0+日付取得1.0+日付設定1.0+時刻取得1.0+時刻設定1.0+ベリファイフラグ設定1.0+Get disk transfer address2.0+DOSバージョン取得2.0+常駐して終了2.0+Get disk parameter block for specified drive2.0+Ctrl+Break取得/設定2.0+Get InDOS flag pointer2.0+割り込みベクタ取得2.0+ディスク空き容量取得2.0+Get or set switch character2.0+国情報取得/設定2.0+サブディレクトリ作成2.0+サブディレクトリ削除2.0+カレントディレクトリ変更2.0+ファイル作成/上書き2.0+ファイルオープン2.0+ファイルクローズ2.0+デバイス/ファイル読み込み2.0+デバイス/ファイル書き込み2.0+ファイル削除2.0+ファイルポインタ移動2.0+ファイル属性取得/設定2.0+デバイス向けI/Oコントロール2.0+ハンドル複写2.0+ハンドルをリダイレクト2.0+カレントディレクトリ取得2.0+メモリ確保2.0+メモリ解放2.0+メモリ再確保2.0+プログラム実行2.0+戻り値を返して終了2.0+戻り値取得2.0+一番目のファイル検索2.0+次のファイル検索2.0+現在のPSP設定2.0+現在のPSP取得2.0+Get DOS internal pointers (SYSVARS)2.0+ディスクパラメータブロック作成2.0+ベリファイフラグ取得2.0+Create program PSP2.0+ファイル名変更2.0+ファイル時刻取得/設定2.0+Get or set allocation strategy2.11+拡張エラー情報取得3.0+ユニークファイル作成3.0+新規ファイル作成3.0+ファイルロック/アンロック3.0+ファイル共有機能3.0+ネットワーク機能3.0+ネットワークリダイレクト機能3.0+Qualify filename3.0+予約済み3.0+現在のPSP取得3.0+Get DBCS lead byte table pointer3.0+Set wait for external event flag3.2+拡張国情報取得3.3+コードページ設定/取得3.3+Set handle count3.3+Commit file3.3+メディアID取得/設定4.0+Commit file4.0+予約済み4.0+拡張 ファイルオープン/作成4.0+

 ネイティブサポートのあるオペレーティングシステム 

 MS-DOS - 最も普及している実装
 PC DOS - MS-DOSのIBM OEMバージョン
 DR-DOS - Novell DOS、PalmDOS、OpenDOSなどを含むDigital Research DOSファミリー
 PTS-DOS - PhysTechSoftおよびParagon DOSクローン、S/DOSを含む
  - Datalight ROM DOSバージョン
 FreeDOS - フリーのオープンソースDOSクローン
 ReactOS（IA-32およびx86-64バージョン）
 Windows 95 - MS-DOS 7.0が含まれている
 Windows 98 - MS-DOS 7.1が含まれている
 Windows 98 SE - MS-DOS 7.1が含まれている
 Windows ME - MS-DOS 8.0を含む
 Windows NT（64ビット版を除くすべてのバージョン）

 その他のエミュレータ 

 Windows NT用NTVDM
 Linux用の
 DOSBox

 脚注 

 関連項目 

 BIOS割り込み呼び出し
 （RBIL）

 DOS Protected Mode Interface（DPMI）
 DOSエクステンダ

 COMMAND.COM

 出典 

  （xvii + 1053ページ; 29   cm）（NB。このオリジナル版には、システムの内部動作のフローチャートが含まれている。しかし、1986年に大量配布される前にマイクロソフトによって撤回された。なぜなら、公表されるべきではない機密情報だけでなく、多くの事実上の誤りが含まれていたためである。生き残った印刷物はほとんどなかった。それはその後に、1988年に完全に作り直された版に置き換えられた。 ）
  （xix + 1570ページ; 26   cm）（NB。この版は、1986年に撤回された1986年の初版を別の作家のチームによって大幅に改良した後に1988年に出版された。 ）
 ピーターノートンとリチャードウィルトン著IBM PC＆PS/2の新しいピーターノートンプログラマーズガイド、マイクロソフトプレス、1987年    。

 1991年マイクロソフトプレス、Thom Hogan 著「Programmer's PC Sourcebook」 
 Microsoft MS-DOSプログラマーズリファレンス - MS-DOSの公式テクニカルリファレンス、Microsoft Press、1993 
 IBM PC DOS 7テクニカルアップデート
  （イギリスで印刷された。）

 外部リンク 

 x86割り込みリスト（別名 RBIL、ラルフ・ブラウンの割り込みリスト）
 ctyme.com - INT関数による呼び出し
 wustl.edu - MS-DOSサービスの説明

Category:割り込み (コンピュータ)
Category:X86アーキテクチャ
Category:オペレーティングシステムのAPI
Category:DOS