Last updated 2024/04/15 since 200x
1. 概要 (Summary)
日本で普及している、レトロPCエミュレータが使用している、
FDディスクイメージのフォーマットに関する簡単なドキュメントです。
とりあえず、簡易説明と、ドキュメントの場所(リンク集)です。
ここで対象としているフォーマットは、以下のデータ形式です。
2. 磁気ディスク(FD,HD等)の常識
FDを含む磁気メディアの常識について簡単に説明します。
複雑な磁気記録方式がいろいろとあるので、これだけではないのですが、
昔からの伝統的な一般的な方法では、円盤方式の記録メディアは、
円盤の中心からの距離を番号化した、「シリンダ(cylinder)番号」と、
各シリンダ内の位置を番号化した、「セクタ(sector)番号」で管理されます。
ハードディスクには、ディスクに裏表があったり、何枚もあったりしたので、
「ヘッド(head)番号」という概念があります。
フロッピーディスクは、最初片面でしたので、
シリンダとセクタの概念だけで管理されていました。
片面ディスクは、1S/1D/1DD等と呼ばれていて、「1」がついています。
両面メディア時代となり、2S/2D/2DD/2HD等と呼ばれるディスクになり、
「ヘッド(head)番号」の概念が、フロッピーディスクへも導入され、
最大ヘッド数(maximum heads)=2となりました。
円盤メディアには、角速度に対する記録密度一定といった概念があり、
各シリンダ内のセクタ数が変化するフォーマットがありますが、
スタンダードな規格のフォーマット通りのフロッピーディスクに関しては、
そういうことはなくて、セクタ数は同じです。
(有名なところでは、Macinsothの800KBが例外として知られていますが、記録密度一定まではいきません)
フロッピーディスクの場合は、最外周がシリンダ番号0で、順番に内側へ向かって進んで行きますが、内側へ向かう程、
記録密度が高くなっています。
この結果、古くなって痛んだフロッピーディスクは、後ろの方から壊れてしまうのです。
質の悪い初期不良品も、後ろの方が壊れていることが多いようです。
フロッピーディスクでは、シリンダをトラック(track)とも呼び、
ヘッドをサイド(side)とも呼びますが、
両面フロッピーディスクでは、
ヘッドを単独で扱うことはほぼなく、シリンダとセットになっている場合がほとんどです。
それで、tracksにご注意ください。tracksには、二種類の考え方があります。
tracks = cylinders もしくは、 tracks = cylinders * sides(heads)
後者の場合の各々のtrack番号は、
track = cylinder * 2 + head
です。
一般的には、tracksは、シリンダとサイド(2S/2D/2DD/2HD=2、1S/1D/1DD=1)を
合わせた、後者のものが普及しています。
しかし、古い環境の流れを組むMicrosoft系 Disk Basicの命令等で、
sectorsの方に、サイドを入れる考え方の環境もあるのでご注意ください。
例えば、16 sectorsの場合は、32 sectorsまで指定できます。
ここでは、tracksの方へサイド情報を入れた方法のみを扱います。
フロッピーディスクには、記録方式として、単密(FM)と倍密(MFM)と呼ばれる概念が存在します。
この違いは、記録時の符号化方式の違いですが、トラック内の容量が大きく変わります。
もちろん、倍密(MFM)にはより高い帯域が要求されますので、
ドライブには、単密(FM)方式より高周波に対応できる性能が求められます。
単密(FM)と倍密(MFM)は、スタンダード規格の概念です。
1S/2Sが単密(FM)で、1D/2D等のその他は、倍密(MFM)です。
(まったく異なった、符号化方式を採用したフロッピーディスクは存在して、
APPLE IIが、これで大変安価なドライブを1978年に登場させたのが有名です。)
各track内の詳細を決める、
物理フォーマットは規格化されています。IBMフォーマットと、ISOフォーマットの2種類が存在します。
日本のパソコンについては、これらが問題になることはないと思うので、省略しますが、
普及したFDCは、読み書きに関しては、だいたい両方に対応しているようです。
FDC NEC uPD765は、IBMフォーマットしか作成できませんが、
FDC Fujitsu MB8866/67/76/77(Western Digitalのセカンドソース)は、どちらも作成できます。
SHARP MZ-80B、2000だと、SHARP系はISOフォーマットで、MSA CP/MはIBMフォーマットと、
両方混ざっています。
これ以上は、回転数と読み書き速度の話になったり、フォーマットの詳細になるので、
ディスクドライブの仕様としては重要ですが、
ディスクイメージを扱う場合には、あまり関係ありません。
各セクタにID情報がついていたり、他にもいろいろ必要な情報はあるのですが、これも説明は省略します。
興味があって、ご存知ない方がいらっしゃったら、他で調べてください。
# ちゃんと知っとるか? これだけは常識で、以下の説明にも必要やで〜〜
# わし、資料まったく調べずに書いてるで〜〜
3. FDイメージフォーマットの仕様 (FD Image Format Specification)
3.1 2D/2DD/2HD形式 (拡張子.2D/.2DD/.2HD)
2D/2DD/2HD形式は、単純な倍密(MFM)のみのベタイメージです。
最初は、X68000用のX1エミュレータで登場したフォーマットで、2D形式だけでした。
2D/2DD形式は、拡張子に関係なく640KBまで扱える場合が多いので、ご注意ください。
実は、実機で2D機種に、2DDドライブを接続した場合、
システムプロプログラム上に変わった制限がなければ動作します。
(しかし、シークでタイムアウトしたりして、少し改造しないと最期まで使えない場合があります)
256(1 sector bytes) * 16(sectors) * 80(tracks) = 320KB = 320 * 1024(bytes)
もしくは、
256 * 16 * 160 = 640KB = 640 * 1024(bytes)
です。
サイズ0(bytes)はunformatです。
2HDも同様で、256バイト、26セクタ、154トラックになっているだけです。
注意
3.2 XDF形式 (拡張子.XDF)
XDF形式は、単純な倍密(MFM)のみのベタイメージです。
最初は、SHARP X68000用でしたが、NEC PC-9801のエミュレータでも使えます。
日本でしかほとんど普及していない、MS-DOS形式フォーマットである、
5'2HD/8'2Dの1.2MB 1024バイト長8セクタ専用の形式です。
1024(1sector bytes) * 8(sectors) * 153(tracks) = 1.2MB
あたりなのですが、今未チェックなので、後は自分で調べてください。
簡単な算数でわかります。
3.3 D88形式 (拡張子.D88)
下の
3.4 DSK形式 (拡張子.DSK)
DSK形式は、何種類かあります。
日本でよく出回っているもので、今思いつくのは、以下の3種類です。
しかし、拡張子DSKのディスクは、昔、よく見かけたことがあり、他にもあります。
よくわからない場合は、ベタ・イメージを疑ってください。
サイズだけを見て、簡単な計算で判断しましょう。
たいていこれです、というか、
昔からの初期のディスクイメージに、何でも拡張子にDSKがついています。
MSXで普及しているDSK形式は、単なるベタ形式だけのはずです。
2DD(両面)の場合、
512(1 sector bytes) * 9(sectors) * 160(tracks) = 720KB = 720 * 1024(bytes)
1DD(片面)の場合、
512(1 sector bytes) * 9(sectors) * 80(tracks) = 360KB = 360 * 1024(bytes)
だけのはずです。
# 今、再チェックしていませんので、間違っていたらすみません。
これは、ツールもよく見かける名前で、同名が多いので気をつけましょう。
今未確認だけど、IBM-PCのPC/MS-DOS用で、"DCOPY.EXE"じゃなかったかな?
欲しい場合は、海外のサイトを探してください。
Amstrad CPC DSK形式は、
下の
IBMのメーカー公式配布ディスクの形式は、圧縮形式です。
昔、どこかで見て知っていたはずだけど、今知らないので省略しますが、
海外サイトを探してみたら見つかると思います。
興味があるなら、探してみてください。
私が見たのは、1990年代の話です… でも、今もあちこちにあるでしょ、こんな有名なの。
ツール名は、"LOADDSKF.EXE"/"SAVEDSKF.EXE"だったと思います。
"LOADDSK.EXE"や"SAVEDSK.EXE"かも…
そして、IBMとは関係なく、IBM製ではなかった気が。
4. 2HDフロッピーディスクの注意点
通常の2HDブランクディスクは、新品からIBMフォーマットでフォーマット済で、
トラック番号0〜153の154トラック分の標準データ領域以外に、
トラック番号154〜155にエラー情報があります。
MS-DOSの"DISKCOPY.EXE"を筆頭に、コピーツールなどでも、デフォルトでは、
トラック番号154以降を無視してしまい、これが残ってしまいます。
これを消した方がいいのですが、これがいろんなものにあって、
考えてイメージ化しないと、真実のマスターがどこまでかわからなくなります。
気をつけましょう。
ゲームの場合は、コピープロテクトや容量増加のために使っているものもあるかもね。
僕の昔集めたディスク・イメージ、真実がまったくわかりません…
なんとかしてください…
1.2MBは、トラック番号0〜153までですが、2DDはトラック番号159まで使用していて、
オーバートラックで、トラック番号163まで使えますので、
2DD/2HD切り替えドライブは、トラック番号163まで使えたと思うのですが、
記憶違いだったらすみません。
トラック番号154〜155の情報を消す方法は、アンフォーマットがわかっているか、
2DD等の読めないディスクを入れて、
アンフォーマットと認識させて、コピーツールでコピーする方法が簡単です。
トラック番号159か163まで、全部消しましょう。
(この消し方は、ゴミが書かれてIDがないだけですが、これで充分でしょう)
2DD/2HD切り替え型ドライブは、どれでもトラック番号160〜163トラックも使えるはずですが、
シークできなくて、変な音がしたら、そこまでです。
その後は、ドライブを労って限界を越えないようにしましょう。
壊れないためのストッパーだから、壊れないとは思います…
古い話なので、記憶違いだったらすみません。
5. リンク集 (link)
5.1. 仕様のリンク集 (Links of Specifications)
ディスクイメージ・フォーマットの仕様に関するリンク集です。
以上