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ネタ | 更新情報をチェックする

2016年09月03日

MPUコア変更完了、しましたが

MPUコアをtg68からao68000に変更の作業が一段落しました。
動かない原因は、DMA中にもMPUがデータバスを切り離さなかったことと
割り込みとDMAが同時にアクティブになったときにDMA転送のACKが
INTへのACKと認識され、DMA転送のデータがINTベクトルと認識されていた
ということでした。
この部分修正し、Human68kは無事、起動し、SX-WindowもKO Windowも
起動するようになりました。が、予想以上に遅いようです。
tg68を10MHzで動作させたときにはKO WINDOWのEPSの値が800を超えるのですが、
ao68000 20MHzでは400にも満たない数値です。
速度アップも見込んだ変更だったので残念です。

上記、分かった問題のうち、DMA中にMPUがバスを切り離さないのは、
tg68を使ったものでも同じ設計になっていましたので(tg68はASをネゲート後、
一度バスをリードに変えるらしく、そのタイミングでDMA転送に切り替えるため
tg68のクロックイネーブルを切っているのでうまくいっていたと思われる)
気持ちが悪いのでこの部分は修正しようと思います。
posted by プー at 18:23| Comment(0) | X68000 | 更新情報をチェックする

2016年09月02日

MPUコア切換えを行っているのですが

tg68からao68000へのMPUコア切換えを行っているのですが、なかなか何故か
上手くいきません。
バス幅変換も、割り込み関連もそこそこ上手くいっているように見えるのですが、
OSのbootにはまだたどり着けません。
SRAMの設定で内蔵ターミナルが起動する設定にし、bootデバイスを全部
無しにすると、ちゃんと内蔵ターミナルが起動しますが、
HDDやFDDから起動しようとすると毎回違った動作をしています。
違った動作というのは、エラーで止まったり、BOOTセレクタが表示されたり。
BOOTセレクタというのは初めて見ました。
FDD/HDDでエラーが発生し、ROMでは発生しないという事は恐らくDMA関連では
ないかと予想するのですが、DMA関連は特に変更が必要ではなさそうだったので
何も手を加えていませんし、SignalTapIIで見た範囲では、DMAは正常に動作して
いるように見えます。
ただ、FPGAのRAM容量から、そんなに沢山のモニタが出来るわけではないので
軽く見た範囲だけですが。
posted by プー at 15:37| Comment(0) | X68000 | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。