MSX-DOS2 FCS 03 71

From Z80 Machines Wiki
Jump to: navigation, search

3.71パースパス名(5BH)

パラメータ:C = 5BH(_PARSE)

B =ボリューム名フラグ(ビット4)

構文解析用のDE = ASCIIZストリング

結果:A =エラー

DE =終了文字へのポインタ

HL =最後の項目の始まりへのポインタ

B =解析フラグ

C =論理ドライブ番号(1 = Aなど)


この関数は純粋に文字列操作関数です。ディスクにはまったくアクセスせず、ユーザーの文字列もまったく変更しません。これは一時的なプログラムがコマンドラインを解析するのを助けるためのものです。

ボリューム名フラグ(レジスターBのビット4。属性バイトのボリューム名ビットと同じビット位置にあります)は、ストリングが「ドライブ/パス/ファイル」ストリングとして解析されるかどうかを決定します(ビットが(ビットが設定されている場合は) "drive / volume"文字列。

DEに返されるポインタは、パス名文字列内では無効な最初の文字を指し、文字列の末尾ではNULLになる可能性があります。パス名文字列の構文の詳細および有効な文字のリストについては、「コマンド仕様」を参照してください。

HLに返されるポインタは、文字列の最後の項目の最初の文字(ファイル名部分)を指します。たとえば、文字列 "A:\ XYZ \ P.Q / F"が渡された場合、DEは "/ F"の前の空白文字を指し、HLは "P"を指します。解析された文字列が文字 "\"で終わるか(ドライブ名とは別に)nullである場合、 "最後の項目"はなく、したがってHLとDEは同じ文字を指します。この場合、この機能を使用するすべてのプログラムに特別な手順が必要になります。 レジスターCに戻されるドライブ番号は、ストリングに指定されている論理ドライブです。文字列がドライブ文字で始まっていない場合は、デフォルトのドライブが暗黙的に指定されているので、レジスターCにデフォルトのドライブ番号が入ります。レジスターCがゼロになることはありません。

レジスタBに返される解析フラグは、文字列に関するさまざまな有用なことを示しています。ボリューム名の場合、ビット1、4、5、6、および7は常にクリアされます。ファイル名の場合、ビット3〜7は文字列の最後の項目(「ファイル名」コンポーネント)に関連します。ビット割り当ては次のとおりです。

b0 - ドライブ名以外の文字を解析した場合に設定

b1 - ディレクトリパスが指定されている場合に設定

b2 - ドライブ名が指定されている場合に設定

b3 - 最後の項目にメインファイル名が指定されている場合に設定

b4 - 最後の項目にファイル名拡張子を指定した場合に設定

b5 - 最後の項目があいまいな場合に設定

b6 - 最後の項目が "。"の場合に設定または「..」

b7 - 最後の項目が ".."の場合に設定