FPGAでFDDコントローラを作る (4) いろいろなFDDで検証
前回で3.5インチFDDから1トラック分のバイトデータを読み出すことができるようになりました。今回は、ドライブを変更しても同じようにデータを読みだすことができるかを検証していきたいと思います。
5インチ 2HD FDD
最初は、2HDの5インチFDDで検証していきます。使用するFDDはMB-S1モデル40に搭載されているもので、機種は日立のHFD516Cというもの。まずはS1からドライブを取り出し設定を確認します。
プルアップ抵抗はドライブ0側だけについていてドライブ1側にはありませんでした。ドライブ0についている抵抗値は150Ωとかなり電流が流れてしまうようなので、この抵抗は使わず手持ちの1kΩの抵抗をつけることにしました。
3.5インチFDDとはいくつか信号が異なりますので確認します。異なるのは2ピンのMODE SELECT信号がない、4ピンにHEAD LOAD信号が追加されている、34ピンがDISK CHANGE信号からREADY信号になっている、となります。これをもとに回路図も少し修正しました。
回路図ではDRIVE SELECT 0に信号を入れていますが、この場合はFDDのジャンパピンをDRIVE 0に変更する必要があります。使用しているのはドライブ1側のFDDなので、DRIVE SELECT 1に信号を入れればいいでしょう。
FPGAの実装も信号に合わせて変更します。READY信号はそのまま準備完了の判断に使用する、HEAD LOAD信号はデータリード時にONにする、ぐらいかな。ちなみに、HEAD LOAD信号とはヘッドをFDの磁気面に接触させるかどうかを制御するもので、データリード・ライト時はこれをONにする必要があります。
--
それでは実際に接続します。ケーブルはPC用で5インチ用のエッジコネクタが接続できるものを使います。FDDのエッジコネクタには切り込みがあるので逆挿しは出来ないようになっています。
まずは、NEC PC-98でフォーマットしたディスクを使って検証します。モータを回してヘッドを動かしてみます。こちらは特に問題なく動きます。しかし、FDDのアクセスランプがつかない。データのリードも問題なくできましたが、やっぱりFDDのアクセスランプがつかない。原因がよくわからないので、試しにロジックICを74LS05から74LS06にしたところ、あれ!?アクセスランプが点灯するようになりました。LS05だと電流が少なすぎてアクセスランプがつかないのかな?う~ん、わかりません~。
このFDDは回転数360rpmなのでデータサイズは約10416バイトとなりますが、写真を見るとだいたい合っていますね。S1用のFDDですが2HDの規格に違いはない、ということでPC-98のディスクも問題なく読めました。
次は、S1 DISK BASICのディスクで検証します。このディスクはトラック0&サイド0だけが単密度(FM方式)で記録されているので、データセパレータの周波数を半分にし、さらにGAPフィールドなどのフォーマット判定もFM方式に従うようにします。これらは制御プログラム側から切換できるようにします。
中身を確認すると、FM方式でフォーマットされているデータが取り出されていることが分かります。これで、5インチ 2HD FDDについては、問題なく動作したことが確認できました。
5インチ 2D FDD
次は、2Dの5インチFDDで検証していきます。使用するFDDはPC-8801FHに搭載されているTEAC FD-55BV。
写真はドライブ1側のものですが、ドライブセレクトのジャンパピンはドライブ0になっていました。また、プルアップ抵抗は計測したところ約1kΩでした。
信号線も確認します。5インチ2HDとの違いは4ピンのIN USE信号だけですね。前回、DRIVE SELECT 1に信号を入れている場合は、DRIVE SELECT 0に変更するか、FDDのジャンパピンを切り替えます。
FPGA側の変更点はIN USE信号だけですが、これはFDDのアクセスランプを制御しているだけのようなので、5インチ2HDで使っていたHEAD LOAD信号をそのまま入れることにします。
--
ではn88-BASICでフォーマットしたディスクを使って検証します。モータを回してヘッド移動、トラックリードも問題なく動作しました。ディスクは2Dなので、データサイズは約6250バイトになりますが、写真だとちょっと多いですね。中身は問題なかったのでよしとします。
5インチ 2D FDDについても問題なく動作したことが確認できました。
3インチ コンパクト FDD
最後は、貴重(?)な3インチコンパクトFDDで検証していきます。使用するFDDはシャープX1Dに搭載されていたものですが、この型番からは情報を得ることができませんでした。使用しているICが日立製なのでおそらく日立のOEM品ではないかと思います。
ドライブセレクトはディップスイッチで選択できます。また、プルアップ抵抗は計測したところ約1kΩでした。あと信号線ですが、このFDDは5インチ2Dと互換性を持たせてあるはずなのですが確証がありません。テスターでFDDの各ピンの導通状況を調べると5インチ2Dと同じなので、同じ配線でいけると判断しました。
--
では検証します。使用するディスクはX1Dではなくてベーシックマスターレベル3用のDISK BASICです。これは片面単密度ですのでそれに合わせてFM方式でデータを取るように制御します。
モータを回してヘッド移動させます。ん、時々ヘッド移動が反応しないことがあります。STEPパルス幅が少し短いようなので長くしてみたところ、反応するようになりました。その後、トラックリードは問題なく動作しました。
データサイズは2Dの半分、約3125バイトになりますが、やっぱりちょっと多いです。まあ、データは問題なく取れているので気にしないことにします。
さて、ディスクは片面なのでB面(裏面)側も読み出したいのですが、使用しているFDDは両面用なのでB面を表にしても奥まで入りません。A/B面をどうやって判断しているのかと調べてみると、どうやらディスク上面にあるくぼみで判断していることが分かりました(下図参照)。ここをふさぐことでB面を表にして入れることができました。
全トラックを取り出す様子を動画にしてみましたので興味ある方はどうぞ。
【動画】5インチ2HDフロッピー 動作検証 (YouTube)
【動画】3インチコンパクトフロッピー 動作検証 (YouTube)
以上、3種類のドライブを使用してトラックデータの取り出しが行えるようになりました。これでディスク吸い出し装置としては完成です。あとは、書き込みも出来ればさらに完ぺきですが。。。(つづく)
参考文献
- MB-S1 30/40 サービス技術資料, 日立
- 日立評論 VOL.66
- TEAC FD-55BV-06 MINI FLEXIBLE DISK DRIVE SPECIFICATION
- PHASE 1983年第02号, 環コミュニケーションズ
FDDコントローラを作る (3) ←前 | 次→ FDDコントローラを作る (5)