似非RAMディスクを作りました

昔憧れていた似非RAMディスクを作製しました。出来上がるまでに色々あったのでメモがてら記載しておこうと思います。

似非RAMディスクとは?

似非職人工房の辻川さんが考案されたもので、メガロムゲームのROMをSRAMに置き換え、Disk BIOSにパッチを当てたものをSRAMに書き込むことで、Ramdiskのように使えるようにしたものです。

メガロムコントローラによって最大容量は変わりますが、最大1MBのSRAMを搭載できるようです。MSXで使えるフロッピーディスクが 2DD 720KBなので、それ以上の容量を高速アクセスできるのは魅力的です。

個人的に似非RAMディスクで一番すごいと思っているのは、Disk BIOSに独自にパッチを当てて、FDDアクセスをSRAMアクセスに完全に置き換えているところです。BASICからもMSX-DOSからも全てのディスクアクセスが問題なく行えるように、ソース非公開のDisk BIOSを改造するのは至難の業だと思います。すごい人がいるものですね。

似非RAMディスクを作るねらい

私が持っているFS-A1にはFDDがついていません。なのでPCとデータのやり取りをする手段が一切なく、PCに残っている過去のMSXのソフトを動かしたり、今後PCで開発したソフトを実機で動かすことができない状態です。

そこで似非RAMディスクを作製し、先日作ったROMカートリッジリーダ/ライタを使って似非RAMディスクにROMイメージを書くことでPCとMSX間でファイルのやり取りができないかと考えています。

ちょっと話は飛ぶのですが、(MSX界では世界的に有名な)konamimanさんがMSX-DOS2互換のOS、Nextor を開発・公開されています。そして、(MSXの改造で有名な)にがさんがこの Nextor にパッチを当てて似非RAMディスク用のイメージを作成する NextorPatcher を公開されています。

NextorPatcherでは、あらかじめROMイメージにファイルを組み込むことができます。この機能を使えば、PCのファイルをMSXに受け渡すことができそうです。これがまずやりたいことです。

MSX→PC側はSRAMイメージからファイルを取り出すための開発が必要になりますが、PC→MSX側の受け渡しさえできれば技術的なハードルはめちゃくちゃ下がります。

ということで似非RAMディスクを作ってなんとかPCからMSXにファイルを受け渡すことが目的です。

…続きを読む

メガロムコントローラを制御してみました

前回MSXのROMカートリッジのリーダーを作成しました。メガロムではないROMカートリッジはそのままアドレスを指定するだけでデータが読み出せますが、メガロムのゲームではメガロムコントローラを制御してページ切り替えを行ってROMにアクセスする必要があります。

今回はメガロムコントローラを制御してみます。

前回の記事はこちら

メガロムコントローラとは?

Z80はアドレスバスが16bitのため、アドレス空間が64KB(512Kbit)までしかありません。MSXでは64KBを4つのページに分割して、スロットごとに切り替えられる仕組みがあります(詳細は前回の記事を参照ください)

4つ全てをカートリッジのROMにすることもできますが、RAMなどのワークエリアが必要なため、基本的には0x4000〜0xBFFFの32KB分をROMに割り当てて使用するように設計されているようです。

…続きを読む

MSX用ROMカートリッジリーダを作りました

以前作ったROMリーダを応用して、ROMカートリッジのリーダ&ライタを作ってみました。前回同様、I2C用のIOエキスパンダを使って、MSXカートリッジの信号線を制御することでカートリッジを分解せずともROMを読み出せるようになりました。

Read制御だけでなく、Write制御もできるようにしたため、メガロムのゲームも吸い出すことができます。

以前ブレッドボードで作ったROMリーダの記事はこちら

MSXカートリッジの信号線

MSXカートリッジの端子部分には50本の信号線が通っています。50本の信号線のアサインは以下のサイトに載っています。

これとZ80 CPUの信号線を見比べてみます。

電源など一部を除いた信号線をまとめたものが以下の表です。これをみると、Z80 CPUのほとんどの信号線がカートエッジコネクタに接続されていることがわかります。

Z80の信号線カードエッジコネクタ
A0-A15あり
D0-D7あり
/M1あり
/MREQあり
/IORQあり
/RDあり
/WRあり
/RFSHあり
/HALT
/WAITあり
/INTあり
/NMI
/BUSRQ
/BUSAK
/CLKあり
/RESETあり

カートエッジコネクタに出ていない Z80 信号線は、/NMI, /HALT, /BUSRQ, /BUSAK のみです。Z80で実現できることは MSX ではほとんどのものは実現できそうです。MSXの仕様策定当初から、ゲームができるだけでなく、HWの拡張性に重きをおいていたことが伺えます。

/BUSRQ, /BUSAK は Z80 からバスの制御権を取得する信号線ですが、これが使えないということはカートリッジ側からDMAでデータをメインRAMに転送するというような使い方はできないようです。バスの主導権はCPUが常に握っているということですね。

…続きを読む

FS-A1のBIOSをFlashに置き換えてみました

FlashとFlashライタが手に入ったので、試しにFS-A1のBIOS ROMをFlashに置き換えてみました。

FS-A1のBIOSは128kB (1MBit)のマスクROMが使われています。ちょうど都合よく同じ容量の SST39SF010A が誤って送られてきたので、このFlashに BIOS を複製して起動させてみようと思います。

ということで取り外すのは↓このマスクROMです。

裏側からハンダ吸引器で取り外し始めたのですが、FS-A1はスルーホール基板ではないので、吸引器を使うまでもなく、ハンダ吸い取り線でめちゃくちゃ簡単に取り外すことができました。スルーホールの取り外しの苦労を覚悟していたので拍子抜けでした。

↑こんな感じで簡単に取り外せました

取り外した部分には28PinのICソケットをはんだ付けしました。

これで差し替え自由になりました。

続いてFlashROM→MaskROMの変換アダプタを作成します。

created by Rinker
Generic
¥1,404 (2024/07/26 22:12:43時点 Amazon調べ-詳細)
…続きを読む

AliExpressで買ったFlashを読み出してみた

Linuxで Xgecu T48 が使えるようになったのでAliExpressで購入した 4Mbit Flash の SST39SF040 (一つはSST39SF010) と GAL の GAL16V8、ATF16V8 を読み出してみました。

見た目がもう↓のような新品じゃない感じだったのでリサイクル品だろうなとは思っていますが果たして・・

Flashの読み出しを行うにはXgproを起動して左上の「Select IC」から読み出すチップの種類を選択します。

左の Search Device でデバイスを絞り込むと探しやすいです。今回はSST39SF040を選択します。

選択したら、「Device」メニュー→「Read」か、ツールバーの「Read」アイコンを押下すると以下のようなダイアログが表示されます。

右の図のように本体に SST39SF040 をセットします。図に記載のように、ゼロプレッシャーソケットのレバーが下側に来るように置いて、ICを上に寄せて配置します。本体にUSBケーブルが刺さる側が上(1Pin側)です。図で表示してくれるので親切ですね。

Read ボタンを押すと読み出しが開始されます。

しばらくすると・・・

…続きを読む