VIDEO www.youtube.com
MSX 用のカートリッジ基板を自作してみました。上の動画は製作過程です。
作り方はこちらで公開中です。PC-6001 用とMSX 用のページを統合しました。
sites.google.com
市販のゲームカートリッジを分解
まず、 仕組みを調べるため、MSX 用のカートリッジを買って分解してみました。「プロフェッショナル麻雀」っていうゲームです。税込みで308円。
回路の解析結果
調べた結果です。32KBのROMだけが入ってました。専用ICもなくて、シンプルです。
回路図
基板を解析して、回路図に書き起こしてみました。コンデンサ を省略してます。
カードエッジの端子のA14がどこにもつながっていません。 最初、変だと思ったのですが、これは、CPUが0x4000番地にアクセスした時にROMの0x0000番地をアクセスさせるための処置です。そして、端子のA15がROMのA14につながっているので、0x8000番地にアクセスするとROMの0x4000番地がアクセスされます。結果として、全部のアドレスが0x4000ずれて伝わります。
PC-6001 とMSX のスロット
PC-6001 のROMカートリッジインターフェース(取扱説明書より)とMSX のカートリッジスロット(https://www.msx.org/ より)のピン配置を比較してみました。
両者は驚くほどそっくりです。アドレスバスとデータバスのピン番号が同じです。5V、GND、RD、WRも同じです。
特に違うのは、4番ピンですね。MSX 側の「SLTSL」はスロット選択時にLowになる端子です。一方、P6側の「CS2」は0x4000~5FFF番地(8KB)をアクセスした時だけLowになります。
PC-6001 用カートリッジ基板とフラッシュメモリ
解析の結果、PC-6001 とMSX のカートリッジの端子がすごく似てる ということがわかったので、以前作ったPC-6001 用のカートリッジ基板を流用します。(というか、最初から流用するつもりだったので、すでに基板に「PC-6001 /MSX 」と書いてあります)
8bitworkshop.com
8bitworkshop というサイトからMSX 用サンプルプログラム(Hello World )のROMイメージを頂戴しました。
8bitworkshop.com
このサイト、凄いことにファミコン とかAtari2600とかMSX のプログラムがWebブラウザ だけで作れてしまいます。エミュレータ 機能も搭載しているので、動作チェックもすぐにできます。謎の技術です。
MSX の場合、C言語 に対応しているのもありがたいです。
00をFFに変換
ダウンロードしたROMイメージは32KBです。細かい話ですが、データの後半が全部00で埋まってました。これだと、ROMの書込に時間がかかるので、自作ツールでFFに変換しました。
自作のフラッシュメモリ ライターで書き込み
以前PC-6001 用に作ったフラッシュメモリ ライターを使って、フラッシュメモリ にROMイメージを書き込みます。ROMには0x4000番地から書き込みます。この仕様もPC-6001 と同じです。データが「AB」で始まるところも同じ。 アクセス可能な範囲は0x4000~0xBFFFなので、容量は最大32KBになります。
この自作カートリッジ基板はアドレスバスを全部つないでしまっているので、ムダな領域ができてしまいます。
MX-101
MSX 本体を持っていなかったので、駿河 屋で中古品を買いました。5626円。
ダンボー ルいっぱいの静岡新聞 といっしょに届きました。状態は文句なしです。ACアダプタが欠品してましたが、手持ちのもので問題なく動きました。
動きました
フラッシュメモリ の書き込みが終わったら、カートリッジ基板をMSX 本体に挿し込んで電源を入れるだけです。
4番ピンの仕様の違いがどう影響するのか心配でしたが、無事に動きました。今回は回路設計も基板設計もしないで終わりました。
今回動かした基板の回路図
PC-6001 用のカートリッジをそのままMSX に接続して大丈夫なのか、、、ちょっと心配だったので、回路図で確認してみました。「SLTSL」をROMのCEに直結しています。これだとスロット読み込み時は常にアクティブになっていて、「CS12」の状態を見ていないのが心配なところです。74HC32で「CS12」とOR演算してからCEに入れたほうが確実のように思えます。
今、気が付きましたが、この回路だとA15がつながっていないですね。0x8000~0xBFFFにアクセスすると、ROM側は0x0000~0x3FFFにアクセスされます。たまたま未使用領域なので、問題なく動いているようです。しかし、気分的によくないので、ジャンパ線でA15をつないだほうがいいと思います。
nicotakuya.hatenablog.com
nicotakuya.hatenablog.com