D88形式フォーマット
ここではD88フォーマットに関する情報を記載します。
基本構造
| 項目 |
サイズ |
| ヘッダ |
トラック0の位置 |
| トラック0 |
不定 |
| トラック1 |
不定 |
| … |
… |
- トラック0の位置は0x2B0が基本。(詳細はヘッダ参照)
- 特に明記されていない複数バイトの数値はリトルエンディアン
トラック
- 最大トラック数 164
- トラック数はセクタ数、セクタヘッダ、データサイズによって変化
ヘッダ
| 項目 |
位置 |
サイズ |
備考 |
| ディスク名 |
0x00 |
17 |
文字列(末尾が0x00) |
| 予約 |
0x11 |
9 |
|
| ライトプロテクト |
0x1a |
1 |
0x00=なし 0x10=あり |
| ディスクの種類 |
0x1b |
1 |
[1] |
| ディスクサイズ |
0x1c |
4 |
ヘッダと全トラック |
| トラック先頭オフセット |
0x20 |
4*164[2] |
[3] |
[1] 0x00=2D 0x10=2DD 0x20=2HD 0x30=1D 0x40=1DD
[2] 4*164 = 656(0x290)
[3] ファイル先頭からのオフセット トラック0~163
アドレス計算
必要ヘッダ + トラックアドレス部
32(0x20) + 656(0x290) = 688(0x2b0)
トラック
複数セクタを結合したもの。
セクタ
| 項目 |
位置 |
サイズ |
備考 |
| シリンダ(C) |
0x00 |
1 |
0から |
| ヘッダ/サイド(H) |
0x01 |
1 |
0=表面 1=裏面 |
| セクタ(R) |
0x02 |
1 |
1からセクタ数まで |
| セクタサイズ(N) |
0x03 |
1 |
[1] |
| トラック中のセクタ数 |
0x04 |
2 |
16など |
| 記録密度 |
0x06 |
1 |
[2] |
| 削除フラグ |
0x07 |
1 |
0x00=通常 0x10=削除 |
| ステータス |
0x08 |
1 |
下記ステータス詳細を参照 |
| 予約 |
0x09 |
5 |
|
| このセクタのデータサイズ |
0x0e |
2 |
|
| データ |
0x10 |
不定 |
セクタサイズ分 |
[1] 0=128bytes 1=256bytes 2=512bytes 3=1024bytes … 128«N
[2] 0x00=倍密度 0x40=単密度 0x01=高密度
ステータス詳細
| 値 |
詳細 |
| 0x00 |
正常 |
| 0x10 |
正常(DELETED DATA) |
| 0xa0 |
ID CRC エラー |
| 0xb0 |
データ CRC エラー |
| 0xe0 |
アドレスマークなし |
| 0xf0 |
データマークなし |
密度
| 密度 |
一般記号 |
| 高密度 |
HD |
| 倍密度 |
DD |
| 単密度 |
D |
例:2Dフォーマット
| トラック数 |
サイド |
セクタ数/トラック |
セクタサイズ(byte) |
| 40 |
2 |
16 |
256 |
ヘッダ
| 項目 |
サイズ |
値 |
| ディスク |
17 |
(任意) |
| 予約 |
9 |
0x00 |
| ライトプロテクト |
1 |
0x00 |
| ディスクの種類 |
1 |
0x00 |
| ディスクサイズ |
2 |
[1] |
| トラック先頭のオフセット |
4*164 |
0x02b0,0x24b0,… |
[1] 348848 = 0x2b0(ヘッダ) + 40(トラック数) x 2(面) x 16(セクタ/トラック) x (0x10(セクタヘッダ) + 0x100(セクタデータ))
トラック(2D)
| C |
H |
R |
N |
セクタ位置 |
| 0 |
0 |
1 |
1 |
0x2b0 |
| 0 |
0 |
2 |
1 |
0x3c0 |
| … |
… |
… |
… |
… |
| 0 |
0 |
16 |
1 |
0x12a0 |
| 0 |
1 |
1 |
1 |
0x13b0 |
| … |
… |
… |
… |
… |
| 0 |
1 |
16 |
1 |
0x23a0 |
| 1 |
0 |
1 |
1 |
0x24b0 |
| … |
… |
… |
… |
… |
| 39 |
1 |
16 |
1 |
0x551a0 |
C=トラック、H=サイド、R=セクタ、N=セクタサイズ
セクタ(2D)
| 項目 |
位置 |
サイズ |
値 |
| トラック |
0x00 |
1 |
0〜39 |
| サイド |
0x01 |
1 |
0 or 1 |
| セクタ |
0x02 |
1 |
1〜16 |
| セクタサイズ |
0x03 |
1 |
1 |
| トラック中のセクタ数 |
0x04 |
2 |
16 |
| 記録密度 |
0x06 |
1 |
0x00 |
| 削除フラグ |
0x07 |
1 |
0x00 |
| ステータス |
0x08 |
1 |
0x00 |
| 予約 |
0x09 |
5 |
0 |
| このセクタのデータサイズ |
0x0e |
2 |
256 |
| データ |
0x10 |
256 |
(実データ) |
セクタ(2HD)
| 項目 |
位置 |
サイズ |
値 |
| トラック |
0x00 |
1 |
0〜76(0x4C) |
| セクタ |
0x02 |
1 |
1〜26(0x1A) |
| トラック中のセクタ数 |
0x04 |
2 |
0x1A |
参照元
http://gra4.hatenadiary.jp/entry/20171108/1510096429
https://github.com/jpzm/wii88/blob/master/document/FORMAT.TXT
http://www.z88dk.org/tools/x1/