※ ※ このページは書きかけです。以下の可能性があります。 ※ ・誤字、脱字等のチェックをおこなっていません。 ※ ・テキスト、表などフォーマットがされていない。 ※ ・画像が抜けている。 ※
新しいMSX-DOS2ファンクション(40H以上のファンクションコール)は「エラーコード」をAレジスタに返します。処理が成功するとゼロになります。ゼロでない場合、エラーコードはエラーの種類を示します。
MSX-DOS2はファンクションコールからリターンする直前に「OR A」命令を実行するため、エラーが起こったかどうかをテストするためには、外部プログラムの「CALL 5」命令の直後に「JR NZ」命令を使用します。このエラージャンプの飛び先では通常Bレジスタにエラーコードをロードして、「エラーコードを返して終了」ファンクション(P.320参照)を実行します。これはエラーコードをコマンドインタープリタに返し、そこで適当なメッセージが表示されます。
外部プログラムはMSX-DOS2のファンクションコールで返されたすべてのエラーについて、「エラーコードの説明」ファンクション(P.323参照)を利用して自分自身で実際のメッセージを得ることもできます。詳細については17.3「ファンクションの説明」を参照して下さい。
エラーコードは0FFHで始まり、値が下がってきます。40H未満の値は「ユーザエラー」で、システムでは使用されず、外部プログラムが独自のエラーを返すために使用することができます。コマンドインタープリタに返された20H未満のユーザエラーはメッセージを出力しません。
「エラーコードの説明」ファンクションコールがメッセージを持たないエラーコードを説明するように要求された場合、返される文字列は「System error <n>」「システムエラー<n>」または「User error <n>」「ユーザエラー <n>」です。ここで<n>はエラー番号を示します。
以下に現在定義されているすべてのエラー番号とそのメッセージおよび意味を示します。またニーモニックも示されますが、これは通常ソースファイル中のシンボルとして使用され、特定のエラーを参照するためにMSX-DOS2のシステム全体を通して使用しているものです。
16.1 ディスクエラー
このグループのエラーはディスクエラー処理ルーチンに渡されるものです。デフォルトでは、「中止、再試行」エラーとして報告されます。これらのエラーは「ディスクのフォーマット」以外のMSX-DOSファンクションコールでは、エラー処理ルーチンに渡されますので、BDOSからの戻り値としては返されません。
表2.20 ディスクエラー一覧
エラーコード | ニーモニック | 英語エラーメッセージ | 日本語エラーメッセージ |
0FFH | .NCOMP | Incompatible disk | このディスクは使用できません |
そのドライブではディスクがアクセスできません(例えば片面ドライブで両面ディスクを読もうとしたとき)。 | |||
0FEH | .WRERR | Write error | 書き込み異常です |
ディスク書き込み中に起こるエラー。 | |||
0FDH | .DISK | Disk error | ディスクが異常です |
原因不明のディスクエラー。 | |||
0FCH | .NRDY | Not ready | ディスクが入っていません |
ディスクドライブが応答しません。通常ドライブ中にディスクがないことを表します。 | |||
0FBH | .VERFY | Verify error | 正しく書き込まれませんでした |
VERIFYが有効のとき、書き込みの後にセクタが正しく読めませんでした。 | |||
0FAH | .DATA | Data error | ディスクのデータが異常です |
CRCエラーチェックが不正なためディスクセクタが読めませんでした。通常ディスクの損傷を表します。CRCは、ディスクの読み取りエラーを検出するために、データと一緒にディスクセクタに書き込まれます。このCRCによりディスクからデータが正しく読み取れたかを調べるのが、CRCエラーチェックです。 | |||
0F9H | .RNF | Sector not found | セクターが見つかりません |
要求されたセクタがディスク上で見つかりませんでした。通常ディスクの損傷を表します。 | |||
0F8H | .WPROT | Write protected disk | ディスクが書き込み保護されています |
書き込み禁止状態のディスクに書き込もうとしました。 | |||
0F7H | .UFORM | Unformatted disk | ディスクがフォーマットされていません |
ディスクがフォーマットされていない、あるいは異なった記録方法を使用しています。 | |||
0F6H | .NDOS | Not a DOS disk | MSX-DOSディスクではありません |
ディスクが別のオペレーティングシステム用にフォーマットされており、MSX-DOSではアクセスできません。 | |||
0F5H | .WDISK | Wrong disk | ディスクが違います |
ディスクがアクセスしている最中に他のディスクに交換されました。正しいディスクに交換しなければなりません。 | |||
0F4H | .WFILE | Wrong disk for file | このファイル用のディスクではありません |
オープンされたファイルがディスク上にあるときに別のディスクに交換されました。正しいディスクに交換しなければなりません。 | |||
0F3H | .SEEK | Seek error | シークエラーです |
ディスクの要求されたトラックが見つかりませんでした。 | |||
0F2H | .IFAT | Bad file allocation table | FAT異常です |
ディスク上のファイルアロケーションテーブルが破壊されています。CHKDSKでディスク上のデータのいくつかを復活することができる場合があります。 | |||
0F1H | .NOUPB | ||
このエラーはディスク交換処理の一部としてMSX-DOS内部で常にトラップされユーザーに渡ることはないため、メッセージを持ちません。 | |||
0F0H | .IFORM | Cannot format this drive | このドライブはフォーマットできません |
フォーマットできないドライブをフォーマットしようとしました。通常RAMディスクをフォーマットしようとして起こります。 |
16.2 MSX-DOSファンクションエラー
以下のエラーは通常MSX-DOSのファンクションコールで返されるものです。特定のMSX-DOSのファンクションから返されるエラーの詳細については17.3「ファンクションの説明」を参照して下さい。
表2.21 MSX-DOSファンクションエラー一覧
エラーコード | ニーモニック | 英語エラーメッセージ | 日本語エラーメッセージ |
0DFH | .INTER | Internal error | DOSが異常です |
起こってはならないエラー。 | |||
0DEH | .NORAM | Not enough memory | メモリー不足です |
MSX-DOSがその16Kのカーネルデータセグメントでメモリを使いつくしました。セクタバッファ数を減らすか、いくつかの環境変数を削除して下さい。RAMディスクを作成するための未使用セグメントがない場合にも起こります。 | |||
0DCH | .IBDOS | Invalid MSX-DOS call | 無効なMSX-DOSファンクション番号です |
MSX-DOSのコールが不正なファンクション番号で行われました。大部分の不正なファンクションコールはエラーを返しませんが、このエラーは「直前のエラーコードの獲得」ファンクションコール(P.249参照)が実行されると返される場合があります。 | |||
0DBH | .IDRV | Invalid drive | 無効なドライブ名です |
ドライブ番号のパラメータ、あるいはドライブ・パス・ファイル文字列中のドライブ文字が現在のシステムで存在しません。 | |||
0DAH | .IFNM | Invalid filename | 不正なファイル名です |
ファイル名文字列が不正です。これは、ドライブ・パス・ファイル文字列ではなく、純粋なファイル名文字列についてのみ生成されます。 | |||
0D9H | .IPATH | Invalid pathname | 無効なパス名です |
ASCIIZドライブ・パス・ファイル文字列が渡されるすべてのファンクションコールによって返される可能性があります。文字列の構文がなんらかの形で不正であることを示します。 | |||
0D8H | .PLONG | Pathname too long | パス名が長過ぎます |
ASCIIZドライブ・パス・ファイル文字列が渡されるすべてのファンクションコールによって返される可能性があります。指定された完全なパス(使用されている場合にはカレントディレクトリも含む)が63文字よりも長いことを示します。 | |||
0D7H | .NOFIL | File not found | ファイルが見つかりません |
ディスク上のファイルを検索するすべてのファンクションによって、ファイルが見つからなかった場合に返されます。このエラーはディレクトリが指定され、それが見つからなかったときにも返されます。それ以外では次の.NODIRエラーが返されます。 | |||
0D6H | .NODIR | Directory not found | ディレクトリが見つかりません |
ドライブ・パス・ファイル文字列中の途中のディレクトリが見つからなかった場合に返されます。 | |||
0D5H | .DRFUL | Root directory full | ルートディレクトリがいっぱいです |
新しいエントリがルートディレクトリ中で要求され、それが既にいっぱいである場合に、「作成」あるいは「移動」のファンクションによって返されます。ルートディレクトリは拡張できません。 | |||
0D4H | .DKFUL | Disk full | ディレクトリがいっぱいです |
書き込まれようとしているデータの量に対してディスク上に十分な領域がない場合に、書き込み処理によって返されます。ディスクが一杯の場合にサブディレクトリを作成あるいは拡張しようとした場合にも起こります。 | |||
0D3H | .DUPF | Duplicate filename | ファイル名が重複しています |
目的のファイル名が既に目的のディレクトリ中にある場合、「名前の変更」あるいは「移動」ファンクションで起こります。 | |||
0D2H | .DIRE | Invalid directory move | ディレクトリが移動できません |
サブディレクトリをそれ自体の下に移動しようとしました。これはディレクトリ構造中で孤立したループを作成することになるため許されません。 | |||
0D1H | .FILRO | Read only file | ファイルが読み出し専用です |
「読み出し専用」属性ビットがセットされているファイルに書き込みあるいは削除しようとしました。 | |||
0D0H | .DIRNE | Directory not empty | ディレクトリが空ではありません |
空でないサブディレクトリを削除しようとしました。 | |||
0CFH | .IATTR | Invalid attributes | 無効な属性です |
ファイルの属性を不正な方法で変更しようとしたか、あるいはサブディレクトリに対してのみ可能な処理をファイルに行おうとした場合に起こります。また、ボリューム名のFIB(File Information Block)の不正な使用によっても起こります。 | |||
0CEH | .DOT | Invalid . or .. operation | .や..に対しては操作できません |
サブディレクトリ中の「.」あるいは「..」エントリに対して、名前の変更や移動などと言った不正な操作をしようとしました。 | |||
0CDH | .SYSX | System file exists | システムファイルが既にあります |
既存のシステムファイルと同じ名前のファイルあるいはサブディレクトリを作成しようとしました。システムファイルは自動的には削除されません。 | |||
0CCH | .DIRX | Directory exists | ディレクトリが既にあります |
既存のサブディレクトリと同じ名前のファイルあるいはサブディレクトリを作成しようとしました。サブディレクトリは自動的には削除されません。 | |||
0CBH | .FILEX | File exists | ファイルが既にあります |
既存のファイルと同じ名前のサブディレクトリを作成しようとしました。ファイルはサブディレクトリを作成するときは自動的には削除されません。 | |||
0CAH | .FOPEN | File is allready in use | ファイルが使用中です |
そのファイルに対して既にオープンされているファイルハンドルがあるファイルの削除、名前の変更、移動、あるいはその属性や日付や時刻の変更を、そのファイルハンドルを使用せずに行おうとしました。 | |||
0C9H | .OV64K | Cannot transfer above 64K | 64Kを超える転送はできません |
ディスク転送領域が0FFFFHを超えてしまいます。 | |||
0C8H | .FILE | File allocation error | ファイルの割当異常です |
ファイルのクラスタチェインが破壊されました。CHKDSKを使用して可能な限りファイルを復活させる必要があります。 | |||
0C7H | .EOF | End of file | ファイルの終わりです |
ファイルポインタが既にエンドオブファイルにある、あるいはそれを超えている場合に、さらにファイルから読み込もうとしました。 | |||
0C6H | .ACCV | File access violation | ファイルアクセス異常です |
適切なアクセスビットをセットしてオープンされたファイルハンドルに対して読み出し・書き込みを行おうとしました。標準ファイルハンドルのいくつかは読み出し専用あるいは書き込み専用モードでオープンされています。 | |||
0C5H | .IPROCK | Invalid process id | 無効なプロセスIDです |
「親プロセスに戻る」ファンクション(P.318参照)に渡されたプロセスIDが不正です。 | |||
0C4H | .NHAND | No spare file handles | ファイルハンドルが足りません |
すべてのファイルハンドルが既に使用中である場合にファイルハンドルをオープンあるいは作成しようとしました。現バージョンでは64までファイルハンドルが利用できます。 | |||
0C3H | .IHAND | Invalid file handle | 無効なファイルハンドルです |
指定のファイルハンドルが、システムで許される最大のファイルハンドル番号よりも大きいです。 | |||
0C2H | .NOPEN | File handle not open | ファイルハンドルがオープンされていません |
指定のファイルハンドルは現在オープンされていません。 | |||
0C1H | .IDEV | Invalid device operation | 無効なデバイスオペレーションです |
デバイスのファイルハンドルやFIBを、検索や移動などの不正な操作に使用しようとしました。 | |||
0C0H | .IENV | Invalid environment string | 無効な環境変数です |
環境変数名の文字列に不正な文字があります。 | |||
0BFH | .ELONG | Environment string too long | 環境変数が長過ぎます |
環境変数名あるいはその値の文字列が最大の255文字の長さを超えた、あるいは長すぎてユーザーバッファが足りません。 | |||
0BEH | .IDATE | Invalid date | 無効な日付です |
「日付のセット」に渡された日付のパラメータが不正です。 | |||
0BDH | .ITIME | Invalid time | 無効な時間です |
「時刻のセット」に渡された時刻のパラメータが不正です。 | |||
0BCH | .RAMDX | RAM disk(drive H:) already | RAM DISK(ドライブ H:)は既にあります |
RAMディスクが既に存在しているのにRAMディスクを作成しようとした場合、「RAMディスク」ファンクション(P.326参照)から返されます。 | |||
0BBH | .NRAMD | RAM disk does not exist | RAM DISKがありません |
RAMディスクが存在していないときに、ファンクションでRAMディスクを削除しようとしました。存在しないRAMディスクをアクセスしようとするファンクションでは、.IDRVエラーとなります。 | |||
0BAH | .HDEAD | File handle has been deleted | ファイルが消去されています |
ファイルハンドルに関連したファイルが削除されたため、ファイルハンドルはもう使用できません。 | |||
0B9H | .EOL | ||
起こってはならない内部エラー。 | |||
0B8H | .ISBFN | Invalid sub-function number | 無効なサブファンクション番号です |
「デバイスI/Oの制御」ファンクション(P.302参照)に渡されたサブファンクション番号が不正です。 | |||
0B7H | .IFCB | Invalid File Control Block | 無効なFCBです |
FCBを使ったファイルアクセスの際、_FOPENなどをコールせずに、無効なFCBを使用して読み書きした際に起きるエラーです。 |
16.3 プログラム終了エラー
以下のエラーはシステムによって内部的に生成され、「中断」ルーチンに渡されるエラーです。これは通常ファンクションコールからは返されません。中断ルーチンには外部プログラムが「エラーコードを返して終了」ファンクションコール(P.320参照)に渡す任意のエラーが渡されることに注意して下さい。
表2.22 プログラム終了エラー一覧
エラーコード | ニーモニック | 英語エラーメッセージ | 日本語エラーメッセージ |
09FH | .STOP | Cntl-STOP pressed | Ctrl-STOPが押されました |
CTRL+STOPキーは、すべての文字I/Oなどのほとんどのシステムコールでチェックされます。 | |||
09EH | .CTRLC | Cntl-C pressed | Ctrl-Cが押されました |
CTRL+Cは、ステータスチェックを実行する文字ファンクションの場合にのみチェックされます。 | |||
09DH | .ABORT | Disk operation aborted | ディスク入出力が打ち切られました |
このエラーはディスクエラーが、ユーザーによって、あるいはシステムによって自動的に、中断されたときに起こります。元のディスクエラーコードは2次エラーコードとしてBレジスタから中断ルーチンに渡されます。 | |||
09CH | .OUTERR | Error on standard output | 標準出力でエラーが起きました |
標準出力チャンネルが文字ファンクション(ファンクション01H〜0BH)を通してアクセスされている間に、エラーが起こった場合に返されます。元のエラーコードは2次エラーコードとしてBレジスタに入れられてアボートルーチンに渡されます。このエラーは通常、プログラムが標準ハンドルを変更している場合にのみ起こります。 | |||
09BH | .INERR | Error on standard input | 標準入力でエラーが起きました |
標準入力チャンネルが文字ファンクション(ファンクション01H〜0BH)を通してアクセスされている間に、エラーが起こった場合に返されます。元のエラーコードは2次エラーコードとしてBレジスタに入れられてアボートルーチンに渡されます。最も起こり得るエラーは「.EOF」エラーです。このエラーは通常、プログラムが標準ファイルハンドルを変更している場合にのみ起こります。 |
16.4 コマンドエラー
以下のエラーはMSX-DOSのファンクションコールからは返されませんが、コマンドインタープリタによって使用されます。これらは外部プログラムから利用できますので、ここにのせてあります。9章「エラーおよびメッセージ」ではコマンドインタープリタでこれらのエラーが持つ意味の詳細が記述されています。
表2.23 コマンドエラー一覧
エラーコード | ニーモニック | 英語エラーメッセージ | 日本語エラーメッセージ |
08FH | .BADCOM | Wrong version of command | コマンドのバージョンが違います |
COMMAND2.COMがディスクからその非常駐部分をロードしたが、そのチェックサムが期待通りの値ではありません。 | |||
08EH | .BADCM | Unrecognized command | コマンドが違います |
指定のコマンドが内部コマンドでなく、その名前の.COMおよび.BATファイルも見つかりませんでした。 | |||
08DH | .BUFUL | Command too long | コマンドが長すぎます |
バッチファイル中のコマンドが127文字の長さを超えています。 | |||
08CH | .OKCMD | ||
COMMAND2.COMにコマンド行で渡したコマンドが終了した際に返される内部エラーコード(このエラーコードにはメッセージがありません)。 | |||
08BH | .IPARM | Invalid parameter | 無効なパラメータです |
コマンドへのパラメータが、なんらかの形で不正です。例えば範囲外の数値であるなど。 | |||
08AH | .INP | Too many parameters | パラメータが多すぎます |
コマンドが要求するすべてのパラメータを解析した後で、コマンド行上にまだ区切り文字でない文字が残っています。 | |||
089H | .NOPAR | Missing parameter | パラメータが不足しています |
パラメータがあるべきところでエンドオブラインが見つかりました。 | |||
088H | .IOPT | Invalid option | 無効なオプションです |
コマンド行で/の後に指定された文字はそのコマンドでは不正です。 | |||
087H | .BADNO | Invalid number | 無効な数値です |
数値が求められているところに、数字以外の文字が入っています。 | |||
086H | .NOHELP | File for HELP not found | HELPファイルが見つかりません |
ヘルプファイルが見つからなかった、あるいはパラメータが有効なHELPパラメータではありませんでした。 | |||
085H | .BADVER | Wrong version of MSX-DOS | MSX-DOSのバージョンが違います |
このエラーはコマンドインタープリタで使用されることはありません。コマンドインタープリタでこのエラーが発生した場合は自分自身で持っているメッセージを使用します。しかし、このエラーを返すことが有用な場合には、外部プログラムで使用することができます。 | |||
084H | .NOCAT | Cannot concatenate destination file | 複写先ファイルは結合できません |
CONCATコマンドの目的のファイルがソースの指定に一致しています。 | |||
083H | .BADEST | Cannot create destination file | ファイルを作成できません |
COPYコマンドで目的のファイルが作成されると、ソースファイルの一つ(あるいは既に使用中の別のファイル)を重ね書きしてしまいます。 | |||
082H | .COPY | File cannot be copied onto itself | 自分自身にはコピーできません |
COPYコマンドで目的のファイルが作成されるとソースファイルを重ね書きしてしまいます。 | |||
081H | .OVDEST | Cannot overwrite previous destination file | ファイルの重ね書きができません |
COPYコマンドでワイルドカードを使ったソースが、ワイルドカードを使っておらず、ディレクトリでなく、デバイスでもない目的ファイルとともに指定されました。 |