MSX-DOS2PIS 03 06

From Z80 Machines Wiki
Jump to: navigation, search

3.6.ファイル制御ブロック

特別に作成されたMSX-DOS 2一時プログラム、MSX-DOS 2用に変更されたMSX-DOS 1またはCP / MプログラムはCP / M互換のFCB機能を使用することになりますが、使用するFCBの形式は異なります。これらの関数は参照用にここにあります。このフォーマットは、もちろん、CP / MおよびMSX-DOS 1で使用されているFCBと非常によく似ていますが、FCB内の一部のフィールドの使用方法は異なります(一般的には互換性があります)。

基本的なFCBは33バイトです。このタイプのFCBは、ファイル管理操作(削除、名前変更など)にも、順次読み取りおよび書き込みにも使用できます。ランダム読み取りおよび書き込み機能は、ランダム・レコード番号を保管するためにFCBの終わりに追加の3バイトを使用します。 MSX-DOS 1互換ブロックの読み書き機能も、この追加の3バイト(場合によっては4バイト)を使用します。詳細については、機能仕様を参照してください。

FCBのレイアウトは以下の通りです。各フィールドの一般的な説明はここに含まれています。機能仕様に記載されている個々の機能の説明では、これが明らかではない場合に、各機能に対してフィールドがどのように使用されるかについて詳しく説明しています。

  • 00hドライブ番号1 ... 8 0 =>デフォルトドライブ。使用されるすべてのFCBでセットアップする必要があります。MSX-DOS関数呼び出しによって変更されることはありません(APPENDが使用された場合は「ファイルを開く」を除く)。
  • 01h ... 08hファイル名。末尾ブランクで左寄せにします。 "?"を含めることができますあいまいなファイル名が許可されている場合は文字(関数仕様を参照)。比較をする場合、大文字小文字の区別は無視されます。新しいファイルを作成するとき、名前は大文字になります。
  • 09h ... 0Bhファイル名拡張子。 filenameと同じです。ファイル名拡張子文字のビット7は、CP / Mにあるのでフラグとして解釈されないことに注意してください。
  • 0Chエクステント番号(下位バイト)開く前または作成する前に、一時プログラムによって(通常はゼロに)設定する必要があります。これは順次読み取りおよび書き込みによって使用および更新され、またランダム読み取りおよび書き込みによって設定されます。これはCP / MおよびMSX-DOS 1と互換性があります。
  • 0Dhファイル属性"開く"、 "作成"、または "検索"で設定します。
  • 0Eh CP / M機能のエクステント番号(上位バイト)。開いて作成してゼロにします。順次読み取りおよび書き込みの場合は、より大きなファイルにアクセスできるようにするために、エクステント番号の拡張として使用および更新されます。これはCP / Mとは異なりますが、CP / MによるFCBの使用を妨げるものではなく、MSX-DOS 1と同じです。

MSX-DOS 1互換ブロック機能のレコードサイズ(下位バイト)。ブロックの読み取りまたは書き込み機能を使用する前に、必要なレコードサイズに設定する必要があります。

  • 10h ... 13hバイト単位のファイルサイズ、最下位バイトを先頭とします。ファイルサイズは正確で、128バイトに切り上げられていません。このフィールドはopenによって設定され、ファイルが書き込み操作によって拡張されると作成および更新されます。一時関数はclose関数呼び出しによってディスクに書き戻されるため、一時プログラムによって変更されるべきではありません。これはMSX-DOS 1と同じですが、割り当て情報をここに格納するCP / Mとは異なります。 * 14h ... 17hボリュームIDこれは、このFCBがアクセスしている特定のディスクを識別する4バイトの番号です。それはopenとcreateによって設定され、read、write、そしてclose呼び出しでチェックされます。プログラムによって変更されるべきではありません。これが最後の更新の日付と時刻をここに格納するMSX-DOS 1と割り当て情報を格納するCP / Mと異なるのに注意します。 * 18h ... 1Fh内部情報これらのバイトには、ファイルをディスク上に配置できるようにするための情報が含まれています。一時プログラムによってまったく変更されるべきではありません。ここに保存されている内部情報は似ていますが、MSX-DOS 1によって保存されているものと同一ではなく、CP / Mとはまったく異なります。
  • 0Fh CP / M機能のレコード数。 openでセットアップし、必要に応じて順次およびランダムな読み書きによって作成および変更します。これはCP / MおよびMSX-DOS 1と同じです。

MSX-DOS 1互換ブロック機能のレコードサイズ(ハイバイト)。ブロック読み取りおよび書き込み機能を使用する前に、必要なレコードサイズに設定する必要があります。 最初の順次読み取りまたは書き込みの前に、一時プログラムによって(最終的にゼロに)設定されます。順次読み取りおよび書き込みによって使用および変更されます。ランダムな読み書きでも設定できます。これはCP / MおよびMSX-DOS 1と互換性があります。

  • 21h ... 24hランダムレコード番号、下位バイトが先頭。このフィールドはオプションで、ランダムまたはブロックの読み取りまたは書き込みが使用されている場合にのみ必要です。これらの操作を行う前に設定する必要があり、ブロックの読み書きによって更新されますが、ランダムな読み書きによっては更新されません。

「ランダムレコード設定」機能でも設定できます。

MSX-DOS 1にはあるがCP / Mにはないブロック操作の場合、レコード・サイズが64バイト未満の場合は4バイトすべてが使用され、レコード・サイズが64バイトの場合は最初の3バイトのみが使用されます。もっと。ランダムな読み書きでは、最初の3バイトだけが使用されます(暗黙のレコードサイズは128バイトです)。これはCP / MおよびMSX-DOS 1と互換性があります。