(仮)

ヒマなオッサンのメモ

.D88形式のフロッピーディスクイメージフォーマット

全体

項目 サイズ
ヘッダ 0x2b0
トラック0 不定
トラック1 不定
: :
  • トラック数とサイズはディスクの種類によって異なる。
    • トラック数 最大164
    • トラックサイズは、セクタ数、セクタヘッダ、データサイズにより変動

ヘッダ

項目 サイズ 備考
ディスク名 17 C文字列(末尾が 0x00)最大16文字
予約 9
ライトプロテクト 1 0x00=なし 0x10=あり
ディスクの種類 1 0x00=2D 0x10=2DD 0x20=2HD
ディスクサイズ 4 ヘッダと全トラックの合計サイズ(リトルエンディアン)
トラック先頭のオフセット 4*164 トラックのファイル先頭からのオフセット。トラック0〜163の順で、1トラック4バイト(リトルエンディアン)

トラック

トラックに含まれるセクタを順に連結したもの。

セクタ

項目 サイズ 備考
トラック(C) 1 0から数える
サイド(H) 1 0=表面 1=裏面
セクタ(R) 1 1から数える
セクタサイズ(N) 1 0=128bytes 1=256bytes 2=512bytes 3=1024bytes
トラック中のセクタ数 2 (リトルエンディアン)
記録密度 1 0x00=倍密度 0x40=単密度 0x01=高密度
削除フラグ 1 0x00=通常 0x10=削除
ステータス 1 0x00=正常
予約 5
このセクタのデータサイズ 2 (リトルエンディアン)
データ 不定 サイズはセクタサイズ分

例:標準的な2Dフォーマットの場合

トラック数 サイド セクタ数/トラック セクタサイズ(byte)
40 2 16 256

ヘッダ

項目 サイズ
ディスク名 17 (任意)
予約 9 0
ライトプロテクト 1 0x00
ディスクの種類 1 0x00
ディスクサイズ 2 348848 (= 0x2b0(ヘッダ)+40(トラック数)☓ 2(面)☓ 16(セクタ/トラック)☓ (0x10(セクタヘッダ)+ 0x100(セクタデータ))
トラック先頭のオフセット 4*164 0x02b0,0x24b0,...(トラックごとに+0x2200 0〜39トラックまで。40トラック以降は 0)

トラック

トラック サイド セクタ オフセット サイズ
0 0 1 0x02b0 0x110
0 0 2 0x03c0 0x110
: : : : :
0 0 16 0x12a0 0x110
0 1 1 0x13b0 0x110
: : : : :
0 1 16 0x23a0 0x110
1 0 1 0x24b0 0x110
: : : : :
39 1 16 0x551a0 0x110

セクタ

項目 サイズ
トラック 1 0〜39
サイド 1 0 or 1
セクタ 1 1〜16
セクタサイズ 1 1
トラック中のセクタ数 2 16
記録密度 1 0x00
削除フラグ 1 0x00
ステータス 1 0x00
予約 5 0
このセクタのデータサイズ 2 256
データ 256 (実データ)