English
PROGRAMMER'S GUIDECD通信I/F(CDパート)
戻る進む
CD通信インタフェースユーザーズマニュアル

CDブロックファイルシステム


6.1 CD-ROM(ISO9660)におけるファイル管理

 CDブロックファイルシステムでは、ISO9660に準拠した論理フォーマットをサポートします。

図6.1 CD-ROM(ISO9660)におけるファイル管理のデータ構造

6.2 CDブロックファイルシステムの機能

 CDブロックファイルシステム(以降、ファイルシステムと略記)は、以下の機能を持っています。(GAME-CDに対してだけ使用可能)

 (1)ディレクトリの移動(CDC_ChgDir)とファイル情報の保持(CDC_ReadDir)
 指定されたディレクトリに移動し、そのディレクトリ内のファイル情報をCDブロック内部のファイル情報テーブルに保持します。

 (2)保持ファイル情報の取得(CDC_GetFileScope, CDC_TgetFileInfo)
 保持しているファイル情報の範囲を取得し、ファイル情報テーブルの内容を取り出します。

 (3)ファイルの読み込み(CDC_ReadFile)
 保持しているファイル情報をもとに、ファイルのセクタデータをCDバッファに読み込みます。ホストは、読み込んだセクタデータをデータ転送によって取り出すことができます。

 (4)ファイルアクセスの中止(CDC_AbortFile)
 ディレクトリの移動、ファイル情報の保持、ファイルの読み込みを中止します。ファイルアクセスの中止を実行すると、CDブロックはCDドライブにポーズをかけます。

図6.2 CDブロックファイルシステムの構造

6.2.1 ファイル情報の保持方式

 CDブロックは256個分のファイル情報テーブルを用意し、アクセスの対象となるファイル情報を保持しています。
 このテーブルの先頭2個には、カレントディレクトリ(自分)と親ディレクトリの情報が常に保持されます。一般のファイル情報は最大254個まで保持できます。(個数は指定できません。)

 (1)ディレクトリの移動
 ディレクトリを移動するとディレクトリレコードを読み込み、ファイル情報(12バイト)を抜き出してテーブルに保持します。保持する範囲は、ディレクトリブロックの先頭からです。

 (2)ファイル情報の保持(保持する範囲の指定)
 ファイル識別子を指定して、カレントディレクトリ内の任意の位置からファイル情報を保持できます。この場合も、テーブルの先頭2個には自分と親の情報が保持されます。

6.2.2 ファイルアクセスの手順

 (1)ルートディレクトリへの移動
 ファイルシステムを使うには、まず最初にルートディレクトリへの移動を実行して、ファイル情報テーブルを作成する必要があります。起動時やディスク交換時など、ファイル情報がクリアされた場合も同様です。
 ディスクがISO9660形式(規格識別子が“CD001”)でなければテーブルは作成されず、ファイルシステムは使用できません。テーブルの作成結果を調べるには、保持ファイル情報範囲の取得を実行してみます。作成できなければREJECTになります。

 (2)ファイル情報の保持
 ファイルシステムは、ファイル情報テーブル中のファイルやディレクトリにだけアクセスできます。ファイルの読み込み、ディレクトリの移動、保持ファイル情報の取得を実行するには、ファイル情報をあらかじめ保持しておく必要があります。対象となるファイル情報を保持していないとREJECTになります。

 (3)ファイルの読み込み
 ファイル識別子とオフセット(セクタ単位)を指定して、ファイルを読み込みます。読み込み先のセレクタは絞り番号で指定します。

 (4)セクタデータの取り出し
 バッファ区画に読み込んだファイルは、セクタデータの取り出し(CDC_GetSctData等)により、データ転送して取り出します。読み込み中でもデータを取り出すことができ、読み込み終了を待つ必要はありません。
 ファイルの途中でCDバッファが満杯になるとポーズになり、空きができるとポーズ解除されてファイルの残りを読み込みます。

 (5)ファイル読み込みの終了
 ファイルの読み込みが終了すると、割り込み要因レジスタのEFLSフラグが1になります。ファイルの読み込みを中止するには、ファイルアクセスの中止を実行します。(ディレクトリの移動、ファイル情報の保持によるファイルアクセス中も同様です。)

6.2.3 ファイルシステムの注意事項

 (1)作業用セレクタの指定
 ファイル情報を読み込む場合、CDブロックは作業用のセレクタを必要とします。ディレクトリの移動、ファイル情報の保持を実行するときは、1個のセレクタを指定します。この時、最低1個の空きセクタが必要です。処理終了後、使い終わったセクタは消去されます。

 (2)セレクタの設定
 ファイルにアクセスする場合、ファイルシステムはセレクタに対して以下の設定をします。

  1. 指定した絞りの接続状態
    • 絞り入力コネクタ:CDデバイスと接続する。
    • 真出力コネクタ:同一番号のバッファ区画と接続する。
    • 偽出力コネクタ:他のセレクタと切り離す。

  2. 絞り条件
    表6.1 設定される絞り条件
    動作
    絞り条件
    ディレクトリの移動
    ・絞りフレームアドレス範囲を設定する。
    ・絞りモードのフレームアドレス範囲を有効にする。
    ファイル情報の保持
    ファイルの読み込み
    ・絞りフレームアドレス範囲(FAD範囲)を設定する。
    ・絞りサブヘッダ条件のファイル番号(FN)を設定する。
    ・絞りモードのFAD範囲、FN選択を有効にする。

  3. 絞りと接続したバッファ区画
    ファイルアクセスの前に、バッファ区画のセクタをクリアする。

 (3)CD再生範囲とドライブコマンド
 ファイルにアクセスする場合、再生範囲は省略値(ディスク先頭〜最後)になります。
 ドライブコマンド(CD再生、ポーズ等)は、ファイルシステム動作中であっても、そのまま実行されます。ファイルシステムの動作を妨害することも可能なので注意を要します。
 CDブロックの初期化(CDC_CdInit)による設定内容(ECC回数、リトライ回数など)は、ファイルアクセス時も有効です。
 バッファ満杯時の自動ポーズ/ポーズ解除も、通常と同様に動作します。

 (4)ファイルアクセスの終了と中止
 ファイルアクセスを終了または中止すると、EFLSフラグが1になります。トレイオープン時もファイルアクセスは中止されます。
 ディレクトリの移動、ファイル情報の保持を実行中の場合、ファイルアクセスを中止するとファイル情報テーブルは破棄(初期化)され、情報未入力状態になります。

 (5)マルチセッションの場合
 ファイルシステムは最終セッションのボリューム記述子を参照します。


戻る進む
PROGRAMMER'S GUIDECD通信I/F(CDパート)
Copyright SEGA ENTERPRISES, LTD., 1997