MSX-DOS2 FCS 03 33

From Z80 Machines Wiki
Jump to: navigation, search

3.33 ランダムブロック書き込み [FCB](26h)

パラメータ:C = 26H(_WRBLK)

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

HL =書き込むレコード数

結果:エラーの場合A = 01H

エラーがなければ= 0

データは、現在のディスク転送アドレスからランダムレコード番号で定義されたファイル内の位置に書き込まれます。レコードサイズは、ファイルを開いた後、この関数を呼び出す前に、ユーザーが設定しなければならないFCBのレコードサイズフィールド(バイト0Ehと0Fh)によって決まります。レコードサイズが64バイト未満の場合は、ランダムレコード番号の4バイトすべてが使用されます。それ以外の場合は、最初の3バイトだけが使用されます。 書き込まれるレコード数はHLによって指定され、レコードサイズと一緒に書き込まれるデータ量が決まります。サイズが64kを超えるとエラーが返されるため、転送の最大サイズが制限されます。

データの書き込み後、ランダムレコードフィールドはファイル内の次のレコード番号に調整されます(つまり、HLが追加されます)。現在のレコードとエクステントのフィールドは使用も変更もされません。ファイルが拡張されている場合は、ファイルサイズフィールドが更新されます。

レコードサイズは1 ... 0FFFFhの任意の値にすることができます。小さいレコードサイズは大きいレコードサイズほど効率的ではありませんので、必要に応じてレコードサイズを1に設定し、レコード数をバイト数にすることができます。 1回の大きな転送は、いくつかの小さな転送よりも速くなるため、1回の関数呼び出しでできるだけ多く記述することが望ましいです。

書き込むレコード数(HL)がゼロの場合、データは書き込まれませんが、ファイルのサイズはランダムレコードフィールドで指定された値に変更されます。これはファイルの現在のサイズよりも長くても短くてもよく、ディスクスペースは必要に応じて割り当てられるか解放されます。この方法で割り当てられた追加のディスク容量は、特定の値に初期化されません。 より大きな価値。