中田真秀(なかたまほ)のブログ

研究について、日常について、その他。

5.25inchの2HDフロッピーディスクを読んでD88形式にする

2016-02-27 19:56:45 | 日記
最近は5.25インチフロッピーディスクを読もうと思っても、そもそもWindowsMeまでしか対応してない、最近となるとBIOSレベルでも対応してな
とナイナイづくしでしょっぱい思いをするわけですが、今更ながらKyrofluxというハードが出ていて
USB接続で読めたので報告しようと思います。めんどくさい人はメディアコンバートのサービスを利用するのもあるかと思います。cf. クリムゾン メディアコンバートサービスなど。

Note:大石さんのページに2Dのフロッピーディスクを変換する方法が書いてありますが、2HDには対応してません。
それでこのページを作ったわけです。

まず、必要なものとその入手経路について

  • 5.25inchのドライブ:日本での入手はヤフーオークション、海外からは、eBayから、ちょこちょこ出品されてます。
  • フロッピーディスクケーブル: これはねじれていて4つコネクタが有るケーブルです。出回っているものだと3.5inchのだけが多いです。これもヤフオクなどから入手できました。
  • Kyrofluxは三月兎で通販してました。直接Kyrofluxからも入手できると思います。
  • フロッピーディスクはイメージ化したいものを持っているとします。
  • ストリーム形式からD88形式に変換する:HxC Floppy Emulator


その次に、読んで出てきたデータをD88形式に変換します。

Kyrofluxはさまざまなイメージに対応してますが、日本のエミュレータでよく対応しているD88には対応してません。
まずはKyrofluxが使えることを確認したあと、5.25 2HDフロッピーディスクについて調べておきましょう。360rpm, 77track, 1024bytes/sector, 8sector/track 2headsとなってます。KyrofluxはFDDを介さないのでデータをそのまま読めます。したがって、一分間の回転数であるrpmはソフト的に指定するだけです(つまり原理的には3モードFDDを使わなくとも3.5inchの日本のフロッピーディスクを読めるはずです)。磁性をそのままアナログ的にストリームで読みます。dctというコマンドを使えばできます。
C:\Uesrs\maho> dtc -faaa.raw -v360 -i0

-v360は360rpmであること、-i0はストリームであることを指定します。オプションは順番を変えてはいけません。

とすると、ここまででフロッピーディスクのデータはトラックごとにビットをアナログ的に読まれてます。trackは84まで自動にキャリブレーションして読んでしまいます。不必要ならばトラックに対応するファイルを消せば良いでしょう。

次にこのままではエミュレータなどでは使えませんので、ポピュラーなD88形式に直します。フロッピーディスクの磁気データをそのままよんでるわけで、セクターサイズとか、データの密度(RPMと考えて良い)などは全く記録されないので、それは補う必要があるわけです。
HxC Floppy Emulatorを立ち上げます。
Load raw imageを押して、Track TypeはMFM (2DならばMF, 2DD, 2HDならMFM), RPMは360, Number of Track 80, number of side 2 sides, sector per track 8, sector size 1024bytesと設定します。
これは日本で使われてきた5.25inch FDDの2HDのデータです。ここらへんが各種違います。繰り返しますが、Wikipediaにあるのでその値を移せばよいです。

そして元に戻ってLoadします。このとき、トラックごとにファイルが有るわけですが、一番先の0.raw...などを読めばあとは勝手に拾ってくれます。
最後にExportすれば完成です。

ということで終わり。応用編として日本の3.5inchの2HDを2モードのFDDで読めるはずなんですが、フロッピーディスクそのものがないので、入手出来たらまたそのうちやります。お疲れ様でした!