にがMSX

〜最強のFS-A1FX を造る 前編〜


Panasonic MSX2+

FS-A1FX

 2014年春、物置を整理していたところ、懐かしいMSX本体が出てきた。特異な色で塗装されているA1STに見えるが、メインボードはFS-A1FX。1998年頃にSyntax主催の札幌のMSXユーザーの集いでユーザーさんに頂いたものだ。「集い」では毎回のように登場していた機体なので、見覚えのある人もいるかも知れない。

このA1FXはMSX2+でありながらFM音源が搭載されておらず、ゲーム機としてMSXを求めるユーザー多かった中であまり売れなかったようで、ある意味レアな機体である。PSGサウンドを堪能できるMSX2+として一定の需要はあるようで、ヤフオクではそれなりに高値で取引されている。

画像上: 「はにはにのヴィンテージPC新品再生ブログ」のblogマスターである”はにはに”氏からの贈呈品(メインボード死亡のジャンク機)

画像下:札幌MSXユーザーの集いで頂いたもの。筐体、キーボードはなぜかA1STのものだが、メインボードはA1FX

まずは頂いた当時、この機体にFM音源を増設すると約束しておきながら15年も塩漬けになっていたことをお詫びしたい。当時「集い」に通っておられたMさんに頂いたEPROMも出てきたので今回活用させて頂いた。FM音源チップの「YM2413」もどなたかに頂いたのだが、もはや誰に貰ったのかも分からなくなってしまった。もしこの記事を見ていたらニヤリとでもしていただければ幸いである。


補修&改造に着手

貰い物に文句もいえないが、譲り受けた時点で、電源ケーブル切断プリンタ端子欠損ジョイスティックポート2欠損ネジすべて紛失バックパネル、マウンタ金具類ほとんど欠損FDDなしスピコン基板、集中インジケータ基板&パネル欠損、という状態。それでも電源ケーブルさえACに接続できれば起動ができる状態なので、火入れをしてみたが、電源が入ったり入らなかったり、入っても途中で落ちたりと非常に不安定

考えてみれば製造後既に25年ほど経過しているわけで、電解コンデンサも寿命を迎えているだろう。とりあえずコンデンサの総張替えをした(画像はRGB出力のケミコンのみ張替え前)が、動作は安定せず、基板をチェックすると電源部のパターンの剥離VDPの半田クラックその他半田の薄いところにクラックが散見されたため、修復、半田の盛りなおしを行ったところ安定動作するようになった。

動作の目処が立ったため、改造に着手すると共に、パーツ集めを開始。まずはFM音源の増設512kBメモリ増設S端子の増設を行ったのが上の画像。欠損パーツについてもはにはに氏からジャンク品を提供して頂くことができた(多謝)。

メモリ増設(512kB)

 パナMSX2+のメモリ増設といえば、44256(256kx4bit)互換チップで256kBまたは512kBに増設するのが定番ではあるが、今時DIPのDRAMもあまり出回っていない。オクで中古をゲットするという手もあり、古い9801のアイオーデータ製メモリボードを入手して日立の「87424」という謎メモリを剥がして載せてみたが、うまくいかず断念。アイオーデータカスタムのメモリのようだったがデータシートがなく、壊れていたのか仕様が異なるのかは不明。

 手持ちのジャンクを調べてみたら、98ノートNX/C用の4MB増設メモリボードに「514800」というDRAMが8個載っているのを見つけた。NX/Cは実機を持っているが、既に8MB増設ボードを入れているので4MB版は不要。ということでこのDRAMを活用する方向で進めることにした。

メモリ増設回路図(512kB)

 514800はデータシートによると、512kx8bitのメモリで、アドレス線はA0-A8,A9Rの10本。データ線はD0-D7の8本を持つ。このA9Rが特徴的で、A9だけROWアドレスのみ有効でCOLOMNを持たないらしい。そのためDRAMとしては中途半端な512kのアドレス空間になっている。容量としてはこれ1個で512kBなのだが、A1FXで使われているカスタムチップT9769の仕様では、DRAMのアドレス線はA8まで、/CAS信号が2本までとなっているため、とりあえずA9RGND固定で殺し、1つを256kx8bitのメモリとして使用。これを2個使って512kBに増設した。

 実際の作業としては、514800x2を亀の子で重ね、1p-14pまではIC21空きパターンの同名信号、15p-28pIC24の同名信号に接続することになる(※上記回路図では、分かりやすくするためIC24のデータ線はD4-D7と表記した)。

上に重ねた514800/CAS(23p)だけは亀の子せず、ジャンパー線でT976950p(MPSL1)に接続。ここは細かい作業となるので半田スキルが必要。そして前述のようにA9RGNDに接続。これでとりあえず512kBとして正常に使うことができた。(余っているA9Rは後に活用して1024kBに拡張した)。

容量設定端子

 基本は定番の512kB増設と同じで、T9769の容量設定端子MPSL0(51p),MPSL1(52p)を共に+5Vでプルアップして、/CAS0(49p),/CAS1(50p)をそれぞれのDRAMの/CAS端子に接続することになる。

上画像ではTP1の穴を通している白いワイヤーが/CAS1(50p)、その1本上に見えるワイヤーがMPSL0(51p)MPSL1J2カット&J3ショート+5Vに接続されるが、MPSL0T9769下のパターンによってGNDに繋がっているので、足を基板から浮かせて+5Vに接続しなくてはならない。足を半田ごてで暖めながらデザインナイフで処理した。足を根元からポッキリ折ってしまうと終了してしまうので慎重な作業が必要。

単に両方の容量設定端子を+5Vに繋げるだけならMPSL1を隣のMPSL0とショートさせてしまっても構わないが、この基板では128kB化の実証試験も行ったため、このように配線した。


FM音源回路、S端子の増設

A1FXA1WXと同じ基板を使っているため、FM音源関連部品が載る部分は空きパターンとなっており、簡単にFM音源が増設できる。IO(7Ch-7Dh)監視のロジックはゲートアレイM60014に内蔵されており、FXでも特に封印されているわけではないようだ。ただし、それだけではBIOS(ドライバー)が無いので、システムからFM音源が認識されない。そこで、以前Mさんに用意してもらったFMBIOS(A1WXから吸い出した)を焼いたEPROMをROMカートリッジ化したものをスロットに差し込んだところ、正常に音源を認識して音が鳴り、BASICでもCALL MUSIC命令が使えるようになった。

また、A1FXの映像出力はRGB、コンポジットビデオ、RF出力のみでS端子は装備されていない。RGB接続ができればよいのだが、今時15kHz対応のモニタも入手困難だし、かつて使っていた対応モニタは邪魔になって処分してしまった。コンポジットビデオだと映像がボケボケであり、文字の判読に難があるため、今後まず使わないと思われるRFユニットを撤去して空いたスペースにS端子を増設することにした。

FM音源回路図

まずはFM音源の増設から。BABAXさんが公開されているA1WXの回路図と実機を照らし合わせて、不足分の部品を書いたのがこの回路図。なお、データバスなどの配線は省略している。音源チップであるYM2413と積分回路を増設してオペアンプに信号を引き渡す部分となる。オペアンプのLM324のみ既に実装されているが、それ以外の部品を用意して、この回路図どおりに実装すればよい。ROMの内部増設については後述する。

S端子増設回路図

A1FXで使われているビデオエンコーダCXA1145は元々Y/C出力に対応しており、実際S端子を標準装備したA1WSXではそこから信号を引き出している。A1WSXではトランジスタを使った面倒な回路構成になっているが、ここは専用のビデオアンプICを使う。

NJM2268というY/C出力に特化したICを使うのが定番であるが、入手性にやや難あり。2014年現在千石電商で入手が可能だが、秋月電子や札幌の梅沢無線では扱いなし。NJM2267でも代用は可能だが、その場合はC信号はビデオアンプを通さず、CXA1145 ChromaOut(15p) - +220uF - 75Ω- SVideo C(3p) といった具合に直列に繋いでコネクタに引き出せばとりあえず使える(電解コンデンサはCXA1145側が+)。

映像信号は既にHDMIが標準化しており、市販のテレビからもS端子が消えてきている。今後NJM2268はますます入手が難しくなりそう。


2015.3.30追記

 その後BASICプログラムでカラーバーを表示させてチェックしてみたところ、Chroma信号の赤色に縦縞ノイズが混入していることが判明。オシロスコープで波形を確認すると、NJM22688pに入っているChroma信号はノイズの無い綺麗な状態だったが、NJM22685pから出てくる信号のマゼンタ、赤色に周期性のあるノイズが混入していた。これが縦縞ノイズとなって現れていた模様。

試しにNJM2268に入れるChroma信号にカップリングコンデンサを噛ませ、抵抗で適当なBIAS電圧を与えてみたが、ノイズは消えなかった。Chroma信号はAC信号だが、CXA1145から出ている信号は元々BIAS電圧がかかっており、NJM2268にDC結合にしていたことは特に問題ではない模様。なお、Y信号は中途半端にカップリングコンデンサを噛ませると信号が歪むので現状のDC結合で良さそう。

NJM2268がどこからノイズを拾っているのか分からないが、経験的にCXA1145のChromaOutは直接75Ωドライブしても問題なく画像を表示することが分かっているので、敢えてビデオアンプを通さずにCXA1145からカップリングコンデンサと抵抗を介してモニタに信号を引き渡すことにした。下記Rev.2のように回路を修正したところ、縦縞ノイズは消え綺麗なカラーバーが表示されるようになった。NJM2268のBIAS側は使用しないので、比較的手に入りやすいNJM2267でも同じように使える。

S端子の配線

CXA1145YoutR37から、ChromaOutC110から取り出せる。ノイズ対策のために、R75C23から取り出したGNDとツイストペアにしてワイヤーを引き回している。NJM2267+5V電源はC24から取り出せる。

ちなみに左のジャンパー線は、剥ぎ取られたジョイスティックポート2のパターンを修復したもの。

S端子

RFユニットを撤去しているので、その穴を活用することができるが、サイズは異なるので多少棒ヤスリなどで穴を拡大する必要はある。丁寧に加工すると違和感無く仕上げることができるだろう。

実際の映像

コンポジットビデオ端子とS端子での出力を同じ自作LCDモニタで比較した映像がこちら。画像左のコンポジットビデオ出力はボケボケであり、輝度の高い文字の右に影が出来ている。アクションゲームなどではあまり気にならないが、横80字モードでは文字の判読に難があり、実用できる状態ではなかった。

S端子に切り替えたところ、文字がクッキリとしてドットのエッジまで分かるようになった。全体的には微妙なノイズはあり、RGB出力には若干劣るものの十分に実用的だ。


FMBIOS ROMの増設

FM音源をシステムから認識させるためには、ドライバのROM(FMBIOS)が必要となる。とりあえずROMカートリッジ式で認識させても良いが、それだとFMPACの節約にはなるもののスロットに節約にならないのであまりメリットがない。そこでEPROMを内蔵させる手法について検討、解析を行った。

まず、FXの内蔵ROMや空いているROMパターンがどのように接続されているかを調べたところ、内臓ROMのアドレスバス、データバスはCPU・スロットのものとは違い、すべてゲートアレイM60014に入っており、そこで一定のアドレス空間で区切られて適当な内部スロットに振り分けられていることが判明した。

当初はEPROMを空きパターンに載せて余っているスロットセレクト信号を使うつもりだったが、目論見が外れてしまった。空きパターンを使わずに、アドレスバス、データバスをすべて手配線しても良いが、合計28本の空中配線はやっぱり面倒だし実装場所の問題もある。ということで、内蔵ソフトの領域を乗っ取って、ここにFMBIOSが現れるように改造することにした。うまくいけば内蔵ソフトスイッチ「入」起動でオリジナルのまま、「切」で内蔵ソフトが消えてFMBIOSが現れるようになるので、敢えてPSGサウンドに戻したい時にBIOSを切り離すこともできる。

スロットマップ ROMマップ

ROMの実アドレス

内容
容量

スロット
00000h-1FFFFh 漢字ROM 128kB I/O
20000h-27FFFh 内蔵ソフト 32kB #3-3
28000h-2FFFFh KANJI BASIC 32kB #3-1
30000h-37FFFh BASIC MAIN 32kB #0-0
38000h-3BFFFh BASIC SUB 16kB #3-1
3C000h-3FFFFh DISK ROM 16kB #3-2

内蔵ROMの一部を乗っ取るためには、ROMの実アドレスがどのように各スロットにマッピングされているのかを知る必要がある。作者不明のプログラム"SLOT.BAS"で表示させたスロットマップが左画像。SLOT#3-3ページ1&2内容不明のROMの存在が示唆されているが、おそらくここが内蔵ソフトと思われる。NSSAVE.COMでこれを吸い出して、FXから引っこ抜いた2MbitマスクROM(23C2001)の実アドレスと比較してどのようにマッピングされているのかを調べてみた。結果は上記表の通り。

ちなみにスイッチの状態にかかわらず、SLOT#3-3には内蔵ソフトの内容が現れるようになっており、「切」のときには起動しないような何らかの処理がされているものと思われる。これは今回の改造には好都合。

以上の解析結果から、内蔵ソフトの領域を乗っ取るためには、ROMの実アドレスの20000h-27FFFhのアクセスがあったときにEPROMの内容が現れるようにロジックで回路を組めばよいことになる。

回路図

クリックで実寸表示

兄弟機のA1WXはROMの特定の領域のアクセスに対して、物理ROM切り替えるためのアドレスデコーダ回路を持っている(基板右下のIC25-IC27)。A1FXではその部分は省略されているが、せっかくなのでそこの空きパターンを利用することにした。ROMの実アドレス2000h-27FFFhを乗っ取るので、ROMのアドレス線 A17=1 , A16=0 , A15=0 のときに/CSがアクティブになるタイミングでEPROMに切り替えることになる。

 今回、EPROMは32kBの27C256を使用した。前半16kBにA1WXから吸い出したFMBIOSを焼き、後半はFFhで埋めておけば良いのだが、容量を余らせるのも勿体無いので後半に「べーしっ君ぷらす(BASICコンパイラ)」を焼いて切り替えられるようにした。ただし、FMBIOSべーしっ君ページ1でしか動作しないので同時に使うことはできないし、ページ2に置くと暴走するので、乗っ取りは前半16kBのみ、つまりA14=0も監視が必要となり、回路図は上記のようになった。こうすると、ページ2には内蔵ソフトの内容が現れたままになるが、ROMヘッダを持たないのでシステムには悪影響を与えない。なお、32kBのEPROMで後半をFFhで埋めて使うのであればHC138/G2BGNDに繋いでしまっても構わない。

ちなみに内蔵ソフトスイッチは、入でH、切りでLレベルになる。リセット信号からの立ち上がり時のスイッチの状態をHC74で監視、記憶させているので、システム起動後にスイッチを切り替えてもROMの内容は切り替わらないようになっている。そのため内蔵ソフトやFMBIOSが稼動しているときにスイッチを切り替えても暴走しない。

ロジックICの実装

実際のロジックICの実装の様子がこちら。IC2674HC138IC1774HC148を取り付けた。可能な限り元のパターンは利用し、パターンカットは極力行わない方針で実装している。

 HC1383p,4pの足を跳ね上げて実装し、3pIC25パターンの2pに来ているC15に接続、4pは別途増設したHC74Q出力(5p)に接続する。13p(/Y2)出力は、HC1484pと接続。

 HC148は回路図どおり1,2,3,10,11,12,13p+5Vに接続するが、10,11pは他の実装済みのICに繋がっているので足を跳ね上げる必要あり。同様に5,6,7,9pも足を跳ね上げ、5pは元のROMのIC1622p(/ROM2)に接続する。

元のROMは前の画像のように、IC16から引っこ抜いてIC18に実装している。こうすると、R140の空きパターンをショートするだけで、HC148/E0(15p)がROMの/CS(22p)に接続され、パターンカットが不要となる。ROM引っ越しが面倒ならば、カット&ショートでも構わない。

ROM裏

 今回EPROM27C256を使用したので、27pが最上位アドレス線のA14となっている。ここをLにするとFMBIOS、Hにするとべーしっ君が有効になるので、PICの切り替え信号出力に接続している。16kBの27C128を使う場合は、27pはROM焼きに関わる信号線になり、通常使用時は+5Vに接続する。

元々IC1522p(EPROMの/OE)はどこか別の回路に繋がっているが、ここはパターンカットして、GNDに接続した(パターンカットはここ1箇所のみ)。

元のROMが刺さっていたIC1622p(/ROM2)は前述の通り、HC1485pにジャンパー線飛ばして接続している。空きパターンの穴を利用して、ジャンパー線を引き回しているが、こうすると誤ってワイヤーを引っ掛けたときに基板のパターン剥離をある程度予防することができる。

HC74の実装

74HC74には、リセット信号の立ち上がり時の内蔵ソフトスイッチの状態を記憶させている。ここを省略して/G2Aとスイッチを直結しても切り替えはできるが、スイッチの接点が劣化したり、起動後に不用意なスイッチの切り替えを行うと暴走するのであったほうが良いだろう。

余ったゲートは後で3倍速改造のウェイト回路で利用するので、スロットの近くに実装したが、IC25の空きパターンを利用しても良かったかも知れない。とりあえず余ったゲートは暫定的に入力端子を+5Vに接続している。

べーしっ君切り替え用PICマイコンの実装

FMBIOSべーしっ君の切り替えは排他的とし、電源投入またはリセット時のBキーの状態を読み取って、Bキー押下ならべーしっ君が現れるようにした。これをロジックICで組み立てるのは大変なので、PICマイコン12F629を使用。

BキーはキーマトリクスではX7,Y2となっており、押下判定のためにはY2をLに落とすパルスを発生させ、そのときのX7を読み取ればよい。システムのキースキャンと競合しないように、Y2出力はダイオードでオープンコレクタ(もどき)とし、リセット信号からの立ち上がりを検出したらCPUにウェイトをかけ、その隙にBキーを読み取ってEPROMの最上位アドレス線A14の論理を決定するプログラムを書いた。

アセンブラのソースはこちら。HEXファイルはこちら。Bキーは起動時の一瞬のみ検出するので、MSXロゴが出現するときの青画面に切り替わったら離してもOK。実際に切り替わったかは、BASICで、「CALL RUN」でエラーが出るかで判定できる。FMBIOSの場合は「CALL MUSIC」で判定可能。


後編へつづく

 内蔵ソフトスイッチ「切」、Bキーを押さずに起動したときのスロットマップがこちら。スロット#3-3のページ1にFMBIOSが現れているのが分かるが、ページ2は内容不明のROM(内蔵ソフトの後半)のままだ。長くなってきたので、ここで一旦切るが、ここまでの改造でとりあえずDOS2やゲームでの使用が普通に行える状態にはなった。内蔵ソフトスイッチを「入」にすれば、FM音源はシステムから切り離されて、PSGサウンドでゲームもできた。

次回は3倍速改造と、DRAMの眠らせていた容量を使用可能とし、メモリ1024kB増設を行う。取り外して余ったDRAMであまり役に立たないVRAM増設もしてしまおう。

後編へつづく!


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

Top pageへ戻る

copyright (C) 2014 Niga.