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で大幅に拡張された[1]。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 XPWindows VistaなどのWindows NT系のシステムはMS-DOSを利用していない。そのため、NTVDMを利用してDOS APIを処理している。NTVDMは、仮想8086モードでDOSプログラムを実行する。NTVDMはDOS 5.0 APIをサポートする。Linux用のDOSEMU英語版も同様の方法を利用している。

DOSで使用される割込みベクタ

編集

以下は、DOS API関数を呼び出すための割り込みベクタのリストである。

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

DOS INT 21hサービス

編集

以下は、DOS APIのプライマリソフトウェア割り込みベクタを介して提供される機能のリストである。

AH 説明 バージョン
00h プログラム終了 1.0
01h 文字入力 1.0
02h 文字出力 1.0
03h 補助入力 1.0
04h 補助出力 1.0
05h プリンタ出力 1.0
06h 直接コンソール入出力 1.0
07h エコーなし直接コンソール入力 1.0
08h エコー付きコンソール入力 1.0
09h 文字列表示 1.0
0Ah バッファドキーボード入力 1.0
0Bh 入力状態取得 1.0
0Ch 入力と入力バッファの破棄 1.0
0Dh ディスクリセット 1.0
0Eh デフォルトドライブ設定 1.0
0Fh ファイルオープン(FCB) 1.0
10h ファイルクローズ(FCB) 1.0
11h 一番目のファイル検索 1.0
12h 次のファイル検索 1.0
13h ファイル削除 1.0
14h シーケンシャル読み込み 1.0
15h シーケンシャル書き込み 1.0
16h ファイル作成/上書き 1.0
17h ファイル名変更 1.0
18h 予約済み 1.0
19h デフォルトドライブ取得 1.0
1Ah Set disk transfer address 1.0
1Bh Get allocation info for default drive 1.0
1Ch Get allocation info for specified drive 1.0
1Dh 予約済み 1.0
1Eh 予約済み 1.0
1Fh Get disk parameter block for default drive 1.0
20h 予約済み 1.0
21h ランダム読み込み 1.0
22h ランダム書き込み 1.0
23h レコード中のファイル長取得 1.0
24h Set random record number 1.0
25h 割り込みベクタ設定 1.0
26h PSP作成 1.0
27h ランダムブロック読み込み 1.0
28h ランダムブロック書き込み 1.0
29h ファイル名解析 1.0
2Ah 日付取得 1.0
2Bh 日付設定 1.0
2Ch 時刻取得 1.0
2Dh 時刻設定 1.0
2Eh ベリファイフラグ設定 1.0
2Fh Get disk transfer address 2.0
30h DOSバージョン取得 2.0
31h 常駐して終了 2.0
32h Get disk parameter block for specified drive 2.0
33h Ctrl Break取得/設定 2.0
34h Get InDOS flag pointer 2.0
35h 割り込みベクタ取得 2.0
36h ディスク空き容量取得 2.0
37h Get or set switch character 2.0
38h 国情報取得/設定 2.0
39h サブディレクトリ作成 2.0
3Ah サブディレクトリ削除 2.0
3Bh カレントディレクトリ変更 2.0
3Ch ファイル作成/上書き 2.0
3Dh ファイルオープン 2.0
3Eh ファイルクローズ 2.0
3Fh デバイス/ファイル読み込み 2.0
40h デバイス/ファイル書き込み 2.0
41h ファイル削除 2.0
42h ファイルポインタ移動 2.0
43h ファイル属性取得/設定 2.0
44h デバイス向けI/Oコントロール 2.0
45h ハンドル複写 2.0
46h ハンドルをリダイレクト 2.0
47h カレントディレクトリ取得 2.0
48h メモリ確保 2.0
49h メモリ解放 2.0
4Ah メモリ再確保 2.0
4Bh プログラム実行 2.0
4Ch 戻り値を返して終了 2.0
4Dh 戻り値取得 2.0
4Eh 一番目のファイル検索 2.0
4Fh 次のファイル検索 2.0
50h 現在のPSP設定 2.0
51h 現在のPSP取得 2.0
52h Get DOS internal pointers (SYSVARS) 2.0
53h ディスクパラメータブロック作成 2.0
54h ベリファイフラグ取得 2.0
55h Create program PSP 2.0
56h ファイル名変更 2.0
57h ファイル時刻取得/設定 2.0
58h Get or set allocation strategy 2.11
59h 拡張エラー情報取得 3.0
5Ah ユニークファイル作成 3.0
5Bh 新規ファイル作成 3.0
5Ch ファイルロック/アンロック 3.0
5Dh ファイル共有機能 3.0
5Eh ネットワーク機能 3.0
5Fh ネットワークリダイレクト機能 3.0
60h Qualify filename 3.0
61h 予約済み 3.0
62h 現在のPSP取得 3.0
63h Get DBCS lead byte table pointer 3.0
64h Set wait for external event flag 3.2
65h 拡張国情報取得 3.3
66h コードページ設定/取得 3.3
67h Set handle count 3.3
68h Commit file 3.3
69h メディアID取得/設定 4.0
6Ah Commit file 4.0
6Bh 予約済み 4.0
6Ch 拡張 ファイルオープン/作成 4.0

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

編集

その他のエミュレータ

編集

脚注

編集
  1. ^ Ray Duncan (1988). Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers. Microsoft Press. ISBN 0914845772 

関連項目

編集

出典

編集
  • Bornstein, Howard; Bredehoeft, Lawrence; Duncan, Ray; Morris, Carol; Rose, David; Socha, John; Tomlin, Jim; Vian, Kathleen et al. (1986). “Technical advisors”. In Beley. MS-DOS (Versions 1.0-3.2) Technical Reference Encyclopedia. Microsoft Reference Library. 1 (Original withdrawn ed.). Redmond, Washington, USA: Microsoft Press. ISBN 0-914845-69-1. LCCN 86--8640. OCLC 635600205  (xvii 1053ページ; 29   cm)(NB。このオリジナル版には、システムの内部動作のフローチャートが含まれている。しかし、1986年に大量配布される前にマイクロソフトによって撤回された。なぜなら、公表されるべきではない機密情報だけでなく、多くの事実上の誤りが含まれていたためである。生き残った印刷物はほとんどなかった。それはその後に、1988年に完全に作り直された版に置き換えられた。[1]
  • Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom; Kyle, Jim; Letwin, Gordon; Petzold, Charles et al. (1988). “Technical advisors”. The MS-DOS Encyclopedia: versions 1.0 through 3.2 (Completely reworked ed.). Redmond, Washington, USA: Microsoft Press. ISBN 1-55615-049-0. LCCN 87--21452. OCLC 16581341  (xix 1570ページ; 26   cm)(NB。この版は、1986年に撤回された1986年の初版を別の作家のチームによって大幅に改良した後に1988年に出版された。[2]
  • ピーターノートンとリチャードウィルトン著IBM PC&PS/2の新しいピーターノートンプログラマーズガイド、マイクロソフトプレス、1987年ISBN 1-55615-131-4
  • Ray Duncan (1988). Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers. Microsoft Press. ISBN 0914845772 
  • 1991年マイクロソフトプレス、Thom Hogan 著「Programmer's PC Sourcebook」 ISBN 155615321X
  • Microsoft MS-DOSプログラマーズリファレンス - MS-DOSの公式テクニカルリファレンス、Microsoft Press、1993 ISBN 1556155468
  • IBM PC DOS 7テクニカルアップデート
  • OpenDOS Developer's Reference Series — OpenDOS Programmer's Guide — System and Programmer's Guide. Caldera, Inc.. (August 1997). Caldera Part No. 200-DOPG-003. オリジナルの2017-10-07時点におけるアーカイブ。. https://web.archive.org/web/20171007025631/http://www.drdos.net/documentation/sysprog/httoc.htm 2012年6月28日閲覧。  (イギリスで印刷された。)

外部リンク

編集