レトロでハードな物語

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

ユニバーサルテストボードのSRAMをMSXで利用する

2025年02月06日 | 電子工作

前回ちょっと触れましたが、μP-1ユニバーサルテストボードにはMSXで使いたいICがまだあります。それはLY6264というSRAMです。データシートによると容量が8KBのCMOSで、入出力はTTLコンパチブルとなっています。

パソコンにRAMを増設するといった電子工作は大昔の自分にとっては絶対に不可能な事だったので、いつかは挑戦してみたかったのです。

とはいえ、電子回路としては大部分がバスと6264の端子直結の比較的簡単なものです。配線の本数は多いですけど。でもMSXのRAMは16KB単位で扱われるので8KBのRAMを使うときはアドレスデコードの部分でちょっとだけ工夫する必要があります。

そのアドレスデコードですが、今回はマルチプレクサとかは使わずにディップスイッチを使った回路を作ろうと思います。MSXでは64KBのアドレス空間を16KBごと4つのページに分けていて、ページ単位でROMやRAMを切り替えながら動いています。今回のSRAMはディップスイッチの切り替えでどのページにも配置できるようにしたいのです。6264は8KBなのでRAMのアクセスに13ビット使います。そして残りの上位3ビットをデコードします。ただしページ切り替えが16KBバイト単位なのでアドレスデコードに必要なのは上位2ビットだけです。残りの1ビットはどうするかというと、どこにも接続しません。

これにより8KBのメモリが1ページ16KBのアドレス空間の上位8KBと下位8KBのどちらからもアクセスできるようになり、見かけ上16KBのRAMとして扱えるのです。もちろん上位8KBの内容を書き換えれば下位8KBの内容も同じになってしまう(その逆も同じ)ので8KB以上のプログラムやデータは扱えませんが、MSXシステムにはそんなこと分からないので動作に支障ありません。

実際の回路は以下のようになります。

 

アドレスデコード

 

MSXとSRAMの接続

LY6264のCEにはアドレスデコードの出力を入れます。MSXとLY6264のA0~A12とD0~D7は省略していますが全て接続します。MSXバスのSW1とSW2は短絡してください。今回はLY6264に外部電源をつないでいるのでMSXバスからはGNDのみ接続します。

LY6264の電源ラインにはパスコン(0.1μF)を入れないと動作しませんでした。

 

ユニバーサルテストボード上のLY6264には余計なラッチが接続されていて使いにくかったのでソケットから取り出し、ブレッドボードで回路を組むことにしました。また、電源はMSXとは別にとりました。理由は後で説明します。MSXスロット用の基板は前回作ったものを流用、スロット2に挿して動作確認を行ってみました。

LY6264はケーブルに囲まれて見えませんね。

デップスイッチは秋月電子のお楽しみ袋に入っていた物で8つのスイッチがありますが、右2つしか使いません。上にしたときがオンです。

ディップスイッチの一番右がアドレス最上位のビットです。紛らわしいですが、スイッチがオンの時アドレスのビットはオフで、スイッチがオフの時アドレスビットはオンになります。

それでは動作確認してみます。アドレスの上位2ビットを00(スイッチはオン)にしてMSXを起動し「TINY野郎」さんの”TINY SLOT CHECKER for MSX”で確認してみると、

スロット2のページ0(0000~3FFF)がRAMとして見えました。

アドレスの上位2ビットを10にして起動すると、

スロット2のページ1(4000~7FFF)がRAMとして見えます。

アドレスの上位2ビットを01にすると、

スロット2のページ2(8000~BFFF)がMSX起動時にメインRAMとなっていたようで”TINY SLOT CHECKER for MSX”がこのRAMに読み込まれていました。プログラムが8KBに収まっていたので暴走しなかったようです。

最後にアドレスの上位2ビットを11にすると、

スロット2のページ3(C000~FFFF)がRAMになりました。

ちゃんと期待通りに動作してくれています。スロット2のメモリの読み書きプログラムを作ってテストしてみましたが、正しく動作していました。

このSRAMは電源を外部から供給したので、MSXの電源を切って立ち上げなおしてもRAMの内容は消えません。(実際にはMSXの起動時にRAMの確認を行っているようで、最初の1バイトに0の値が書き込まれていました)手持ちのMSXはリセットスイッチが無く再起動したいときには電源を切るしかないのです。そのためメモリ上のデータは全て消えてしまい、プログラムやデータは再度読み込まなければなりません。このSRAMに消したくないプログラムやデータを書き込んでおけば、作業中MSXの電源を落とす羽目になってもすぐに再利用できて便利です。

もしかしたらMSXをだましてROMに見せかけられるかもしれないと思い、RAMを4000Hに配置してROMカートリッジのヘッダと簡単なプログラムを書き込み、SRAMのライトイネーブル端子をプルアップして書き込みを行えないようにしてからMSXの電源をオフ・オンしましたが、MSXはROMとしては認識してくれませんでした。拡張ステートメント機能も試してみたのですが、うまくいきませんでした。今になって思いついたのですが、0FCC9H(SLTATR)からのワークを書き換えていればうまくいったかもしれません。RAMによるROMエミュレータ風な使い方はきちんとした回路を作ってからトライしてみます。

このSRAMの動作確認が終わった後に思い出したのですが、以前購入した秋月電子のお楽しみ袋にSRAMが入っていたことがありました。すぐに探して確認してみるとLC3664BL-10というSOP 28ピンのICでした。

データシートで確認すると8KBのSRAMで、今回使用したLY6264とほぼ同じようなスペックの物でした。DIP化基板を使えばMSXで使えそうです。2個で16KBなので1ページ分のメモリが追加できます。これを使わない手はないですね。後で試してみましょう。



最新の画像もっと見る

コメントを投稿