DOS DOC


dos.doc 27-Sep-1987 by Aiichiro Hayashi
Programmer’s Reference Card

システムコール一覧

割り込み番号	機能

int 20h	プログラムの終了(非常駐終了)
	CSレジスタはPSPのパラグラフ番号が入っていなければならない

int 21h	ファンクションコール

int 22h	プログラム終了アドレス

int 23h	CTRL-Cアドレス

int 24h	致命的エラー処理ルーチンのアドレス
	AH←	ビット0	0	読み出し中
				1	書き込み中
		ビット2〜1	00	MS−DOSの予約領域
				01	FAT
				10	ディレクトリ
				11	データ領域
		ビット3	0	fail が選択できる
				1	fail が選択できない
		ビット4	0	retry が選択できる
				1	retry が選択できない
		ビット5	0	ignore が選択できる
				1	ignore が選択できない
		ビット7	0	ブロックデバイスで発生したエラー
				1	キャラクタデバイスで発生したエラー
					もしくはFATの不良(3.10)
	AL←ブロックデバイスの場合,ドライブ番号(3.10)
	DI下位バイト←エラーコード(デバイスドライバのステータスコード)
	BP:SI←デバイスヘッダ(3.10)
		int 21h func 59h で詳細なエラー情報が得られる(3.10)
	AL=	00H	エラーを無視する
		01H	再試行
		02H	プログラムを打ち切る
		03H	プログラム上のシステムコールの失敗(3.10)

int 25h	物理的セクタ番号によるディスク読み出し
	コール		AL		←ドライブ番号(00=a,01=b..)
			DS:BX	←DTA
			CX		←読み出しセクタ数
			DX		←読み出し開始相対セクタ
	リターン	CF=0	正常終了
			CF=1	エラー発生(AL=エラーコード)
	retf で戻るので popf すること

int 26h	物理的セクタ番号によるディスク書き込み
	コール		AL		←ドライブ番号(00h=a,01h=b..)
			DS:BX	←DTA
			CX		←書き込みセクタ数
			DX		←書き込み開始相対セクタ
	リターン	CF=0	正常終了
			CF=1	エラー発生(AL=エラーコード)
	retf で戻るので popf すること

int 27h	プログラムの常駐終了
	CS:DX	←常駐部の最終バイトの次に来る最初のバイトのアドレス

int 28h	非公開
	スプーリング割り込み(see ESC 87/10 p.179)

int 29h	非公開(io:6192h)
	1文字出力(CON デバイスドライバがサポートしている場合)
	AL←出力する文字コード

int 2ah	非公開
	(MS-Networks iret)

int 2bh	非公開

int 2ch	非公開

int 2dh	非公開

int 2eh	非公開	(see AhSKI! 87/4 p.6)
	常駐しているCOMMAND.COMの再起動
	DS:SI	←PSPのオフセット80Hから格納するコマンドラインと
			同じ形式のパラメータのアドレス
	非常駐部が破壊していれば再ロードを行なう
	SS,SPを含めて全てのレジスタは破壊される
	2.11V以外ではネストして使用するとトップレベルに戻り
	起動したプロセスが常駐してしまう

int 2fh	常駐プログラムのインストールチェック(3.10)
	コール		AL	←00
			AH	←プログラム番号
	リターン	AL=00H	インストール可能
			AL=01H	同時にインストールできない
				(相互に排斥する)プログラムが存在する
			AL=0FFH	既に常駐している

	プログラム番号	プログラム(see AhSKI! 87/4 p.6)
		01H	PRINT
		06H	ASSIGN
		10H	SHARE
		11H	REDIR
		12H	MSDOS.SYS
		B7H	APPEND
		B8H	XPORT

	非公開
	PRINT.EXE(3.10)(see ESC 87/10 p.181)
	AX=0100H	常駐チェック(公開)
	AX=0101H	ファイル名リストへの追加
	AX=0102H	ファイル名リストからの削除
	AX=0103H	全ファイルのスプール中止
	AX=0104H	ファイル名リストのアドレス取得

	ASSIGN.COM(3.10)(by Aiichiro Hayashi 29-Sep-1987)
	AX=0600H	常駐チェック(公開)
	AX=0601H	常駐しているASSIGNのセグメント
				ES=セグメント

ファンクションコール

ALまたはAX	機能

00H		プログラムの終了
		CS←PSPのパラグラフ番号

01H		キーボード入力とコンソールへのエコー
		AL=入力された文字コード

02H		文字の出力
		DL←標準出力に出力する文字コード

03H		補助入力
		AL=補助装置から入力された文字コード

04H		補助出力
		DL←補助装置に出力する文字コード

05H		プリンタ出力
		DL←プリンタに出力する文字コード

06H		コンソールとの直接入出力
		DL←0FFH	入力
			ZF=1,AL=0	入力なし
			ZF=0	AL=文字コード
		DL←出力する文字コード(0FFH以外)

07H		コンソールからの直接入力(エコー/ブレークなし)
		AL=標準入力から入力された文字コード

08H		エコーなしのキーボード入力(エコーなし/ブレークあり)
		AL=標準入力から入力された文字コード

09H		文字列の出力
		DS:DX←標準出力に出力する文字列の先頭アドレス

0AH		バッファードキーボード入力
		DS:DX←入力バッファの先頭アドレス

0BH		キーボードのステータスチェック
		AL=00H	タイプアヘッドバッファは空である
		AL=0FFH	タイプアヘッドバッファに文字が入っている

0CH		バッファを空にしてキーボード入力
		AL←01H,06H,07H,08H,0AH
			タイプアヘッドバッファを空にしたあと,対応する値の
			ファンクションコールが行なわれる
			リターン値は対応するファンクションコールに従う
		AL←他の値
			タイプアヘッドバッファを空にする
			AL=00Hをリターン

0DH		ディスクのリセット

0EH		ドライブの選択
		DL←ドライブ番号(00h=a,01h=b...)
		AL=接続されているドライブの数

0FH		ファイルのオープン
		DS:DX←オープンされていないFCBの先頭アドレス
		AL=00H	ディレクトリ・エントリが存在する
		AL=0FFH	ディレクトリ・エントリが存在しない

10H		ファイルのクローズ
		DS:DX←オープンされているFCBの先頭アドレス
		AL=00H	ディレクトリ・エントリが存在する
		AL=0FFH	ディレクトリ・エントリが存在しない

11H		最初のディレクトリ・エントリの検索
		DS:DX←オープンされていないFCBの先頭アドレス
		AL=00H	ディレクトリ・エントリが存在する
		AL=0FFH	ディレクトリ・エントリが存在しない

12H		次のディレクトリ・エントリの検索
		DS:DX←オープンされていないFCBの先頭アドレス
		AL=00H	ディレクトリ・エントリが存在する
		AL=0FFH	ディレクトリ・エントリが存在しない

13H		ファイルの削除
		DS:DX←オープンされていないFCBの先頭アドレス
		AL=00H	ディレクトリ・エントリが存在する
		AL=0FFH	ディレクトリ・エントリが存在しない

14H		シーケンシャルな読み出し
		DS:DX←オープンされているFCBの先頭アドレス
		AL=00H	読み出しが正常に行なわれた
		AL=01H	このレコードにデータは入っていない
		AL=02H	DTA内に1レコードを読み込むのに十分な
			領域がなく,読み出しは取り消された
		AL=03H	ファイルの終わりまで読み出され,レコードの
			残りの部分が0で埋められた

15H		シーケンシャルな書き込み
		DS:DX←オープンされているFCBの先頭アドレス
		AL=00H	書き込みが正常に行なわれた
		AL=01H	ディスクに空き領域がなく,書き込みは中止された
		AL=02H	DTA内にレコードを書き込むための十分な
			領域がなく,書き込みは中止された

16H		ファイルの作成
		DS:DX←オープンされているFCBの先頭アドレス
		AL=00H	ファイルが作成された
		AL=0FFH	ディレクトリに空きエントリがなく,指定された
			ファイル名のエントリも存在しない

17H		ファイル名の変更
		DS:DX←FCBの先頭アドレス
		AL=00H	ファイル名を変更した
		AL=0FFH	指定されたディレクトリ・エントリが存在しない,
			あるいは新しいファイル名がすでに存在している

18H		非公開
		AL=00H

19H		カレント・ドライブ番号の読み出し
		AL=現在選択されているドライブ(00h=a,01h=b...)

1AH		ディスク転送アドレスの設定
		DS:DX←DTA

1BH		カレント・ドライブデータの取得(3.10)2.11では非公開
		AL=1ユニットあたりのセクタ数(アロケーションユニット)
		CX=1セクタあたりのバイト数
		DX=1ドライブあたりのクラスタ数
		DS:BX=FAT IDのアドレス

1CH		ドライブデータの取得(3.10)2.11では非公開
		DL←ドライブ番号(00h=current,01h=a,02h=b...)
		AL=0FFH	ドライブ番号無効
		AL=1クラスタあたりのセクタ数(アロケーションユニット)
		CX=1セクタあたりのバイト数
		DX=1ドライブあたりのクラスタ数(DL←0カレントの時だけ)
		DS:BX=FAT IDのアドレス

1DH		非公開
		AL=00H

1EH		非公開
		AL=00H

1FH		非公開
		カレントドライブのDPBの取得(DL←0にして32H)
		AL=00H	正常終了
		DS:BX=DPBアドレス
		AL=0FFH	ドライブ番号が無効

20H		非公開
		AL=00H

21H		ランダムな読み出し
		DS:DX←オープンされているFCBの先頭アドレス
		AL=00H	読み出しが正常に行なわれた
		AL=01H	このレコードにデータは入っていない
		AL=02H	DTA内に1レコードを読み込むのに十分な
			領域がなく,読み出しは取り消された
		AL=03H	ファイルの終わりまで読み出され,レコードの
			残りの部分が0で埋められた

22H		ランダムな書き込み
		DS:DX←オープンされているFCBの先頭アドレス
		AL=00H	書き込みが正常に行なわれた
		AL=01H	ディスクに空き領域がなく,書き込みは中止された
		AL=02H	DTA内にレコードを書き込むための十分な
			領域がなく,書き込みは中止された

23H		ファイルサイズの計算
		DS:DX←FCBの先頭アドレス
		AL=00H	ファイルのレコード数が,
			相対レコードフィールドにセットされた
		AL=0FFH	指定されたディレクトリ・エントリが存在しない

24H		相対レコードフィールドの設定
		DS:DX←オープンされているFCBの先頭アドレス

25H		割り込みベクトルの設定
		AL←割り込みベクトル番号
		DS:DX←割り込み処理ルーチンのエントリ・アドレス

26H		PSPの作成(3.10)2.11では非公開
		DX←作成するPSPのパラグラフ番号

27H		ランダムなブロック読み出し
		DS:DX←オープンされているFCBの先頭アドレス
		CX←読み出すレコード数
		AL=00H	書き込みが正常に行なわれた
		AL=01H	ディスクに空き領域がなく,書き込みは中止された
		AL=02H	DTA内にレコードを書き込むための十分な
			領域がなく,書き込みは中止された
		CX=読み出されたレコード数

28H		ランダムなブロック書き込み
		DS:DX←オープンされているFCBの先頭アドレス
		CX←書き込むレコード数
			または0(ファイルサイズフィールドをセットする場合)
		AL=00H	書き込みが正常に行なわれた
		AL=01H	ディスクに空き領域がなく,書き込みは中止された
		AL=02H	DTA内にレコードを書き込むための十分な
			領域がなく,書き込みは中止された
		CX=書き込まれたブロック数

29H		ファイル名の解析
		AL←ファイル名解析の制御ビット
		ビット0	0  ファイル区切り記号を検出した場合,
				全ての解析を中止させる
				1  先行するファイル区切り記号は無視する
		ビット1	0  文字列にドライブ番号が入っていない場合,
				FCBのドライブ番号には00Hがセットされる
				1  文字列にドライブ番号が入っていない場合,
				FCBのドライブ番号は変更されない
		ビット2	0  文字列にファイル名が入っていない場合,
				FCBのファイル名には8つのスペースが
				セットされる
				1  文字列にファイル名が入っていない場合,
				FCBのファイル名は変更されない
		ビット3	0  文字列に拡張子が入っていない場合,
				FCBの拡張子には3つのスペースがセットされる
				1  文字列に拡張子が入っていない場合,
				FCBの拡張子は変更されない
		DS:SI←解析する文字列の先頭アドレス
		ES:DI←オープンされていないFCBの先頭アドレス
		AL=00H	ワイルドカードが使用されていない
		AL=01H	ワイルドカードが使用されている
		AL=0FFH	ドライブ名が無効である
		DS:SI=解析された文字列中のファイル名の直後のアドレス

2AH		日付の読み出し
		CX=年(1980〜2079)
		DH=月(1〜12)
		DL=日(1〜31)
		AL=曜日
		(0=日,1=月,2=火,3=水,4=木,5=金,6=土)

2BH		日付の設定
		CX←年(1980〜2079)
		DH←月(1〜12)
		DL←日(1〜31)
		AL=00H	日付がセットされた
		AL=0FFH	無効な日付である

2CH		時刻の読み出し
		CH=時(0〜23)
		CL=分(0〜59)
		DH=秒(0〜59)
		DL=1/100秒(0〜99)

2DH		時刻の設定
		CH←時(0〜23)
		CL←分(0〜59)
		DH←秒(0〜59)
		DL←1/100秒(0〜99)
		AL=00H	時刻がセットされた
		AL=0FFH	無効な時刻である

2EH		ベリファイフラグの設定
		AL←ビット0←0	ベリファイを行なわない
				1	ベリファイを行なう

2FH		ディスク転送アドレスの読み出し
		ES:BX=DTA

30H		DOSのバージョン番号の読み出し
		AH=バージョン番号の小数部
		AL=バージョン番号の整数部
		BH=OEM番号
		BL:CX=ユーザー番号

31H		プログラムの常駐終了
		AL←リターンコード
		DX←メモリに常駐するプログラムのパラグラフサイズ

32H		非公開
		DPBの取得(see AhSKI! 87/4 p.6)
		DL←ドライブ番号(00h=current,01h=a,02h=b...)
		AL=0FFH	ドライブ番号が無効
		AL=00H	正常終了
			DS:BX=DPBアドレス
			+00H(byte)	ドライブ番号
			+01H(byte)	ユニット番号
			+02H(word)	セクタ長
			+04H(byte)	1クラスタあたりのセクタ数−1
			+05H(byte)	シフトカウント
			+06H(word)	予約セクタ数
			+08H(byte)	FATの数
			+09H(word)	ルートディレクトリのエントリ数
			+0BH(word)	データ領域の開始論理レコード番号
			+0DH(word)	最大クラスタ番号(全クラスタ数+1)
			+0FH(byte)	1FATあたりのセクタ数
			+10H(word)	ルートディレクトリ開始論理レコード番号
			+12H(dword)	デバイスドライバへのポインタ
			+16H(byte)	メディアディスクリプタ
			+17H(byte)	ディスク交換を示すフラグ
			+18H(dword)	次のDPBを指すポインタ
			(2.11)
			+1CH(word)	カレントディレクトリのFATエントリ
			+1EH(64bytes)	カレントディレクトリ
			(3.10)
			+1CH(word)	最後に変更したクラスタ
			+1EH(word)	ディスクの残り容量(クラスタ単位)
				(ファンクション36H実行後にセットされる)

3300H	ブレークチェックの設定を得る
		AL=0FFH	設定が得られた
		DL=ブレークチェックの設定(0=OFF,1=ON)

3301H	ブレークチェックを設定する
		DL←ビット0←0	OFF
				1	ON
		AL=0FFH	設定された

34H		非公開
		IN−DOSフラグのアドレスの取得(see AhSKI! 87/4 p.6)
		ES:BX=フラグのアドレス
		フラグの1バイトが0以外の時はシステムコール実行中

35H		割り込みベクトルの読み出し
		AL←割り込みベクトルの番号
		ES:BX=割り込みベクトル

36H		ディスクの残り容量の読み出し
		DL←ドライブ番号(00h=current,01h=a,02h=b...)
		AX=0FFFFH	ドライブ番号が無効である
		AX=1クラスタあたりのセクタ数
		BX=使用可能なセクタ数
		CX=1セクタあたりのバイト数
		DX=1ドライブあたりのクラスタ数

3700H	未公開
		スイッチキャラクタを得る(see AhSKI! 87/4 p.7)
		DL=スイッチキャラクタ(/または−)

3701H	未公開
		スイッチキャラクタの設定(see AhSKI! 87/4 p.7)
		DL←スイッチキャラクタ(/または−)

3702H	未公開
		AVAILDEVの設定を得る(2.11)(see AhSKI! 87/4 p.7)
		DL=AVAILDEVの値(00Hまたは0FFH)
			3.10では常に0FFH

3703H	未公開
		AVAILDEVの設定(see AhSKI! 87/4 p.7)
		DL←設定値(00Hまたは0FFH)

38H		国別情報の読み出し
		AL←情報を得ようとする国のカントリーコード
			(00h=現在設定されている国,01h=USA,51h=にほん)
		DS:DX←返される情報に対する32バイトのバッファの
			先頭アドレス
		CY=0	指定したバッファに国際適用業務に対応する情報が
				セットされた
		CY=1
			AX=02H	指定された国のテーブルが存在しない

		現在の国の変更
		AL←設定しようとする国のカントリーコード
		DX←0FFFFH
		CY=0	現在の国が設定された
		CY=1
			AX=02H	指定された国のテーブルが存在しない

39H		サブディレクトリの作成
		DS:DX←パス名の先頭アドレス
		CY=0	ディレクトリが作成された
		CY=1
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=05H	ルートディレクトリに空き領域がないか,
					すでに同名のファイルまたはディレクトリ
					が存在しているので,ディレクトリを
					作成することができない

3AH		サブディレクトリの削除
		DS:DX←パス名の先頭アドレス
		CY=0	ディレクトリが削除された
		CY=1
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=05H	指定されたディレクトリが削除
					できなかった
			AX=10H	カレントディレクトリを削除しようとした

3BH		カレントディレクトリの変更
		DS:DX←パス名の先頭アドレス
		CY=0	カレントディレクトリが変更された
		CY=1
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない

3CH		ファイルの作成
		DS:DX←パス名の先頭アドレス
		CX←ファイルの属性
		CY=0
			AX=ファイル・ハンドル
		CY=1
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=04H	オープンされているファイルが多すぎる
					ファイルは作成されたが,アクセスの
					ためのファイル・ハンドルに余裕がない.
					または内部のシステムテーブルに
					空き領域がない
			AX=05H	属性が作成不可能なもの(ディレクトリ,
					ボリュームラベル)であった.または
					ファイルを保護する属性が与えられた

3DH		ファイルのオープン
		DS:DX←パス名の先頭アドレス
		AL←アクセス制御コード
			ビット7	インヘリッドビット(3.10)
			ビット6〜4	シェアリングモード(3.10)
				000	コンパチブル(オープン不可)
				(以下はコンパチブルモードでのオープン不可)
				001	読み出し/書き込み不可
				010	書き込み不可
				011	読み出し不可
				100	不可なし
			ビット3〜0	アクセスコード
				0000	読み出し
				0001	書き込み
				0010	読み出し/書き込み
		CY=0
			AX=ファイル・ハンドル
		CY=1
			AX=02H	ファイルが存在しない
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=04H	オープンされているファイルが多すぎる
					ファイルは作成されたが,アクセスの
					ためのファイル・ハンドルに余裕がない.
					または内部のシステムテーブルに
					空き領域がない
			AX=05H	ディレクトリ,ボリュームラベルを
					オープンしようとした.あるいは
					リードオンリーのファイルを書き込みの
					ためにオープンしようとした
			AX=0CH	アクセスコードが0〜2以外である

3EH		ファイルのクローズ
		BX←ファイル・ハンドル
		CY=0	ファイルはクローズされた
		CY=1
			AX=06H	指定されたファイルハンドルは
					現在オープンされていない

3FH		ファイル/デバイスの読み出し
		DS:DX←入力バッファの先頭アドレス
		CX←読み込むバイト数
		BX←ファイル・ハンドル
		CY=0
			AX=読み込まれたバイト数
			(AXを調べること)
		CY=1
			AX=05H	指定されたファイル・ハンドルは
					読み出しが許可されていない
			AX=06H	指定されたファイルハンドルは
					現在オープンされていない

40H		ファイル/デバイスの書き込み
		DS:DX←出力バッファの先頭アドレス
		CX←書き込むバイト数
		BX←ファイル・ハンドル
		CY=0
			AX=書き込まれたバイト数
			(AXを調べること)
		CY=1
			AX=05H	指定されたファイル・ハンドルは
					書き込みが許可されていない
			AX=06H	指定されたファイルハンドルは
					現在オープンされていない

41H		ファイルの削除
		DS:DX←パス名の先頭アドレス
		CY=0	ファイルは削除された
		CY=1
			AX=02H	ファイルが存在しない
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=05H	指定されたパスがディレクトリ,または
					リードオンリーのファイルである

42H		ファイル・ポインタの移動
		CX:DX←オフセット((CX*10000H+DX)バイト)
		AL←	00H	ファイルの先頭からオフセットの位置に移動する
			01H	現在の位置からオフセットを加えた位置に移動する
			02H	ファイルの終わりにオフセットを加えた位置に
				移動する
		BX←ファイル・ハンドル
		CY=0
			DX:AX=移動されたファイル・ポインタのファイルの
				先頭からのオフセット
		CY=1
			AX=01H	ALが00H〜02Hの範囲外である
			AX=06H	指定されたファイル・ハンドルは
					現在オープンされていない

4300H	ファイルの属性の取得
		DS:DX←パス名の先頭アドレス
		CY=0
			CX=ファイル属性
		CY=1
			AX=01H	ALが0〜1以外である
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない

4301H	ファイルの属性の設定
		DS:DX←パス名の先頭アドレス
		CX←ファイル属性
		CY=0
			エラーなし
		CY=1
			AX=01H	ALが0〜1以外である
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=05H	指定されたファイル属性に,変更できない
					ものが含まれていた(ディレクトリ,
					ボリュームラベル)

4400H	IOCTLデータを得る
		BX←ファイル・ハンドル
		CY=0
			DX=デバイス情報
		CY=1
			AX=01H	無効な機能コード
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない

4401H	IOCTLデータをセットする
		BX←ファイル・ハンドル
		DX←デバイスデータ(DH=0)
		CY=0	デバイス情報がセットされた
		CY=1
			AX=01H	無効な機能コード
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない
			AX=0DH	指定されたデバイス情報が無効である

4402H	IOCTL文字列を送る
		BX←ファイル・ハンドル
		CX←コントロール文字列のバイト数
		DS:DX←バッファの先頭アドレス
		CY=0
			AX=書き込みの行なわれたバイト数
		CY=1
			AX=01H	無効な機能コード
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない

4403H	IOCTL文字列を受け取る
		BX←ファイル・ハンドル
		CX←コントロール文字列のバイト数
		DS:DX←バッファの先頭アドレス
		CY=0
			AX=読み出しの行なわれたバイト数
		CY=1
			AX=01H	無効な機能コード
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない

4404H	IOCTL文字列をドライブに送る
		BL←ドライブ番号(00h=current,01h=a,02h=b...)
		CX←コントロール文字列のバイト数
		DS:DX←バッファの先頭アドレス
		CY=0
			AX=書き込みの行なわれたバイト数
		CY=1
			AX=01H	無効な機能コード
			AX=05H	アクセスが拒否された

4405H	IOCTL文字列をドライブから受け取る
		BL←ドライブ番号(00h=current,01h=a,02h=b...)
		CX←コントロール文字列のバイト数
		DS:DX←バッファの先頭アドレス
		CY=0
			AX=読み出しの行なわれたバイト数
		CY=1
			AX=01H	無効な機能コード
			AX=05H	アクセスが拒否された

4406H	入力ステータスを得る
		BX←ファイル・ハンドル
		CY=0
			AL=00H	読み出しが行なえない
			AL=0FFH	読み出しが行なえる
		CY=1
			AX=01H	無効な機能コード
			AX=05H	アクセスが拒否された
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない
			AX=0DH	指定されたデバイス情報が無効である

4407H	出力ステータスを得る
		BX←ファイル・ハンドル
		CY=0
			AL=00H	書き込みが行なえない
			AL=0FFH	書き込みが行なえる
		CY=1
			AX=01H	無効な機能コード
			AX=05H	アクセスが拒否された
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない
			AX=0DH	指定されたデバイス情報が無効である

4408H	メディアの交換性(3.10)
		BL←ドライブ番号(00h=current,01h=a,02h=b...)
		CY=0
			AX=00H	メディアが交換可能である
			AX=01H	メディアの交換が不可能である
		CY=1
			AX=01H	デバイス・ドライバがこの機能をサポート
					していない
			AX=0FH	指定されたドライブ番号が無効である

4409H	リモート・ドライブの検出(3.10)
		BL←ドライブ番号(00h=current,01h=a,02h=b...)
		CY=0
			DX=デバイス情報
		CY=1
			AX=01H	ALレジスタの値が無効である
			AX=0FH	指定されたドライブ番号が無効である

440AH	リモート・ハンドルの検出(3.10)
		BX←ファイル・ハンドル
		CY=0
			DX=デバイス情報
		CY=1
			AX=01H	ALレジスタの値が無効である
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない

440BH	リトライ回数の設定(3.10)
		CX←待ち時間
		DX←リトライの回数
		CY=0	エラーなし
		CY=1
			AX=01H	ALレジスタの値が無効であるか,
					リトライ回数に0を指定した

45H		ファイル・ハンドルのコピー
		BX←ファイル・ハンドル
		CY=0
			AX=コピーされたファイル・ハンドル
		CY=1
			AX=04H	オープンされているファイルが多すぎる
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない

46H		指定したファイル・ハンドルへのコピー
		BX←既存のファイル・ハンドル
		CX←新規に作成するファイル・ハンドル
		CY=0
			AX=コピーされたファイル・ハンドル
		CY=1
			AX=04H	オープンされているファイルが多すぎる
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない

47H		カレント・ディレクトリの読み出し
		DS:SI←返される情報に対する64バイトのバッファの
			先頭アドレス
		DL←ドライブ番号(00h=current,01h=a,02h=b...)
		CY=0	エラーなし
		CY=1
			AX=0FH	ドライブ番号が無効である
					(バッファの内容は変更されない)

48H		メモリブロックの割り当て
		BX←割り当てを要求するメモリ領域のパラグラフサイズ
		CY=0
			AX=割り当てられたメモリの先頭のパラグラフ番号
		CY=1
			AX=07H	メモリ・コントロールブロックが
					破壊されている
			AX=08H	十分な大きさのメモリがない
				BX=割り当て可能な最大のメモリ領域の
					パラグラフサイズ

49H		メモリブロックの開放
		ES←開放するメモリ領域のパラグラフ番号
		CY=0	エラーなし
		CY=1
			AX=07H	メモリ・コントロールブロックが
					破壊されている
			AX=09H	指定されたメモリ領域は,
					メモリアロケーションによって
					割り当てられたものではない

4AH		メモリブロックのサイズの変更
		ES←メモリ領域のパラグラフ番号
		BX←新たなメモリ領域のパラグラフサイズ
		CY=0	エラーなし
		CY=1
			AX=07H	メモリ・コントロールブロックが
					破壊されている
			AX=08H	十分な大きさのメモリがない
				BX=割り当て可能な最大のメモリ領域の
					パラグラフサイズ
			AX=09H	指定されたメモリ領域は,
					メモリアロケーションによって
					割り当てられたものではない

4B00H	プログラムのロードと実行
		DS:DX←対象とするファイルのパス名の先頭アドレス
		ES:BX←パラメータブロックの先頭アドレス
			+0(word)	環境のセグメント・アドレス
					(0の時はコピー)
			+2(dword)	PSP+80Hのコマンドラインに与える
					80Hバイトのデータへのポインタ
			+6(dword)	PSP+5CHのFCBに与える
					10Hバイトのデータへのポインタ
			+AH(dword)	PSP+6CHのFCBに与える
					10Hバイトのデータへのポインタ
		CY=0	エラーなし
		CY=1
			AX=01H	ALの値が無効である
			AX=02H	ファイルが存在しない
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=08H	十分な大きさのメモリがない
			AX=0AH	環境変数が32Kバイト以上ある
			AX=0BH	指定されたファイルのヘッダが正しくない
					(EXEファイルのみ)

4B01H	非公開(see AhSKI! 87/4 p.7)
		プログラムのロード
		DS:DX←対象とするファイルのパス名の先頭アドレス
		ES:BX←パラメータブロックの先頭アドレス
			+00H(word)	環境のセグメント・アドレス
					(0の時はコピー)
			+02H(dword)	PSP+80Hのコマンドラインに与える
					80Hバイトのデータへのポインタ
			+06H(dword)	PSP+5CHのFCBに与える
					10Hバイトのデータへのポインタ
			+0AH(dword)	PSP+6CHのFCBに与える
					10Hバイトのデータへのポインタ
		CY=0
			ES:BX	+0EH	SPの初期値−2
					+10H	SSの初期値
					+12H	IPの初期値
					+14H	CSの初期値
			SSの初期値:SPの初期値−2が差すワード
					AXの初期値
		CY=1
			AX=01H	ALの値が無効である
			AX=02H	ファイルが存在しない
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=08H	十分な大きさのメモリがない
			AX=0AH	環境変数が32Kバイト以上ある
			AX=0BH	指定されたファイルのヘッダが正しくない
					(EXEファイルのみ)

4B03H	プログラムのロード
		DS:DX←対象とするファイルのパス名の先頭アドレス
		ES:BX←パラメータブロックの先頭アドレス
			+0(word)	ファイルをロードするセグメントアドレス
			+2(word)	イメージに対して使用される最配置因子
		CY=0	エラーなし
		CY=1
			AX=01H	ALの値が無効である
			AX=02H	ファイルが存在しない
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=08H	十分な大きさのメモリがない
			AX=0BH	指定されたファイルのヘッダが正しくない
					(EXEファイルのみ)

4CH		プロセスの終了
		AL←リターンコード

4DH		子プロセスの終了コードの読み出し
		AH=00H	int 20h,ファンクション00h,4ch による終了
			AL=子プロセスからのリターンコード
		AH=01H	CTRL-C による終了(int 23h)
		AH=02H	致命的エラー(int 24h)
		AH=03H	常駐したまま終了(int 27h,ファンクション31h)
			AL=子プロセスからのリターンコード

4EH		一致するファイルの検索
		DS:DX←パス名の先頭アドレス
		CX←ファイルの属性
		CY=0	DTAに検索されたファイルの情報が書き込まれた
		CY=1
			AX=02H	ファイルが存在しない
			AX=12H	これ以上ファイルが存在しない

4FH		次に一致するファイルの検索
		DS:DX←パス名の先頭アドレス
		CX←ファイルの属性
		CY=0	DTAに検索されたファイルの情報が書き込まれた
		CY=1
			AX=12H	これ以上ファイルが存在しない

50H		非公開
		プロセスIDの設定(see AhSKI! 87/4 p.7)
		BX←プロセスID(PSPセグメントアドレス)

51H		非公開
		プロセスIDの取得(see AhSKI! 87/4 p.8)
		BX=プロセスID(PSPセグメントアドレス)

52H		非公開
		内部変数領域のアドレスの取得(see AhSKI! 87/4 p.8)
		ES:BX=内部変数領域のアドレス
			−02H(word)	メモリコントロールブロック(MCB)の
					先頭のセグメント
			+00H(dword)	DPBのリストを指すポインタ
			+04H(dword)	オープンされているファイルのリストを
					指すポインタ
					(内部FCBブロック先頭アドレス)
			+08H(dword)	クロックデバイスを指すポインタ
			+0CH(dword)	CONデバイスドライバのリンクの先頭
			(2.11)
			+10H(byte)	接続ドライブ数
			+11H(word)	接続ドライブ中最大セクタ長(バイト)
			+13H(dword)	MSDOS.SYS上限
					ディスクバッファ先頭
			+17H(dword)	最初のデバイスヘッダ(NUL)
			(3.10)
			+16H(dword)	カレントディレクトリ名テーブルアドレス

53H		非公開
		デバイスドライバのインストール中に呼ばれる

54H		ベリファイフラグの読み出し
		AL=現在のベリファイフラグの値(00h=off, 01h=on)

55H		非公開
		PSPの再作成?

56H		ディレクトリ・エントリの移動
		DS:DX←パス名の先頭アドレス
		ES:DI←移動先のパス名の先頭アドレス
		CY=0	エラーなし
		CY=1
			AX=02H	DS:DXで指定されたファイルが
					存在しない
			AX=03H	指定されたパス名が無効であるか,または
					パスが存在しない
			AX=05H	DS:DXで指定されたパス名が
					ディレクトリであったか,ES:DIで
					指定されたファイルがすでに存在している
				うそだよー.2.11ではディスクを壊す.
				3.10ではディレクトリのリネームはできる
			AX=11H	違うドライブ間で移動しようとした

5700H	ファイルの時間情報の読み出し
		BX←ファイル・ハンドル
		CY=0
			DX=日付
			CX=時刻
		CY=1
			AX=01H	AXが0〜1以外である
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない

5701H	ファイルの時間情報の設定
		BX←ファイル・ハンドル
		CX←時刻
		DX←日付
		CY=0	エラーなし.ファイルのクローズ時に設定
		CY=1
			AX=01H	AXが0〜1以外である
			AX=06H	指定されたファイル・ハンドルは現在
					オープンされていない

5800H	メモリ割り当て方法の設定(3.10)
		CY=0
			AX=ストラテジ
				00H	下位
				01H	最小
				02H	上位
		CY=1
			AX=01H	ALの値またはストラテジの値が無効

5801H	メモリ割り当て方法の設定(3.10)
		BX←ストラテジ
				00H	下位
				01H	最小
				02H	上位
		CY=0	エラーなし
		CY=1
			AX=01H	ALの値またはストラテジの値が無効

59H		拡張エラーコードの取得(3.10)
		AX=拡張エラーコード
		BH=エラークラス
			01H	メモリ容量やI/Oチャネル等の資源の不足
			02H	エラーではないが,プロセスを終了した方が
				よい状況が発生している
			03H	パーミッションの問題
			04H	システム・ソフトウェア内部のエラー
			05H	ハードウェアに起因するエラー
			06H	現在のプロセスが原因ではない
				システム・ソフトウェアのエラー
			07H	アプリケーション・プログラムのエラー
			08H	ファイルが存在しない
			09H	無効なフォーマット
			0AH	ファイルが内部的にロックされている
			0BH	ディスクの不良
			0CH	その他の原因によるエラー
		BL=可能な対処
			01H	ユーザに確認を求め,再試行する
			02H	休止後に再試行する
			03H	ユーザに再度入力を求める
			04H	メモリの内容をクリアして終了する
			05H	プログラムを終了する
			06H	エラーコードに対応する処理を行なう
			07H	ユーザ側でディスク交換などの対処を行なう必要が
				ある
		CH=エラーの発生箇所
			01H	不明
			02H	ブロックデバイス
			03H	ネットワーク
			04H	キャラクタデバイス
			05H	メモリ
		CL,DX,SI,DI,BP,DS,ES,は破壊される

5AH		テンポラリファイルの作成(3.10)
		CX←ファイル属性
		DS:DX←パス名の先頭アドレス
			(パス名の後ろに13バイトのファイル名を格納する領域を
			確保する必要がある)
		CY=0
			AX=ファイル・ハンドル
		CY=1
			AX=03H	DS:DXで指定したディレクトリが
					無効か,または存在しない
			AX=05H	アクセスが否定された

5BH		新規ファイルの作成(3.10)
		CX←ファイル属性
		DS:DX←パス名の先頭アドレス
		CY=0
			AX=ファイル・ハンドル
		CY=1
			AX=03H	DS:DXで指定したディレクトリが
					無効か,または存在しない
			AX=04H	カレント・プロセス中に利用可能な
					ハンドルがないか,またはMS−DOSの
					システムテーブルに余裕がない
			AX=05H	属性の指定が作成不可能なもの
					(ディレクトリ,ボリュームラベル)が
					入っていたか,または同じ名前の
					ディレクトリが存在した
			AX=50H	DS:DXで指定したファイルがすでに
					存在する

5C00H	ファイルのロック(3.10)
		BX←ファイル・ハンドル
		CX:DX←ロックする領域のオフセット
		SI:DI←ロックする領域の長さ
		CY=0	エラーなし
		CY=1
			AX=01H	ALの値が無効である
			AX=06H	指定されたファイルハンドルは,現在
					オープンされていない
			AX=21H	ロック違反

5C01H	ファイルのロックを解除する(3.10)
		BX←ファイル・ハンドル
		CX:DX←ロックを解除する領域のオフセット
		SI:DI←ロックを解除する領域の長さ
		CY=0	エラーなし
		CY=1
			AX=01H	ALの値が無効である
			AX=06H	指定されたファイルハンドルは,現在
					オープンされていない
			AX=21H	ロック違反.指定された領域は
					ロックされた領域ではない

5DH		非公開
		???

5E00H	マシン名の取得(3.10)
		DS:DX←マシン名を格納する16バイトの領域の先頭アドレス
		CY=0	CX←SETNAME コマンドで設定された値
		CY=1
			AX=01H	MS-Networks が稼働していない

5E02H	プリンタの設定(3.10)
		BX←アサインリストのプリンタのインデックス
		CX←文字列の長さ
		DS:SI←文字列の先頭アドレス
		CY=0	エラーなし
		CY=1
			AX=01H	MS-Networks が稼働していない
			AX=54H	アサインリストの構造の不良
			AX=57H	無効なインデックスを指定した

5F02H	アサインリスト・エントリの取得(3.10)
		BX←アサインリストの中のインデックス
		DS:SI←ソース・デバイス名(ローカル名)のバッファの
			先頭アドレス
		ES:DI←デスティネーション・デバイス名(リモート名)の
			バッファの先頭アドレス
		CY=0
			BL=03H	プリンタ
			BL=04H	ディスク・ドライブ
			CX=ユーザの変数
		CY=1
			AX=01H	MS-Networks が稼働していない
			AX=12H	BXレジスタで指定したインデックスの
					値が,アサインリストのエントリ数より
					大きい
			AX=54H	アサインリストの構造の不良

5F03H	アサインリスト・エントリの作成(3.10)
		BL←	03H(プリンタ)
			04H(ディスク・ドライブ)
		CX←ユーザ変数
		DS:SI←ソース・デバイス名の先頭アドレス
		ES:DI←デスティネーション・デバイス名の先頭アドレス
		CY=0	エラーなし
		CY=1
			AX=01H	MS-Networks が稼働していないか,または
					BLの値が無効である
			AX=03H	ネットワーク・ディレクトリが無効か,
					または存在しない
			AX=05H	パスワードが無効であるか,
					ディレクトリがサーバ上に存在しない
			AX=08H	アサインリストを格納する領域が
					不足している
			AX=54H	アサインリストの構造の不良
			AX=55H	ソース・デバイスはすでに割り当て済み
			AX=56H	無効なパスワードを指定した

5F04H	アサインリスト・エントリの取り消し(3.10)
		DS:SI←ソース・デバイス名の先頭アドレス
		CY=0	エラーなし
		CY=1
			AX=01H	MS-Networks が稼働していないか,または
					ソース・デバイスが
					リディレクトされていない
			AX=0FH	サーバ上でディスクまたはプリンタの
					リディレクトが中止されているか,または
					無効なソース・デバイスを指定した
			AX=54H	アサインリストの構造の不良

60H		非公開
		フルパス名の取得(3.10)(see ESC 87/10 p.181)
		DS:SI←パス名のアドレス
		ES:DI←フルパス名を格納するバッファのアドレス

61H		非公開
		AL=0

62H		PSPの取得(3.10)
		BX=カレントプロセスのPSPのセグメントアドレス
			(プロセスID)

63H		非公開
		OEMメーカ番号を得る(3.10)(see AhSKI! 87/4 p.8)
		AL←OEMメーカ番号
			00H	NEC(EPSON)
			01H	富士通
			02H	東芝
			03H	日立
			04H	松下
			05H	沖

end of dos.doc



i16(愛一郎)