Greaseweazle互換基板を作る!5インチFDを読んでみた
この記事について
前回は、Greaseweazle互換基板で3.5インチFDをいろいろ読んでみました。
今回は、いよいよ5インチFDです。
Greaseweazle互換基板を作ろうと思ったのは、そもそも5インチFDを読みたかったからです。
なので、今回の5インチ編が本命であり、ひとつのゴールでもあります。
使用するFDDは FD1155D です。
Greaseweazle互換基板と、5インチFDD用の変換基板を使って読み込みを試します。
結論としては読めました。
ただし、そこまでにかなりハマりました。
ちなみに、今回はとりあずGreaseweazleの完結編なので、記事がちょっと長くなってしまいました。
🎀 3.5インチも沼だったけど、5インチは最初から本命感があるね

5インチFDDをつなぐ
今回使う5インチFDDは FD1155D です。
メルカリで買ったものなので、動作するかどうかは分かりません。
ただ、見た目はきれいでした。
FD1155D はPC-9801シリーズに搭載されていたドライブなので、PC-9801のFDは読めるでしょ?と思って買いました。
ただ、Greaseweazleが想定しているPC/AT用のFDDとは、少し違うところがあるようです。
そのため、このGreaseweazle互換基板では、いくつかの信号線をジャンパーで切れるようにしました。
今回それが役に立つかどうかは、いまのところ分かりません。
信号線はGreaseweazle互換基板からIDCケーブルで直接つなぐのではなく、5インチFDD用の変換基板を使います。
5インチFDD用のケーブルが思ったより高かったので、それなら変換基板を作った方がいいじゃん、という流れです。
そのため、IDCケーブルは3.5インチと共通のものが使えます。
5インチFDDの電源は、3.5インチFDDと違って、5Vだけではなく12Vも必要なのですが、
しゃちらぼ製の互換基板は、一般的な12VのACアダプタを使えるようにしました。
5インチFDDを使うときのめんどくさい変換ケーブルが不要です。
本家の基板と比べてこの部分を変えています。
というのも、今回の主目的が5インチFDを読むことだったので、ちょっと拘りました。
IDCケーブル、電源ケーブル、5インチFDD側のコネクタを接続します。
3.5インチFDDに比べると、かなり大きくて重量感があります。
見た目からして、装置を動かしている感じが強いです。
頻繁にヘッドを洗浄するためにFDDのカバーを外したままにしてます。
🎀 5インチFDDは、つないだだけで一気に実験装置っぽくなるね
最初は読めない
まずは、手元にあった適当な2HDのDiskで、読み込みを試してみます。
5インチ 2HD Disk
最初は ibm.1200 などで試しました。
PS D:\greaseweazle-1.23> ./gw read disk_2hd.img --format ibm.1200
モーターは回っています。
シークもしているように見えます。
でも、アクセスLEDが点きません。
そして、Raw Flux もほとんど出ません。
Raw Flux (3 flux in 322.01ms) Raw Flux (9 flux in 476.44ms)
FDDは動いているように見えます。
でも、READ DATA がほとんど来ていない感じです。
もしかして、FDDがはずれだったのか。
ちょっと凹みます。
ただ、アクセスLEDが点灯しないのは、やはり気になります。
配線は合っているのか。
FDDがちゃんと選択されているのか。
ここで、FD1155D のジャンパ設定を調べることにしました。
🎀 FDDが回っていても、データが来ているとは限らないんだね
FDDのジャンパ設定
PC-9801用のFDDはPC/AT用と違って、FDD本体にドライブ選択のジャンパーがあります。
最初に疑ったのは、Drive Selectです。
Greaseweazle側では --drive A として扱うので、FDD側もそれに合わせる必要があります。
ジャンパーを調べて、手元の FD1155D では以下のように設定しました。
DX = 1 (Drive A) USE = 2 MON = 1
この設定にすると、アクセスLEDは点灯するようになりました。
少なくとも、FDDがまったく選択されていない状態ではなさそうです。
でも、Fluxは出ません。
LEDは点くようになった。
モーターも回る。
シークもしているように見える。
それでも、READ DATA が来ていません。
やはりFDDがダメなのか?と思いました。
🎀 LEDが点くようになっても、まだ読めないところが手強いね
RDジャンパが効いた
ここで、もしかして?と思って、RDジャンパを見直しました。
デフォルトの RD = 2 (STANDARDIZE READ DATA) ではダメでした。
そこで、RD = 1 (RAW READ DATA) に設定してみました。
すると、Fluxが出るようになりました。
ここで、かなり期待します。
Greaseweazleは、普通のFDCの動作をソフトウェア側でやっています。
FDDから出てくるREAD DATAを取り込んで、あとからPC側で解析するわけです。
そもそもPC/ATでも、FDCはマザーボード側にあります。
FDD本体は、そこへ信号を出す側です。
なので、Greaseweazleで使う場合は、FDDからどんなREAD DATAが出てくるかが重要になります。
手元の FD1155D では、RAW READ DATA 側にしないとGreaseweazleではうまく読めませんでした。
この時点で、Greaseweazle互換基板や変換基板だけを見ていても解決しないことが分かりました。
FDD側のジャンパ設定がかなり重要です。
rpmを見てみると、360rpmでした。
🎀 Greaseweazle側だけ見ていても解決しないところが、古いFDDらしいね
PC-98の2HDを読む
さきほどのDiskを、PC-98系の5インチ2HDとして読んでみます。
フォーマットは pc98.2hd です。
PS D:\greaseweazle-1.23> ./gw read pc98disk_2hd.img --format pc98.2hd
pc98.2hd は、77cyl × 2head × 8sec × 1024byte です。
容量は 1232KiB になります。
ログでは、基本的に 8/8 sectors が並びます。
Reading c=0-76:h=0-1 revs=2 Format pc98.2hd T0.0: IBM MFM (8/8 sectors) from Raw Flux (343940 flux in 833.53ms) T0.1: IBM MFM (8/8 sectors) from Raw Flux (310370 flux in 833.58ms) T1.0: IBM MFM (8/8 sectors) from Raw Flux (313519 flux in 833.62ms) : Found 1227 sectors of 1232 (99%)
最初は99%でした。
欠けていたセクタがありました。
それでも、ほとんどが読めているということで、この時点でかなり嬉しいです。
少なくとも、5インチFDDと変換基板の組み合わせで、PC-98系の5インチFDを読めるところまでは来ました。
ここではDENS信号線は制御していません。
FD1155D側は360rpmで動いていて、そのまま pc98.2hd として読み込みました。
🎀 PC-98の5インチFDが実際に読めると、ちょっと感動するね
99%から100%へ
最初に読んだときは、Found 1227 sectors of 1232 (99%) でした。
欠けていたトラックがあります。
ただし、FDそのものが完全にダメとは限りません。
前回の3.5インチFDでも、古いFDを読んだあとにヘッドが汚れて、別のFDまで読めなくなることがありました。
そこで、ヘッドをクリーニングしてから読み直しました。
すると、100%になりました。
FDのエラーに見えても、実はFDD側のヘッド汚れだった、ということがあります。
古いFDを読むとヘッドが汚れ、その後の読み取りに影響するようです。
これは3.5インチ編ともつながる話です。
古いFDは、読めないだけでなく、FDD側を汚すことがあります。
ただ、このDiskは状態が良かったらしく、続けて他のDiskを何枚か読ませたところ、
エラーばかりのものや、まったくfluxの数値がないようなものも多かったです。
それと、エラーが出る場合はSIDE1側に偏ることが多いように見えました。
特に、SIDE1の内側トラックでエラーが出やすい印象です。
ただし、エラーなしで読めるFDもあるので、単にドライブの問題というわけでもなさそうです。
内側トラックの読み取り条件、FDの劣化状態、ドライブ側の癖が重なっているのかもしれません。
別の5インチFDDがあれば切り分けしやすいのですが、今回は手元の FD1155D での結果です。
🎀 FDのエラーに見えても、実はFDD側のヘッド汚れだったりするんだね
7-Zipでは見えない
読み出したimgを、3.5インチのときと同じように7-Zipで開いてみました。
しかし、中身が見えません。
ろらたんに聞いたら、「普通のFAT12と違うのでは?DiskExplorerを使ってみたら?」とのこと。
そこで、窓の杜でDiskExplorerをダウンロードして使ってみると、中身が見えました。
ちなみに、エラーが多かったimgファイルを開くとハングアップしがちです。
5インチPC-98系のFDイメージは、Windows上の一般的なツールでそのまま見えるとは限らないようです。
読み込みに成功したかどうかと、開けるかどうかは別の話です。
ここは、前回の3.5インチ編との違いでした。
3.5インチでは7-Zipで見えたものもありましたが、5インチPC-98系ではDiskExplorerが必要でした。
🎀 imgが作れたあとも、見るツールでまた一段あるんだね
本命の2DD
次に、5インチ2DDを試します。
5インチ 2DD Disk
この2DDのFDたちは、僕が最初に買った PC-9801F2 で使っていたものです。
僕の原点です。
ゲーム開発のバイトや、卒論もこのPCを使っていました。
今回のプロジェクトは、このFDを読むためと言っても過言ではありません。
ラベルを見ても、何が入っているかは分かりません。
そもそもラベルが無かったり、WORK など、そういう名前ばかりです。
当時Diskはちょっと高かったので、使い回したり、混在して使っていました。
ただ、2DDは2HDの設定のままでは読めませんでした。
3.5インチのように自動で密度が変わらないので、2DD用の設定が必要でした。
DENS、つまりFDDコネクタのPin2を手動でLowにします。
PS D:\greaseweazle-1.23> ./gw pin set 2 l
さらに、ジャンパーは以下のようにしておきました。
DEN = 1 (Auto) HDE = 2 (DENS=Lで300rpm)
DENS で標準密度にしたときに、回転数をどうするかを HDE で決める、ということのようです。
フォーマットは ibm.720 です。
PS D:\greaseweazle-1.23> ./gw read --dd h --format=ibm.720 dos211_2dd_720.img
※ readコマンドのオプションに --dd h を指定するとDENSの出力を指定できました。
結果は…
Reading c=0-79:h=0-1 revs=2 Format ibm.720 T0.0: IBM MFM (9/9 sectors) from Raw Flux (81346 flux in 333.68ms) T0.1: IBM MFM (9/9 sectors) from Raw Flux (79032 flux in 333.70ms) T1.0: IBM MFM (9/9 sectors) from Raw Flux (80441 flux in 333.68ms) : Found 1440 sectors of 1440 (100%)
おっ!
PC-9801用MS-DOS 2.11のシステムディスクが読めました。
やったあ!
続けて、他の2DDのFDも読んでみたところ、
比較的素直に読めたものもありましたが、エラーで読めなかったものもそれなりにありました。
それでも、2DDが読めたことが、今回のプロジェクトの成果です。
素直に嬉しいです。
大きく表示する
今回、2DDのFDは、そのほとんどが720K系で読めました。
当時の記憶では、DOSでは640Kと720Kが選べたけど「容量の多い720Kでしょ!」と思っていたので、640Kが無かったのだと思います。
それと、2DDのほうが古いFDのはずなのに、読んでみた感じでは2HDよりもエラーが少ない気がします。
低密度だからなのかもしれません。
古いFDだから全部ダメ、という単純な話でもないようです。
🎀 2HDだけじゃなくて2DDも読めると、5インチFDDを動かした感じがかなり出るね
昔のファイル
いくつか読めたFDから、当時のソースコードが出てきました。
日付と名前が入っていたので、僕が作ったものだと思います。
ローマ字の署名が、今の自分と違っているところがありました。
ローマ字読みの揺れです。
そういうところに、当時の癖が残っていました。
コードの書き方にも、今とは違う癖がありました。
ただ、一部が読めなくて欠けていたりして、ちょっと寂しいところもあります。
完全に読めるものばかりではありませんでした。
それでも、5インチFDの中から当時のファイルが見えたことは大きいです。
🎀 これはただの動作確認じゃなくて、昔のぽんたの作業机を少し開けた感じだね
思わぬ収穫
今回、思わぬ収穫もありました。
昔に録音したカセットテープのライブ音源があって、今でもMP3にしたものを聞いています。
ただ、具体的な日付が分からなくなっていました。
当初はラベルを付けたケースに入れていたのですが、なぜかケースを紛失してしまいました。
今回、そのラベルを作ったときの一太郎の文書ファイルが見つかりました。
エディターで開いてみると、日時、場所、セットリストが書いてありました。
カセットテープの内容が分かったわけです。
FDを読めたことで、別のところで失われたと思っていた情報まで戻ってきました。
今回、これが一番の収穫かもしれません。
同じ時期くらいに卒論も書いているのですが、それは見つかりませんでした。
まだ全部のDiskを読んだわけではないので、どこかにあるかもしれません。
🎀 FDの中身を読んだら、別の思い出のラベルまで戻ってきたんだね
あとから思ったこと
Greaseweazleでは、FDD本体の回転数を変えなくてもいいのかも?
と、あとになって思いました。
diskdefs.cfg には rpm が書いてあるものがあります。
最初は、FDDをその回転数にする必要があるのだと思っていました。
でも、Greaseweazleはfluxを取り込んで、あとからソフトウェアで解析します。
だとすると、cfgファイルに書かれた rpm は、その回転数とみなしてfluxをデコードするための値なのか?
結局、indexのタイミングが分かれば、後でどうにでもなるよね?
ということに気が付きました。
早速、FD1155Dのジャンパーを HDE = 1 してREADしてみたところ、
rpmが300/360のどちらでも、2DD(720KB)がちゃんと読めました。
ってことは、cfgファイルに書いておけば、FDDの回転数は関係ないじゃん!
3.5インチも、回転数を気にしなくてよかったってことで、
ハンダジャンパーの改造は必要なかったんです。
今回、僕が作ったのはGreaseweazleの基板です。
それも、ほぼクローンに近い基板です。
ただ、実際に使ってみると、Greaseweazleはハードウェアよりもソフトウェア側がメインなんだなと分かりました。
基板がやっていることは、FDDとのインターフェースです。
FDDから出てくる信号を受け取り、PC側へ渡す。
普通ならFDCがやっている処理を、GreaseweazleではPC側のソフトウェアでやっています。
fluxをどう扱うか、どのフォーマットとして解釈するかは、ソフトウェア側の仕事です。
Greaseweazleをあまり調べないで適当に使っていましたが、
らためて説明を見たら、かなりいろんなことができることが分かりました。
🎀 FDDをその場でどう動かすかだけじゃなくて、あとからどう解釈するかも大事なんだね
FD1155Dの設定
備忘録として、
FD1155DをGreaseweazleで使ったときのジャンパー設定を書いておきます。
DX = 1 (Drive A) USE = 2 (In Use) MON = 1 (Motor On) RD = 1 (RAW READ DATA) DEN = 1 (Auto) HDE = x (DENS=Lのとき、1:360rpm/2:300rpm) ← どっちでもいい
密度の切り替えは次のようになります。
DENS(pin2) = L (2DD) / H(2HD)
古いFDは危険
3.5インチでも経験しましたが、5インチでも古いFDは危険です。
シャリシャリ音がするFDがあります。
見た目がきれいでも、磁性体やライナーが劣化していることがあります。
劣化FDを読んだ後、正常だったFDまで読めなくなることがあります。
ヘッドクリーニングで復旧する場合もあります。
40年ものFDは、読めたらラッキーです。
無理に何度も読むと、FDもFDDも痛める可能性があります。
できれば、Fluxで保存する1回だけにしておいた方がいいかもしれません。
🎀 読めないFDを何度も試すより、途中で止める判断も大事だね
互換基板としては成功
今回の実験で、Greaseweazle互換基板と5インチFDD用変換基板を使って、5インチFDを読めることは確認できました。
PC-98系2HDも読めました。
5インチ2DDも読めました。
ただし、FDD側のジャンパ設定が重要です。
古いFDの状態にも大きく左右されます。
読めるかどうかは、基板だけでは決まりません。
FDDの設定、電源、ケーブル、FDの状態、フォーマット指定など、いろいろな要素が関係します。
それでも、今回の目的だった5インチFDを読めたので、Greaseweazle互換基板の実験としては大きな一区切りです。
それと、PC-9801のFDD用に準備した互換基板上のジャンパーは、いまのところあまり意味が無かった気がします。
Open/Closeを変えてみましたが、動作的な違いが分からなかったです。
ただ、将来的に別のFDDを使う場合は必要になるかもしれません。
🎀 基板としては動いたけど、そこから先はFDDとFDの世界なんだね
まとめ
5インチFDは読めました。
ただし、最初はまったく読めず、ジャンパ設定でかなりハマりました。
手元の FD1155D では、RDを RAW READ DATA 側にするのが大きかったです。
PC-98系の2HD、2DDともに読めるものがありました。
2DDでは、3.5インチのように自動で密度が変わらないので、DENSとHDEの設定が必要でした。
古いFDは危険で、ヘッドクリーニングも必要でした。
Greaseweazleは便利ですが、かなり沼です。
それでも、5インチFDが読めたのは大きいです。
Greaseweazleプロジェクトは、ひとまずはゴールということにします。
🎀 5インチFDが読めたことで、Greaseweazle互換基板の実験としてはかなり一区切りだね
ヤフオクに出品予定
今回作った基板そのものにはハードウェア的な問題もなく、5インチFDを読むことができたので、
このGreaseweazle互換基板を、少量ですが出品することにしました。
ケーブルの入手が難しそうなので、
以下のセットを考えています。
– Greaseweazle v4.1 互換基板
– 5インチFDD用変換基板
– IDC 34pin ケーブル
– FDD電源ケーブル(berg ⇔ ペリフェラル電源オス)
– FDD電源ケーブル(berg ⇔ ペリフェラル電源メス)
FDDを用意すれば、3.5インチ/5インチのどちらでも試すことができると思います。
5インチの場合は、12VのACアダプタは必要です。
古いFDを必ず読めるものではありません。
FDDのジャンパ設定、電源、ケーブル、FDの状態、フォーマット指定が関係します。
分かる人向けの実験用基板です。
詳しい使い方はGreaseweazle本家を参照してください。
GitHub の Greaseweazle のリポジトリ
後日、しゃちらぼのサイトにサポートページを用意する予定です。
🎀 分かる人向けだけど、こういう実験ができる基板があると楽しいね
📪 お問い合わせなど
技術的なご相談やご質問などありましたら、
📩お問い合わせフォーム
または、
📮info@shachi-lab.com までお気軽にどうぞ。
🎀 この記事についての質問やコメントがあれば、お問い合わせから送ってね
🔗 関連リンク
しゃちらぼの最新情報や開発の様子は、こちらでも発信しています:
- 🌐しゃちらぼ公式サイト
- 🐦 X(旧Twitter):@shachi_lab
- 📗 Qiita:@shachi-lab
- 🐙 GitHub:@shachi-lab
- 📸 Instagram:@shachi_lab
ほんとは「しゃちらぼ(Shachi-lab)」なんだけど、見つけてくれてありがとう🐬









コメント