MSX-DOS2 FCS 03 34

From Z80 Machines Wiki
Jump to: navigation, search

3.34 ランダムブロック読み込み [FCB](27H)

パラメータ:C = 27H(_RDBLK)

DE =開かれたFCBへのポインタ

HL =読み込むレコード数

結果:エラーの場合はA = 01H(通常はファイルの終わり)

エラーがなければ= 0

HL =実際に読み取られたレコード数

この機能は、上記のBLOCK WRITE機能を補完するものであり、その使用に関しても同じことが当てはまります。ここでも大きなブロックが読み取られると、通常のCP / M操作よりもはるかに高速になります。

例えば、ファイルから20kを読み取ることが望ましい場合は、それぞれ1kの20回の別々の関数呼び出しではなく、1回の関数呼び出しで20kを読み取る方が良いでしょう。ただし、20kの読み取りが、1のレコードサイズと20kのレコードサイズ、20kのレコードサイズと1のレコードカウント、または任意の中間の組み合わせで行われても違いはありません。

実際に読み取られたレコード数がHLに返されます。これは、ファイルの終わりに達した場合に要求されたレコード数よりも少ない可能性があります。この場合、部分的なレコードは、ユーザーDTAにコピーされる前にゼロが埋め込まれます。ランダムレコードフィールドは、読み取られていない最初のレコードに調整されます。 HLに返された値がそれに追加されます。