2016年09月22日

MSX用FDD

うちにはMSXロゴの入ったパソコンが3台あります。
1つ目はPanasonicのMSX2
2つ目はSONYのMSX2+
3つ目は1chip MSXです。
1つ目はいとこのお兄さんからの貰い物、2つ目は中古屋さんでジャンクで、
3つ目は普通に注文して買いました。
1つ目に、カートリッジに刺すタイプのFDDユニットも付けて貰ったのですが、
そのドライブが調子悪く、なかなかゲームがうまく動かない、という問題がありました。
中身のドライブはベルト方式ではなく現在のものと同じDDタイプです。
ですのでベルトの寿命劣化というわけではありません。2つ目のものは内蔵FDDが
ありますが、こちらも正常に動作しません。
どちらのドライブも、蓋を開けて中を見るとAT互換機と同じ形状のドライブが
入っています。当時は知識もなかったのでAT用のものに付け替えれば動くように
なるのではないかと、いろいろと実験してみましたが駄目でした。
結論から言うと、READY信号ではなくDiskChange信号が出ているから、なのですが
当時はまだインターネットからの情報もあまり無く、途方に暮れていました。
ですが、時は流れインターネットから、READY信号をとりあえずディスク検出スイッチ
から引っ張れば大丈夫という知識を得たため、現在は普通に動いています。

なのですが、それだけ苦労をしたためMSX用FDDには思い入れがあり、先日
秋葉原のBEEPさんでAT用と思われるFDDを使用したMSX用外付けFDDユニットが
発売されているのを見てから、うちのFPGA版MSX(1chipと、DE0でも移植されたものを
使ったことがある)のFPGAの中にFDCの機能を入れて、他にも僕みたいに
MSX用FDDゲームはたくさん持っているのにFDDが死んでて遊べない人のために
何とか出来ないか、考えています。
ハードウェアは、PC88やX68kで実績があるuPD765互換IPがそのまま使えると思うので、
あとはデュアルポートRAMを共有メモリのような形にしてFDDユニットとしての
スロットにでも入れて、もう片側はFDCから直接読み書き出来るようにハードで
組めば、そんなに難しくはない気がしますが、MSXの各デバイスはハードの差を
BIOSが吸収すればいいので、デバイス毎に異なるハードウェア構成です。
従い、実機からdisk biosを吸い出しても、それと異なるハードウェア構成の
FPGA版FDCでは動作しないはずです。
CP/Mでは、OSがBIOS/BDOS/CCPの3ブロックに分かれており、ハードの差異はBIOSが
吸収します。CP/Mの場合、ディスク関係はBIOSにはセクタ単位で読み書きできる
プログラムだけハードに合わせて作れば、あとはBDOSがやってくれるようです。
MSX用DISK BIOSが同じようなモジュール構成になっていると簡単なのですが、
MSX用FDDカートリッジには、刺せばDISK BASICが使えるように、FAT読み書きまで
出来るかなりの高機能なプログラムが入っているようです。セクタ読み書きであれば
簡単なプログラムで済みますが、FATに対応させるとなると相当な量のコードを
書かなければならないでしょう。
そうなると、FDDユニット内のfdc biosから機種依存部分ではない共通部分だけ
抜き出して、機種依存部分は一から書き直す、という形が簡単だと思いますが、
そもそもMSXのdisk biosはそのように作られているのでしょうか。
posted by プー at 02:12| Comment(0) | MSXネタ | 更新情報をチェックする