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

前回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
created by Rinker
Generic
¥1,404 (2025/04/01 21:44:05時点 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 ボタンを押すと読み出しが開始されます。

しばらくすると・・・

…続きを読む

XGecu T48(TL866-3G)をLinuxで使う

前回の記事で購入したと書いた、汎用ROMライタのXGetu T48(TL866-3G)の公式アプリ Xgpro を Ubuntu 23.10 で動かすことができたので、手順をまとめておきます。

XGecu T48だけでなく、上位機種の T56 や、前機種のTL866-II Plusなどでも使用できると思います。

↓前回の記事はこちら

参考にしたサイト

↓こちらのフォーラムの投稿や

TL866 II Plus and Xgpro under Linux – SystemEmbedded.eu

↓のサイトを参考にさせていただきました。というか、以下のサイトに全てが書かれてます。

…続きを読む