レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

MSXに64KバイトのSRAMを増設

2025年02月26日 | 電子工作

前回までにファミコンとスーパーファミコンのカートリッジから取り出した2個の32KB SRAM。これらを使ってMSXの64KB SRAMボードを作ります。

アドレスデコード回路はシンプルです。

アドレスデコードの出力をSRAMのCE(またはCS)に入れる以外は、MSXパスのA0~A14とD0~D7とWR、RDを2つのSRAMにそれぞれにつなぐだけです。SW1とSW2の短絡も忘れないようにします。

電源は切り替えスイッチでMSX本体と外部電源を選択できるようにします。また、SRAMにライトプロテクトをつけたいので、WRを切り替えスイッチでMSXバスと切り離してプルアップ出来るようにします。

回路は難しくありませんが配線が多くて大変です。間違えると修正が面倒なので慎重に正確に配線していきます。途中何度もテスターでショートしていないか確認しながら作業していきました。

少しでも配線を楽にするため基板は電源ラインがプリントされているものを使いました。昔に使った物を再利用しているので汚れていますが、これが一番使いやすかったのです。


写真の角度では見えませんが各ICに0.1μFのパスコンがついています。

基板についているスイッチが電源の切り替えと、ライトプロテクトの切り替えスイッチです。ロジックICはTTLタイプが手元にあったのでMSXバスにそのまま直結しています。TTLなのでそれほど気を使わなくてもいいとは思いましたが、未使用の入力端子は全てGNDに接続してあります。

基板をMSXに差し込んでもかさばらないようにしました。μP-1 ユニバーサル テストボードと併用しても邪魔になりません。

 

最後にテスターと目視で配線を再確認してからMSXのスロットに差し込みます。電源を入れると無事に起動しました。

でもまだRAMとして動作しているかは分かりません。”TINY SLOT CHECKER for MSX”で確認してみると、

ちゃんとSLOT2の64KBの空間がRAMになっていました。MSX内蔵RAMがあるSLOT3の拡張スロット2より若い数字になっているので、システムRAMとして使われています。

MSX-BASICが正常動作していたので、8000~FFFFのSRAM32KBは問題なさそうです。BASICでは使われない、もう一つのSRAMも正常に動いているのか確認します。

まずはこちらのサイトからゲームをダウンロードさせてもらいます。素晴らしいことに昔のパソコン向けのゲームが沢山あります。この中からMSXのROM形式のCAVITをダウンロードしました。昔好きだったDigDugに似ているので選びました。このROMはアドレス4000(ページ1)に読み込んで実行する物なので、BASICで使っていない方のSRAMのテストが出来ます。

次に、μP-1 ユニバーサル テストボードで作成したSDドライブのROMファイル実行機能を修正して、SLOT2のRAMにロードして実行できるようにしました。

ダウンロードしたゲームROMをSDカードに書き込んで、SLOT2にロード&実行してみると、


正常に動きました。0000~7FFFのSRAMも問題なさそうです。

 

さて、ここからが本番です。

今、64KBのSRAMボードは外部電源で動いています。上記ゲームが動いている状態でMSXの電源を切り、SRAMボードのプロテクトスイッチをONにします。

SRAMボードの電源は切らないままで、MSXに電源をいれると、

 

MSXの起動画面の後、いきなりゲームが始まりました。ちゃんとROMとして機能してくれています。うれしいですね。

ところがです、何度か実験しているうちにプロテクトスイッチOFFのままMSXの電源を切ってしまい、再度電源を入れ直したら、

ゲームが起動してきました。問題なく遊べます。

書き込み禁止にしなくてもROMとして扱ってくれています。ROMのヘッダが書き込まれていればRAMでも構わないようです。

もちろんSRAMボードの電源を切って入れ直せば、普通にMSX-BASICが起動してきます。ただし、電顕を切ってすぐに入れ直すとメモリにROMヘッダのデータが残っているのかMSXが起動途中でフリーズします。10秒ほど待ってから電源を入れ直す必要がありました。もしかするとこの現象は電源によって違うのかもしれません。

しかし本当にROMカートリッジと同じなのでしょうか。

そこで拡張ステートメントを試してみることにしました。自分で作ったプログラムをCALL命令で呼び出せるようになる機能です。アドレス4000~7FFFのROMに拡張ステートメントのヘッダと処理ルーチンを書いておけば、MSXが起動時に登録してくれてコマンドとして利用できるようになります。

とりあえず、CALL HELLOと入力すると"Hello, World"と表示する拡張ステートメントを作り、さらにそれを4000番地に書き込むプログラムを作りました。プログラム実行後、MSXの電源を切りSRAMボードの電源は入れたままプロテクトスイッチもOFFにして再びMSXの電源を入れます。起動後、BASICのプロンプトからcall helloと入力したところ、

動作しました。

良いですね。自作のプログラムを4000~7FFFに置いておけばSRAMボードの電源を落とさない限りいつでも呼び出して使うことが出来ます。

ちなみに”TINY SLOT CHECKER for MSX”のROM版もMSXページ1(4000~7FFF)にロードすると、電源投入後すぐに起動してきます。

ページ1から起動されているのが分かります。

 

配線は面倒でしたが、SRAMボードを作って良かったです。今後どう利用するか考えるだけでも楽しいですね。元々のRAM 64KBと合わせて128KBの容量があるので色々なことに使えそうです。

次は、プロテクトスイッチのオン・オフでSRAMボードに書き込んだゲームROMとかプログラムがどう動くのか色々検証していこうと思います。



最新の画像もっと見る

コメントを投稿