MSX-DOS2 FCS 03 47

From Z80 Machines Wiki
Jump to: navigation, search

3.47.ファイルハンドルのオープン(43H)

パラメータ:C = 43H(_OPEN)

DE =ドライブ/パス/ファイルASCIIZ文字列

またはfileinfoブロックポインタ

A =オープンモードb0 set =>書き込みなし

b1 set =>読み取りなし

b2 set =>継承可能

b3..b7 - 明確でなければならない

結果:A =エラー

B =新しいファイルハンドル


drive / path / file文字列またはfileinfoブロックは通常、サブディレクトリ名またはボリューム名ではなくファイルを参照する必要があります。それがボリューム名であるならば、 ".IATTR"エラーが返されます。もしそれがサブディレクトリであれば、 ".DIRX"エラーが返されます。

drive / path / file文字列またはfileinfoブロックは通常、サブディレクトリ名またはボリューム名ではなくファイルを参照する必要があります。それがボリューム名であるならば、 "。IATTR"エラーが返されます。もしそれがサブディレクトリであれば、 "。DIRX"エラーが返されます。

ファイルが指定されていると仮定すると、(Aのオープンモードに応じて)読み取りおよび/または書き込みの準備ができてオープンされ、そのファイルの新しいファイルハンドルがレジスタBに返されます。使用可能な最小ファイルハンドル番号が使用されます。予備のファイルハンドルがない場合( ".NHAND"エラー)、メモリが不足している場合( ".NORAM"エラー)、エラーが発生します。

レジスターAの「読み取りなし」ビットが設定されている場合、ファイル・ハンドルからの読み取りは拒否され、「書き込みなし」ビットが設定されている場合、書き込みは拒否されます。どちらの場合も、「。ACCV」エラーが発生します。ファイルが読み取り専用の場合( ".FILRO"エラー)も書き込みは拒否されます。レジスタAの「継承可能」ビットが設定されている場合、ファイルハンドルは、「fork」機能呼び出しによって作成された新しいプロセスによって継承されます(機能60hを参照)。

デバイスファイルハンドルが組み込みデバイスの1つと一致するファイル名(例えば、 "CON"や "NUL")を与えることによって開かれると、それは常にASCIIモードで最初に開かれます。 IOCTL機能(機能4Bh)を使用してこれをバイナリー・モードに変更することができますが、ファイルの終わり状態がないため、バイナリー・モードで装置から読み取るときは細心の注意を払う必要があります。