かずの不定期便ブログ

備忘録代わりに書きます

FDDエミュレータFDX68の導入

目次

X68KFDDエミュレータのFDX68及びFDD-SWAPPER FDS+を繋ぐ

 FDX68とはRaSCSI作者と同じGIMONSさんが作成されたFDDエミュレータです。
 http://retropc.net/gimons/fdx68/

 フロッピーイメージをSDカード上においておけば、X68Kから実フロッピーの様に扱えるので、わざわざ実フロッピーを刺さなくても運用が出来ます。
 X68KにはFDイメージを扱う事が可能なフリーソフト、2HDSIM.xや 2HDboot.xがあります。当初これで充分だと思っていたのですが、2HDSIM.xはイメージが連続したセクタに格納されていることという制限。2HDboot.xはプロテクトの施されたゲームなどのイメージデータが扱えないこと、何よりいちいちHDDからブートして、イメージ指定で再ブートさせるというのが面倒だというのがあります。というのは多分建前で、そんな面倒に感じるほど頻繁に使わない。。。ので技術的な興味が一番大きいかと。。。
 FDS+とはMichaelさんが作成された内蔵ドライブとエミュレータのドライブのドライブ番号を入れ替えることが出来る基板で、X68Kに付いている外付けFDDのインターフェース(基板)を差し替えて使います。またFDX68と繋げるのに必要なケーブルも付属します。+付きだとFDX68のコントローラモード(つまりFDX68でフロッピーイメージをダンプが出来ます)もサポートします。
https://www.michaels-home.com/x68000%e3%82%b7%e3%83%aa%e3%83%bc%e3%82%ba%e7%94%a8fdd-drive-swapper/


 以上、2セットを手に入れれば工作不要で、すぐにFDイメージを扱えます。

FDX68の基板を作成する

 すぐに始められると書きながら僕はFDX68についてはキット版を買ったので、はんだ付けが必要です。作成マニュアルは非常に丁寧に作り方が記載してあるので、迷うところは全くないのですが、やはりチップ抵抗とチップコンデンサのはんだ付けが上手くできるか不安でした。。youtubeにこの手のはんだ付け方法が上がってはいるものの、そんなにうまくできるわけもなく(練習もしてないしね)、完成したのが以下の写真です。恥ずかしいほどのくそ出来栄えです。素人目にも半田が多すぎです。

f:id:spend-carefree:20200106222955j:plainf:id:spend-carefree:20200106222945j:plain
ショートしていないかはテスターで確認しています。動いているので良しとしてますが、コンデンサは仮に基板と繋がってなくても動いちゃう気はします。
チップ部品に関わらず、はんだは盛りすぎてます。RaSCSIにしろFDS+にしろ半田付けがきれいです。このレベルに達したいです。
 意外に苦労したのはジャンパを刺すためのピンヘッダの取付です。「ジャンパが刺さるようにピンが揃うように」と指示があるのですが、これが難しい。。。一回完全に斜めではんだ付けしてしまい、やり直すためにピンヘッダを取るのに非常に苦労しました。ピンヘッダのプラ部分を破壊してピンだけ状態にすれば容易に取れました。もしこの記事を読まれて同じ目にあった方は参考に。。。ジャンパを繋げて位置を固定してからはんだ付けするときれいにヘッダが立ちます。

X68Kにつないで動作チェック

 FDS+の接続マニュアルには動作チェック方法が記載されており、問題なく動作することが分かりました。幸先いいです。
 ここで作業が終わればブログに書くこともなかったと思うのですが、ちょっと運用上の問題が発生しました。次章に記載します。

FDS+の運用で気が付いた事

 エミュレータ―モードとコントローラモード(FDをダンプするモード)を切り替えるスイッチがありますが(下の写真)、蓋を閉める際にコネクタから一旦外すと思いますが、外した状態だとコントローラモードになる様で動作しないので注意が必要です。使用時は繋ぎましょう。

f:id:spend-carefree:20200119111214j:plain
コントローラモード切替スイッチ

4driveになることが問題です

 当たり前なのですが、FDX68を繋ぐことで、内蔵ドライブと合わせて合計4ドライブになります。僕の環境ではこれは問題でした。
 何が問題かというとautoexec.batには、FDが2台であることを前提にドライブ指定でPATHを切ったり、コマンドを呼び出しています。
 autoexec.batだけでなく、ゲームなどを動作させるbatファイルにもドライブレターが記述してあるのです。
 という理由でFDX68を繋げると起動しない。。。
 じゃー、書き換えればいいじゃないかだと思いますが、それだとFDX68を繋いだ場合と繋がない場合でドライブ名がが変わっちゃうので、それを吸収するようにbatファイルを書き換えないといけないです。自分にはそれを解決できるほどのHuman68K力は持ち合わせてないです。以下の写真で左側がFDX68をつなげた状態。右側が繋げない状態です。hドライブに格納されているファイルをh:\xxxx\xxxの様な感じで呼び出してます。

f:id:spend-carefree:20200107232423j:plainf:id:spend-carefree:20200107232433j:plain
左:FDX68を繋いだ時、右:FDX68を繋がないとき

強制2drive化

 というわけで思い浮かんだのが強制2drive化です。DRIVE SELECT2, DRIVE SELECT3, OPTION SELECT 2, OPTION SELECT3を無効化出来れば行けるのではなかろうかと思いました。
 FDDインターフェースはオープンコレクタになっており、プルアップされています。信号の駆動側はアクティブレベルは"L"で、非アクティブ時はHi-Zになります。
 コントローラ側はDRV_SELでターゲットドライブを決めてドライブ側が"L"レベルを駆動します。対応するドライブのみが"L"をドライブしてコントローラ側へ通知します。DRV_SELで非選択なドライブは何も信号を駆動していないので信号線が共有されていてもぶつかることなく信号のやり取りが出来るという仕組みです。よってコントローラ側(X68K)が出すDRVSEL2/3,OPTSEL2/3をドライブに繋がなければ、当然誰も反応しないので繋がってないのと等価になるんじゃぁないかと考えました。
 以下の様な回路になるケーブルを作成します。本ケーブルを本体とFDS基板を繋ぐケーブルと差し替えます。この対応を行うと4ドライブを扱えなくなり、FDX68ドライブか内蔵ドライブか?の二択になりますが、特に問題は思い浮かびません。VCCはFDS基板から引っ張ることにします。プルアップを行う事でドライブNo2,3は強制非選択とします。
f:id:spend-carefree:20200106232610p:plain
 4本の信号をプルアップしますが、抵抗は1KΩの一個しか使いません。4本とも同じ抵抗に繋げます。独立して動作するわけではないし"L"駆動されることもないので、これで問題ありません。一応抵抗値はFDX68を倣いましたが、"L"駆動されないので、適当でよいと思います。

ケーブルの作成と本体への収納

 34ピンフラットケーブル、34ピンコネクタのオス、メスを調達する必要がありますが、個別でそろえると割と値段がします。更に作成には圧着作業が必要になります。専用工具も万力もないので、失敗リスクが付きまといます。内部接続用のFDDケーブルを買う事にしました。現在でも新品が手に入ります。僕は「COMON(カモン)のFDD-15」を購入しました。送料込みで400円と少し超えるくらいでした。ただし流通しているものは、ほぼ10ピンから16ピンがひねって結線されているねじれケーブルです。ストレートケーブルは手に入りませんでした。このねじれ部分を切ってストレートケーブル化する工作をします。但し14ピンはDRVSEL3でプルアップ対象なので結線はしません。そのほか5,6,7ピンがプルアップ対象なのでカットします。
 買った後、気が付いたのですが、本商品には逆刺し防止用の側面に突起がありません。またFDSに繋ぐ側はストレインリリーフが付いたコネクタが良かったのですが、本商品には付いてません。前者はコネクタ差し込み時には十分、方向に注意する必要があります。後者については、なくても繋げられますが、ケーブルが根元でまとまらない所為か、そのケーブルの張力と表現すればよいのか、その力のために、上に乗っかるHDD基板を収める際に若干窮屈になります。FDS基板には使用しなかったストレインリリーフが一個付属していたので、これを利用しました。出来ればこの辺りは付いているものを買った方が良いです。
▼購入したFDDケーブル(ねじれあり)

f:id:spend-carefree:20200107232552j:plain
購入したFDDケーブル

FDDケーブルを雑にカット

f:id:spend-carefree:20200107232617j:plain
ケーブルカット後

▼ケーブル完成!

f:id:spend-carefree:20200107232645j:plain
ケーブル完成
 FDDケーブルのストレート化と5,6,7,14ピンをプルアップをしてます。
 線同士のはんだ付けに苦労しました。。。スキル無しです。手が二本じゃ足りない、利き腕ではんだごてを持つと、利き腕じゃない方では線材の抑えが上手くできない。。。
 写真じゃ分からないと思いますが、青のケーブルがプルアップラインで先端にピンを付けていますが、その手前の黒いチューブの中に抵抗が収まってます。プルアップするのはFDS基板側なので、本体に繋がるコネクタ方向はオープン処理です。


FDS基板からVCCを緑のケーブルで取り出す(左)、ジャンパでVCC線とプルアップ線を繋ぐ(右)

f:id:spend-carefree:20200107232711j:plainf:id:spend-carefree:20200107232720j:plain


▼本体に収める
f:id:spend-carefree:20200107232750j:plain
なんとか蓋は閉まりました。そのうちケーブルに折り曲げ癖がついて閉まりやすくなるでしょう。

動作チェック

 本当は蓋をする前にチェックしてますが。
 2ドライブ化出来ました。FDXを繋いでいるときは、スイッチを上向きで内蔵FDDの2台のみが、下向きにするとFDX68の2driveのみが認識されてます。一点以下の問題が発生しました。
 スイッチを下向きにした状態で電源ONでは起動しません。画面が出ないです。Xellentメニューが出ない事からSRAMでのプログラム実行以前で何か阻害されているようです。この固まった状態でスイッチを上向きにすると動き出します。電源ON後、リセットによる再起動はスイッチが下向きでも問題ありません。問題が出るのは電源スイッチONの時のみです。地味に面倒くさいです。
 X68側からするとdrive2,3に何も繋がってない状態となんら変わらないハズなんだけど、スイッチをFDX側に倒した時のみの問題であることから、内蔵FDDが見えているときとは何らかの信号の状態が違うのでしょうけど。。。今は分かりません。いずれ原因を探求したいと思います。とりあえずこのままでも大きな問題はないので、これで運用します。FDX68側からのRDY信号をカットすればいいのかなぁと予測を立ててみます。


では、今日はココまでです。
また何か進捗がありましたら記事を書きます。

前回の記事
spend-carefree.hatenablog.com