Nextorを使って似非RAMディスクが動きました

前回のエントリからだいぶ時間が空いてしまいました。前回似非RAMディスクのハードウェアを作ったので、今回はMSXで動かすところを書いていこうと思います。その際にDISKBIOSがなくても(FDDなしの機種でも)似非RAMディスクを作ることができたので、その方法を記載します。

前回のエントリはこちら

一般的な手順として、似非RAMディスクを使えるようにするにはMGINST.COMで似非RAM用のカーネルを似非RAMディスクに書き込む必要があります。現在似非RAMディスク関係のツールはサイバラさんの似非職人工房・非公認出張所でダウンロードできます)

MGINST.COM を実行するにはDISKBIOSのイメージが必要になります。DISKBIOSは呼び方がまちまちで、DOS1カーネル、DISKカーネル、DISKROMなどとも呼ばれるようです。

MGINST.COMは、似非RAMディスク、似非SCCディスク、MEGA-SCSIにシステムをインストールするソフトです。

インストールにはディスクROMのカーネルファイルが必要です。
カーネルファイルの作成には、KSAVER.COMを使用して下さい。

MGINST.DOCより引用

DISKBIOSが必要な理由は、オリジナルのDISKBIOSにパッチを当てることでFDDへのアクセスをRAMへのアクセスに変換しているためです。すごい技術ですよね。そのためDISK BASICからもMSX-DOSからも普通のフロッピーと同様の使い方が可能になっています。まじすごいです。

ところで私が持っているMSXはPanasonicのFS-A1でFDDがないため、DISKBIOSが載ってません。MSXのBIOSイメージはググればいくらでも転がってはいるものの、違法コピーですので使用するのはライセンス違反となります。

そこで目をつけたのが konamiman さんが開発している Nextor です。MSX-DOS2互換のOSとして開発されており、DOS2だけでなくDOS1のカーネルとしても動作するとのことです。このNextorとNextorPatcherを使って似非RAMディスクを動作させることができました。

…続きを読む

似非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の変換アダプタを作成します。

Nemeae XGecu -T48 ユニバーサル プログラマー 16PIN 機能 ISP USB プログラマー
Nemeae
…続きを読む