日本で普及している、レトロPCエミュレータ用 FDイメージ・フォーマットの説明
(FD Image Format Document in Japan)

Last updated 2024/04/15 since 200x

«Quick Links» 1. 概要 (summary)  2. 磁気ディスク(FD,HD等)の常識  3. FDイメージフォーマットの仕様 (FD image format specification)  3.1 2D/2DD/2HD形式 (拡張子.2D/.2DD/.2HD)  3.2 XDF形式 (拡張子.XDF)  3.3 D88形式 (拡張子.D88)  3.4 DSK形式 (拡張子.DSK)  4. 2HDフロッピーディスクの注意点  5. リンク集 (link)  5.1. 仕様のリンク集 (links of specifications)


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)

下の 仕様のリンク集 (links of specifications)  を参照してください。


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形式は、 下の 仕様のリンク集 (links of specifications)  を参照してください。

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)

ディスクイメージ・フォーマットの仕様に関するリンク集です。

http://www1.plala.or.jp/aoto/ ... ぶるー牧場 (D88形式データの仕様)
FDイメージ・ファイル D88形式の仕様。 ここがD88形式のオリジナル・リファレンスです。

http://www.cpcwiki.eu/index.php/Format:DSK_disk_image_file_format ... CPCWiki Format:DSK disk image file format
海外で普及している、「Amstrad CPC用 FDイメージ・ファイル DSK形式」の仕様。

以上