MSX-DOS2 FCS 03 53

From Z80 Machines Wiki
Jump to: navigation, search

3.53ファイルハンドルへの書き込み(49H)

パラメータ:C = 49H(_WRITE)

B =ファイルハンドル

DE =バッファアドレス

HL =書き込むバイト数

結果:A =エラー

HL =実際に書き込まれたバイト数


この機能は上記の "read"機能(機能48h)と非常によく似ています。指定されたバイト数がファイル内の現在のファイルポインタ位置に書き込まれ、ファイルポインタは最後に書き込まれたバイトの直後を指すように調整されます。 "no write"アクセスビットを設定してファイルを開いた場合は ".ACCV"エラーが返され、ファイルが読み取り専用の場合は ".FILRO"エラーが返されます。

書き込みが現在のファイルの終わりを超えた場合、ファイルは必要に応じて拡張されます。ファイルポインタがすでにファイルの終わりを超えている場合、ディスクスペースはギャップを埋めるために割り当てられ、初期化されません。ディスク容量が不足していると、 ".DKFUL"エラーが返され、データのスペースがあってもデータは書き込まれません。

書き込まれるバイト数は、エラーが返された場合はゼロになるか、書き込みが成功した場合は要求された数に等しくなるため、通常は無視できます。小さなブロックではなく、いくつかの大きなブロックにファイルを書き込む方がはるかに効率的であるため、プログラムは常にできるだけ大きなブロックに書き込むようにしてください。

この関数はファイルハンドルに "変更された"ビットを設定します。これは、ファイルハンドルが明示的または暗黙的に閉じられるか保証されると、ディレクトリエントリが新しい日付、時刻および割り当て情報で更新されることを保証します。またアーカイブビットは、このファイルが最後にアーカイブされてから変更されたことを示すために設定されます。

デバイスファイルハンドルへの書き込みは、ファイルの終わり条件や行入力が心配なので、読み込むことほど複雑ではありません。コンソールステータスのチェックはASCIIモードでのみ行われるという点で、 "CON"デバイスへの書き込み時にASCIIモードとバイナリモードの間にいくつかの違いがあります。有効にされている場合、プリンタエコーもASCIIモードでのみ行われます。