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 |