MSX-DOS2 FCS 03 44

From Z80 Machines Wiki
Jump to: navigation, search

3.44.最初のエントリを検索(40h)

パラメータ:C = 40H(_FFIRST)

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

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

HL =ファイル名ASCIIZ文字列(の場合のみ)

DE =ファイル情報ポインタ)

B =検索属性

IX =新しいファイル情報ブロックへのポインタ

結果:A =エラー

(IX)=一致するエントリで埋められました


文字列の "drive / path"部分、またはfileinfoブロックは、検索対象のディレクトリを指定します。ファイルを指定するfileinfoブロックが渡されると、「.IATTR」エラーが返されます。文字列の「ファイル」部分、またはHLのファイル名ASCIIZ文字列は、どのファイル名が一致するかを決定します。一致するものが見つからない場合は ".NOFIL"エラーが返され、そうでなければIXが指すfileinfoブロックに一致するエントリの詳細が書き込まれます。

ファイル名には、あいまいなファイル名文字( "?"または "*")が含まれることがあります。その場合、最初に一致したエントリが返されます。ファイル名がnullの場合(DEが指すASCIIZ文字列がnullであるか、 "\"で終わるか、HLが指すファイル名文字列がnullの場合)、この関数はファイル名が "*.*"のように動作します。 「それでどんな名前でもマッチします。

レジスターBの属性バイトは、どのタイプの項目になるかを指定します 一致しました。それがゼロであるならば、隠されていない、非システムファイルだけが見つけられるでしょう。レジスターBのディレクトリー、隠しビット、またはシステム・ビットが設定されている場合、これらの属性を持つ項目は通常のファイルと同様に突き合わされます。レジスタBの読み出し専用ビットとアーカイブビットは無視されます。

レジスターBのボリューム名ビットが設定されていると、検索は排他的になり、ボリューム・ラベル項目だけが検出されます。この場合、ドライブを指定する以外に、fileinfoブロックとファイル名、またはドライブ/パス/ファイル文字列も無視されます。つまり、ボリューム名は、指定されたファイル名と一致するかどうかにかかわらず、存在する場合は常にルートディレクトリにあります。

DEがfileinfoブロックを指している場合、必要に応じて、IXは同じfileinfoブロックを指すことができます。この場合、一致が見つかると、新しいfileinfoブロックが古いものを上書きします。