DOS API
DOS APIは86-DOSで開発されたAPIで、MS-DOS / PC DOSをはじめとするDOS互換オペレーティングシステムで使用されています。DOS APIの呼び出しは、ほとんどの場合、ソフトウェア割り込み21h(INT 21h)を用いて行われます。AHプロセッサレジスタにサブファンクション番号を、その他のレジスタにパラメータを指定してINT 21hを呼び出すことで、様々なDOSサービスを呼び出すことができます。これらのサービスには、キーボード入力、ビデオ出力、ディスクファイルへのアクセス、プログラム実行、メモリ割り当てなど、様々なアクティビティの処理が含まれます。1980年代後半には、DOSエクステンダと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では、INT 25h/26h関数が拡張され、32MBを超えるハードディスクをサポートしました。MS-DOS 5では、上位メモリブロック(UMB)の使用がサポートされました。MS-DOS 5の後、DOS APIはDOSの連続スタンドアロンリリースで変更されていません。
DOS APIとWindows
Windows 9xでは、DOS がプロテクト モード システムとグラフィカル シェルをロードしました。DOS は通常、仮想 DOS マシン(VDM) からアクセスされましたが、Windows をロードせずにリアル モードのMS-DOS 7.0を直接ブートすることもできました。DOS API は拡張され、国際化サポートと長いファイル名のサポートが強化されましたが、長いファイル名のサポートは VDM でのみ利用可能でした。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 NTとそのベースのシステム(Windows XPやWindows Vistaなど)はMS-DOSをベースにしていませんが、仮想マシンであるNTVDMを使用してDOS APIを処理します。NTVDMは、DOSプログラムを仮想8086モード( 80386以降のプロセッサで利用可能な保護モード内でのリアルモードのエミュレーション)で実行することで動作します。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で最大2GBのパーティションをサポートするように拡張されました。 |
26h | 絶対ディスク書き込み | 1.0以上 | DOSカーネルに実装され、DOS 3.31で最大2GBのパーティションをサポートするように拡張されました。 |
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 21時間サービス
以下は、DOS API プライマリ ソフトウェア割り込みベクターを介して提供される関数のリストです。
AH | 説明 | バージョン |
|---|---|---|
00h | プログラム終了 | 1.0以上 |
01h | 文字入力 | 1.0以上 |
02h | 文字出力 | 1.0以上 |
03h | 補助入力 | 1.0以上 |
04h | 補助出力 | 1.0以上 |
05h | プリンター出力 | 1.0以上 |
06h | 直接コンソールI/O | 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 | ファイルを開く | 1.0以上 |
10h | ファイルを閉じる | 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 | ディスク転送アドレスを設定する | 1.0以上 |
1Bh | デフォルトドライブの割り当て情報を取得する | 1.0以上 |
1Ch | 指定されたドライブの割り当て情報を取得する | 1.0以上 |
1Dh | 予約済み | 1.0以上 |
1Eh | 予約済み | 1.0以上 |
1Fh | デフォルトドライブのディスクパラメータブロックを取得する | 1.0以上 |
20h | 予約済み | 1.0以上 |
21h | ランダム読み取り | 1.0以上 |
22h | ランダム書き込み | 1.0以上 |
23h | レコード単位でファイルサイズを取得する | 1.0以上 |
24h | ランダムなレコード番号を設定する | 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 | ディスク転送アドレスを取得する | 2.0以上 |
30h | DOSバージョンを入手 | 2.0以上 |
31h | 終了して居住を続ける | 2.0以上 |
32h | 指定されたドライブのディスクパラメータブロックを取得します。 | 2.0以上 |
33h | Ctrl-Break を取得または設定する | 2.0以上 |
34h | InDOSフラグポインタを取得する | 2.0以上 |
35h | 割り込みベクトルを取得する | 2.0以上 |
36h | 空きディスク容量を取得する | 2.0以上 |
37h | スイッチ文字を取得または設定する | 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 | DOS 内部ポインタ (SYSVARS) を取得する | 2.0以上 |
53h | ディスクパラメータブロックを作成する | 2.0以上 |
54h | 検証フラグを取得 | 2.0以上 |
55h | PSPプログラムを作成する | 2.0以上 |
56h | ファイル名を変更する | 2.0以上 |
57h | ファイルの日付と時刻を取得または設定する | 2.0以上 |
58h | 割り当て戦略を取得または設定する | 2.11以降 |
59h | 拡張エラー情報を取得する | 3.0以上 |
5Ah | 固有のファイルを作成する | 3.0以上 |
5Bh | 新しいファイルを作成 | 3.0以上 |
5Ch | ファイルをロックまたはロック解除する | 3.0以上 |
5Dh | ファイル共有機能 | 3.0以上 |
5Eh | ネットワーク機能 | 3.0以上 |
5Fh | ネットワークリダイレクト機能 | 3.0以上 |
60h | ファイル名を修飾する | 3.0以上 |
61h | 予約済み | 3.0以上 |
62h | 現在のPSPを入手する | 3.0以上 |
63h | DBCSリードバイトテーブルポインタを取得する | 3.0以上 |
64h | 外部イベントフラグの待機を設定する | 3.2以上 |
65h | 拡張国情報を取得する | 3.3以上 |
66h | コードページを取得または設定する | 3.3以上 |
67h | ハンドル数を設定する | 3.3以上 |
68h | コミットファイル | 3.3以上 |
69h | メディアIDを取得または設定する | 4.0以上 |
6Ah | コミットファイル | 4.0以上 |
6Bh | 予約済み | 4.0以上 |
6Ch | 拡張ファイルオープン/作成 | 4.0以上 |
ネイティブサポートを備えたオペレーティングシステム
- MS-DOS – 最も普及している実装
- PC DOS – IBM OEM版MS-DOS
- OS/2 1.x – MS-DOS および PC DOS の後継となる Microsoft/IBM 製OS/2 1.x
- SISNE plus –ブラジルのItautecとScopus Tecnologiaが開発したクローン
- DR-DOS – Digital Research DOS ファミリ ( Novell DOS、PalmDOS、OpenDOSなど)
- PTS-DOS – PhysTechSoft および Paragon DOS クローン ( S/DOSを含む)
- ROM-DOS – Datalight ROM DOS バージョン
- 組み込み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 を含む
DOSエミュレーション層を備えたオペレーティングシステム
- PCMODE搭載の同時実行 CP/M-86 (3.1 のみ) - オプションの PC DOS エミュレータを備えた Digital Research CP/M-86 ベースの OS
- Concurrent DOS – PC DOS エミュレータを内蔵した Digital Research CDOS ファミリ
- DOS Plus – Concurrent PC DOS 4.1~5.0 の簡素化されたシングルユーザー版
- マルチユーザー DOS – Datapac System Manager、IMS REAL/32などを含む Digital Research/Novell MDOS ファミリ。
- OS/2 (2.x 以降) –仮想マシンで完全ライセンスの MS-DOS 5.0 を使用する IBM オペレーティング システム
- Windows NT (64 ビット版と 32 ビット ARM 版を除くすべてのバージョン)
その他のエミュレータ
参照
- BIOS割り込み呼び出し
- ラルフ・ブラウンの割り込みリスト(RBIL)
- DOSオペレーティングシステムの比較
- DOS 保護モード インターフェース(DPMI)
- DOSエクステンダー
- DOS MZ実行ファイル
- コマンド.COM
参考文献
- ^ Ray Duncan (1988). 『MS-DOSプログラミング入門:アセンブリ言語とC言語プログラマのためのMicrosoftガイド』 Microsoft Press. ISBN 0914845772。
さらに読む
- ポール・アレン、ビル・ゲイツ、エイドリアン・キング、クリス・ラーソン、ゴードン・レットウィン、ボブ・オレア、ティム・パターソン、クリス・ピーターズ、ブルース・フィリップス、アーロン・レイノルズ、ベティ・スティルメーカー、マーク・ズビコウスキー(1986)。「テクニカルアドバイザー」。MS -DOS (バージョン 1.0-3.2) テクニカルリファレンス百科事典。ハワード・ボーンスタイン、ローレンス・ブレデホフト、レイ・ダンカン、キャロル・モリス、デビッド・ローズ、ジョン・ソーチャ、ジム・トムリン、キャスリーン・ヴィアン、ヴァン・ウォルバートン、ジム・ベリー、バリー・プレッパーナウ、パム・ビーソン、アンドレア・ルイス、デビッド・リグミール (編)。Microsoft リファレンスライブラリ 第 1 巻 (初版は撤回)。米国ワシントン州レドモンド:マイクロソフトプレス。ISBN 0-914845-69-1LCCN 86-8640. OCLC 635600205 .(xvii+1053ページ; 29cm) (注: この初版にはシステムの内部動作のフローチャートが含まれています。1986年に大量配布される前にマイクロソフトによって撤回されました。これは、多くの事実誤認と、公表されるべきではない機密情報が含まれていたためです。印刷されたコピーはほとんど残っていません。1988年に完全に改訂された版に置き換えられました。[1])
- Zbikowski, Mark ; Allen, Paul ; Ballmer, Steve ; Borman, Reuben ; Borman, Rob ; Butler, John ; Carroll, Chuck ; Chamberlain, Mark ; Chell, David ; Colee, Mike ; Courtney, Mike ; Dryfoos, Mike ; Duncan, Rachel ; Eckhardt, Kurt ; Evans, Eric ; Farmer, Rick ; Gates, Bill ; Geary, Michael ; Griffin, Bob ; Hogarth, Doug ; Johnson, James W. ; Kermaani, Kaamel ; King, Adrian ; Koch, Reed ; Landowski, James ; Larson, Chris ; Lennon, Thomas ; Lipkie, Dan ; McDonald, Marc ; McKinney, Bruce ; Martin, Pascal ; Mathers, Estelle ; Matthews, Bob ; Melin, David ; Mergentime, Charles ; Nevin, Randy ; Newell, Dan ; Newell, Tani ; Norris, David ; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim ; Perez, Gary; Peters, Chris; Petzold, Charles ; Pollock, John; Reynolds, Aaron ; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Short, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). 「技術アドバイザー」. MS-DOS 百科事典: バージョン 1.0 から 3.2 . 著者: Duncan, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom;カイル, ジム;レトウィン, ゴードン;ペッツォルト, チャールズ; ラビノウィッツ, チップ; トムリン, ジム; ウィルトン, リチャード; ウォルバートン, ヴァン; ウォン, ウィリアム; ウッドコック, ジョアン(完全改訂版). ワシントン州レドモンド, 米国:マイクロソフト・プレス. ISBN 1-55615-049-0LCCN 87-21452. OCLC 16581341 .(xix+1570ページ; 26cm) (注: この版は、撤回された1986年の初版を別の著者チームによって大幅に改訂した後、1988年に出版されました。[2])
- ノートン、ピーター、ウィルトン、リチャード (1987). 『新ピーター・ノートン・プログラマーズ・ガイド IBM PC & PS/2』 . マイクロソフト・プレス. ISBN 1-55615-131-4。
- レイ・ダンカン(1988年)『MS-DOSプログラミング上級編:アセンブリ言語およびC言語プログラマのためのMicrosoftガイド』 Microsoft Press. ISBN 0914845772。
- ホーガン、トム(1991年)『プログラマーズPCソースブック』マイクロソフトプレス、ISBN 155615321X。
- 『MS-DOSプログラマーズ・リファレンス - MS-DOS公式テクニカル・リファレンス』。Microsoft Press、1993年。ISBN 1556155468。
- IBM PC DOS 7 テクニカルアップデート
- OpenDOS開発者リファレンスシリーズ - OpenDOSプログラマーズガイド - システムおよびプログラマーズガイド。Caldera , Inc. 1997年8月。Caldera部品番号:200-DOPG-003。2017年10月7日時点のオリジナルよりアーカイブ。 2012年6月28日閲覧。(英国で印刷されました。)
外部リンク
- x86 割り込みリスト (別名 RBIL、Ralf Brown の割り込みリスト)
- ctyme.com - 関数によるINT呼び出し
- wustl.edu - MS-DOS サービスの説明
- MS-DOS 割り込み アーカイブ 2011-10-13 at the Wayback Machine