ここではfdrコマンドでフロッピーディスク読み出し後に作成されるイメージである、SLFフォーマットについて記述します。
データ構造
- データ構造は以下の3層によって構成されます。
- ・フォーマットヘッダ情報(16バイト固定)
・トラックヘッダ情報(80×2×32 = 5120バイト固定)
・トラックデータ(セクタ情報または物理フォーマットデータ)(可変)
データはリトルエンディアンで格納されます。
なお、トラックヘッダ情報は上記の通り固定サイズにしており、シングルサイドのFD(1D、1DD等)はインデックス値が奇数(ヘッド1に相当)に未フォーマットが設定され、2Dの場合はインデックス4つおきに前半の2つ(偶数トラックのヘッド0、1)に有効データ、後半の2つ(奇数トラックのヘッド0、1)に未フォーマット情報が設定されます。
フォーマットヘッダ情報
- フォーマットヘッダはファイルの先頭16バイトで以下の内容で構成されています。ヘッダのチェック以外は使用していません。
+0 | ヘッダ | 'FDIM' |
+4 | バージョン情報 | 現在は順に00 00 01 00を入れていますが、特に参照していません |
+8 | ファイルサイズ | ファイルサイズを格納しますが、特にチェックなどで使用してはいません |
+12 | フラグ | 運用中の一部のフラグを転送しますが実際には使われていません。 |
トラックヘッダ情報
- トラックヘッダはフォーマットヘッダの続くオフセット16バイトからの5120バイトに格納されます。
1トラックヘッダは32バイトで構成され、使用していないトラックも含め、80トラック×2ヘッド分確保されます。
トラックヘッダのインデックスは[トラックNo(0~79)×2+ヘッダ(0,1)]になります。
+0 | データオフセット | 対応するトラック内のデータを格納したデータ領域のファイル先頭からのオフセット |
+4 | データサイズ | トラック内のデータのデータサイズ |
+8 | アンフォーマットサイズ | トラックのアンフォーマットサイズ(2000、1660、1000が入ります) |
+12 | データタイプ | トラックデータタイプ
-1 : 未フォーマット
0 : 物理フォーマットデータ
1 : FMフォーマットデータ
2 : MFMフォーマットデータ |
+14 | セクタ数 | トラック内のセクタ数、以下FM/MFMフォーマットデータでのみ使用 |
+16 | GAP4aサイズ | GAP4aの信号期間(2HDでは×1μs、2DDは×2μsがGAP4aの期間になります) |
+20 | SYNCサイズ | GAP4a直後のSYNCの信号時間(同上) |
+24 | GAP1サイズ | GAP1の信号期間(同上) |
+28 | リザーブ | |
物理フォーマットデータ情報
トラックのデータタイプが物理フォーマットデータの場合、MFMはクロック、データをそれぞれ1ビットとして扱ったビット列、FMの場合はクロック、データそれぞれを2ビットとして扱ったビット列を格納します。
FMフォーマットデータ、MFMフォーマットデータ
FMフォーマットデータとMFMフォーマットデータはデータの構成要素は同じです。セクタ構造を解析したデータが格納されます。
ここでのデータは、セクタヘッダ情報とセクタのデータ領域の内容で構成されます。
セクタヘッダ情報はサイズが32バイトでセクタデータのオフセットや、データ以外の情報を格納している領域で、セクタデータはセクタのデータ領域の内容が格納されます。データの配置は、先頭領域にセクタ数分のセクタヘッダ情報が格納され、その後ろにセクタデータが格納されます。
以下にセクタヘッダ情報の構造を記述します。
+0 | データオフセット | 対応するセクタデータを格納したデータ領域のフォーマットデータの先頭からのオフセット |
+4 | ステータス | セクタの属性、ビットで指定します
00000001 : IDAMパターンエラー
00000002 : ID CRCエラー
00000004 : DATAAMパターンエラー
00000008 : DATA CRCエラー
00000010 : セクタ構造のエラー
00000100 : Deletedセクタ
00000200 : 入れ子セクタ |
+8 | ISYNCサイズ | IDAM直前のSYNCの信号期間(2HDでは×1μs、2DDは×2μsがGAP4aの期間になります) |
+10 | GAP2サイズ | GAP2の信号期間(同上)
|
+12 | DSYNCサイズ | DATAAM直前のSYNCの信号期間(同上) |
+14 | GAP3サイズ | GAP3の信号期間(同上) |
+16 | ID CRC | ID CRCの値 |
+18 | DATA CRC | DATA CRCの値 |
+20 | IDAMパターン | IDAMの値(FMフォーマットは3バイト目のみ使用) |
+24 | CHSN | C(シリンダ)H(ヘッダ)S(サイド)N(セクタサイズ)の格納領域 |
+28 | DATAAMパターン | DATAAMの値(FMフォーマットは3バイト目のみ使用) |
|