にがMSX

〜MSX2のメモリを512kBに増設する〜


Panasonic MSX2

FS-A1 MKII

 春の物置整理でMSX2のFS-A1Mk2が出てきた。以前にネタにした外付けFDD FS-FD1Aと同じく大阪の先生から頂いたものだ(多謝)。初代A1との主な違いはテンキーと、かな/CAPS/PAUSEランプの有無だが、筐体のカラーが若干グレーっぽい色に変更され、内部の基板もリニューアルされている。メモリは非マッパー仕様のRAM 64kBしか搭載していないが、大昔(1996.8.31)にメモリを512kBに増設しており、DOS2も動くし、メガROMエミュレータの「MEGA16」を使ってメガROMゲームをオンメモリで動かしたりもできるので、MEGA-SCSI経由でR-TYPEをメモリにロードし、起動後にMEGA-SCSIを引っこ抜いて本体だけで動かして遊んだりもした。FDDの無いマシンでスロットに何も刺さっていないのにメガROMゲームが動いているという不思議な状況なので分かる人には驚かれる。

とはいえ、FDDもFM音源も漢字ROMも内蔵していないのでゲームで遊ぶにも物足りないマシンではある。まともにゲームしたいのであれば、外付けFDDやFMPACは必要だろうし、できれば漢字ROMも欲しいところ。

 メモリ増設の元ネタは藤本さんのSONY HB-F1XDJのマッパーメモリ512kB増設記事で、この記事ではカスタムICのS1985(MSX SYSTEM II)を搭載したMSX2/MSX2+を対応機種としているが、実際は機種によりスロット構成やリセット時の設定端子の配線の違いがあるため、若干の手直しが必要になる。世間ではMSX2を512kBに増設した人の報告があまりないようなので、記録として残しておくことにした。


中身

初代FS-A1は片面基板で部品面にはジャンパー線が多用されていたが、Mk2になってからは部品面にもパターンが走っている。スルーホール基板ではなく、表裏で繋がっている部分は導電体で挟んで溶着されているような感じ。穴が開いていないので配線の引き回しやパターンの取り出しに若干の難がある。

部品面に載っているのは、VRAM、VDP、CPU、ROM、RAM、映像出力HICとロジック回路など。この画像ではメモリ増設後なので、元の64kBのDRAMは撤去して擬似SRAMを手配線している。

パターン面

パターン面には「MSX-SYSTEM II S1985」とゲートアレイ「M60002A-0108F」が実装されている。

S1985はMSX2の低価格化に貢献したカスタムICで、ワンチップでスロット0と3の拡張機能、RTCとバックアップRAM、DRAM制御信号(MPX,/CAS,/RAS,/WE)の出力機能、キーボード、ジョイスティック、カセット、プリンタインターフェイス、SSG音源等のほか、マッパーレジスタを5bit内蔵しており、これを利用すれば512kBまでのメモリの拡張が可能。ただし、無改造のA1Mk2では未使用となっている。

ゲートアレイM60002A-0108F初代A1と同じものが使われており、システムROMのスロットへのマッピング、PAUSE機能のサポート、DRAMの制御(アドレスマルチプレクス、RASオンリーリフレッシュ)を行っている。DRAMアドレスはA7までサポートしているが、マッパーレジスタは非搭載。PAUSEサポートのために8bitのリフレッシュカウンタを内蔵しているものと思われる。

CPU

CPUはZilog純正のZ80が載っている。A1Mk2の頃はすでに国産のセカンドソース品が広く使われていたと思うが、コスト的にはどうだったのだろう。ちなみに私が所有している初代A1にはROHMのZ80が載っていた。

ビデオ出力HIC

メモリ増設とは関係ないが、ビデオ出力用にハイブリッドICが使われており、ビデオエンコーダとしてSONYのCXA1145が使われている(J73Tのラベルが貼ってあるIC)。A1FXの改造でやったように、ここから信号を取り出すことでS端子の増設改造もできそうだが、分厚いアルミの放熱板のせいで加工はやや面倒。面実装タイプの電解コンデンサが使われているので、張替えたほうがいいかも。

システムROM

システムROMには1MbitのマスクROM(DA1024D0364R)が使われており、48kBのBASIC ROMと、内蔵ソフトが入っている。この個体ではIC11に実装されており、隣のIC13は非実装。シルク印刷では1M ROM x2とされており、合計2MbitのROMを管理できるようになっているのかと思いきや、パターンを調べてみたところ、IC13とIC11では22p(A16)以外が共通となっており(/CEも共通)、IC13の22pにはA16の反転信号が入っていた。

ちなみに、512kbitのマスクROMでは22pはA16ではなく/OEとなるため、IC11とIC13に512kbitのマスクROMを載せると、IC11が下位512kbitB、IC13が上位512kbitになる。おそらく半導体の流通状況により、使用ROMを1Mbitx1か512kbitx2のどちらかを選択できるように基板を設計したものと思われる。

空きROMパターン

ROM (IC13)
1 A15 28 Vcc
2 A12 27 A14
3 A7 26 A13
4 A6 25 A8
5 A5 24 A9
6 A4 23 A11
7 A3 22 /A16
8 A2 21 A10
9 A1 20 /CS
10 A0 19 D7
11 D0 18 D6
12 D1 17 D5
13 D2 16 D4
14 GND 15 D3

628512(参考)
1 A18 32 Vcc
2 A16 31 A15
3 A14 30 A17
4 A12 29 /WE
5 A7 28 A13
6 A6 27 A8
7 A5 26 A9
8 A4 25 A11
9 A3 24 /OE
10 A2 23 A10
11 A1 22 /CS
12 A0 21 D7
13 D0 20 D6
14 D1 19 D5
15 D2 18 D4
16 GND 17 D3

この基板のIC13の空きパターンにはROM増設するつもりでコレットピンキャリーを載せている。ICに履かせる靴下のようなソケットで、高さ制限のある場所に有用だが、小さい穴には差し込めず、イマイチ使い勝手は悪い。別にICソケットでも良かったのだが、ちょっと使ってみたかっただけ…。

パターンを調べてみたところ、IC13のデータ線はCPUに直結、アドレス線もA0-A13まではCPUに直結になっていた。A14、A15はゲートアレイと繋がっており、A16はゲートアレイからの信号をLS00で反転されて入っている。システムROMは16kB単位で区切られてゲートアレイでマッピングされていることが分かる。

マスクROMとSRAM 628512のピンアサインをGNDを一致させて重ねるとデータ線はすべて共通、アドレス線もA0-A13までは共通になっていることが分かる。ここを利用するとメモリ増設が簡単にできそう。マッパーアドレスとして接続するA14-A18と制御線の/WE、/OE、/CSとVccを手配線すればそのまま使えるはず。


メモリ512kB増設回路

藤本さんのF1-XDJ 512kB増設記事の回路図を基に、A1Mk2用に若干の変更を行った回路図がこちら。キーボードリターン信号/X5、/X6周りの変更が主だが、ロジックICのピンの割り当ても実装しやすいように少し変えてある。

キーボードリターン信号はキー入力を判定するためのものだが、これらはリセット時の論理でS1985の機能設定をする役割も併せ持つ。詳細は省くが、/X5をリセット時にLレベルにすることでS1985の3pにマッパーアドレスMA18を出力させることができる。/X6はキーボードのかな配列を50音かJISにするか決定するもので、A1Mk2ではJIS配列なのでリセット時にLになるように回路が組まれている。実際はゲートアレイM60002Aの59pからリセット時にHが出力され、トランジスタQ3により/X6をLに落としている。

改造では、リセット時にS1985の/X5をLに落としたいのでトランジスタのコレクタに繋げることになるが、/X5と/X6がショートするとキーボードが使えなくなるので、2箇所のパターンカット+ダイオードの増設で上記のようにする。

MA18出力設定

実際に加工した画像がこちら。ワイヤーに隠れて見えないが、Q3のコレクタを一旦/X6から切り離すため、コレクタ右側のS1985の79pに繋がっていた細いパターンはカット(画像ではワイヤーに隠れて見えない)、キーボード側に繋がっていたコレクタの左側もパターンカットした。さらに、S1985の/X5をキーボードに繋げるためにジャンパー線を接続。/X5,/X6はリセット時にLになるようにダイオードを介してコレクタに接続している。

マッパーアドレス信号の取り出し

S1985からマッパーアドレスMA14-MA18を取り出すところだが、この作業が一番の難関だったりする。ここではジュンフロン線で繋いでいるが、0.65mmピッチなのでポリウレタン線でやったほうが簡単かも知れない(耐久性にはやや難があるかも知れないが)。このピッチで連続5本ともなると難しく、迂闊に半田を盛ると容易にブリッジするし、半田が足りないと一見付いたように見えても後からポロっと取れたりする。ブリッジしたときの対策に、半田吸い取り器や吸い取り線は必須。

オリジナルの藤本さんの記事では「半田を盛ってはいけない」とされている。藤本さん直伝の方式によると、ワイヤーを半田めっきして、セロテープで固定、爪楊枝で押さえながらコテを当てるとのこと。半田付け後に軽く引っ張ってみて、取れなければOK。

擬似SRAMの実装

擬似SRAMの実装だが、先ほどの空きROMパターンを利用すれば配線作業はかなり省力化されるはずだが、当時の自分はよく検討もせずに手配線してしてしまった。アドレス線、データ線はCPUに直接配線しており、若気の至りという他ない…。

ちなみに元々実装されている64kBのDRAMは取り外している。

擬似SRAMと増設したロジックIC74HC02と74HC32。擬似SRAMはピンアサインはSRAMと同じだが、内部のメモリはDRAMなのでリフレッシュが必要であり、そのためにロジックICを2個使っている。リフレッシュは/CE=H、/OE=Lの組み合わせの時に内部のリフレッシュカウンタを使って行われる。藤本さんの回路ではCPUの/MREQ、/RFSH信号のほか、PAUSE状態識別のために/BUSAKを監視し、リフレッシュサイクル時とPAUSE時にセルフリフレッシュを行いデータ化けを回避している。

擬似SRAMでのメモリ設計はリフレッシュカウンタやマルチプレクサを用意しなくても良いので回路は簡単になるが、アクセスタイムがDRAMに劣るため、現在ではあまり使われていないらしい。

SRAM使用時の回路図

藤本さんが記事を書かれた1995年当時は512kBのSRAMはまだ高価であったため擬似SRAMを使う意義もあったのだが、2014年現在はSRAMでも1000円程度で入手できる。ということで、SRAM 628512を使った場合の回路図を起こしてみた。

リフレッシュ周りのロジックICを省略できるので、増設するのはSRAMとダイオード2本+パスコンのみと非常にシンプルになり、空きROMパターンを利用すれば、メモリへの配線はMA14-MA18、/CS/OE/WE、Vccの9本のみで行けると思う。なお、未検証なので、実際にやれるかどうかは保証なし。出来た方は報告して頂けるとありがたく。なお、S1985搭載機であればどの機種でも似たような感じで改造できると思うが、メモリのスロットセレクト信号や/X5周りは機種ごとに調べて対応する必要がある。


総評

 増設メモリのテストは、藤本さんの増設記事に同梱の「memtest.com」を使用。スロット#30にセグメント00h-1Fh=16個=512kB認識している。もちろんPAUSEしてもデータ化けは起きず、正常に動作している。

 スロット2にFS-FD1Aを挿してSLOT.BASを実行した結果が右。スロット0は拡張されておらず、ROMは最小構成のBASIC MAIN 32kB+BASIC SUB 16kBの他、スロット#31,#32,#33に内蔵ソフト(一部ダミーデータ?)が現れている。内蔵ソフトと排他利用として漢字BASICやFMBIOSを載せるのは簡単にできそう(IO上にYM2413や漢字ROMは別途必要)。

 2014年現在、MSXもヴィンテージ化の傾向があるようで、ゲームセンターCXで採り上げられたり、ヤフオクでも実機の人気が高まってきている。今になって実機を求める人はおそらく出戻りのゲーマーが主体なので本体改造などにはあまり興味はないかも知れないが、MSX実機のタマ数が少なくなってきた今、イマイチ使い勝手の悪いノーマルMSX2を改造して実用的にする手段を考えることは無駄ではないだろう。

今回は既に公開されているメモリ増設改造の施行例であったが、いずれこのA1Mk2にFM音源と漢字ROMを内蔵させたいと考えている(回路図は考案済み)。配線数はそれなりになるし、ROMを用意するというハードルを越えなければならないが、そこまでやればゲーム機としても実用的に使えると思う。

お約束ですが、この記事を元にした改造は自己責任でお願いします。


ご意見、ご感想、ご質問はにがBBSまで!

Top pageへ戻る

copyright (C) 2014 Niga