since 2007.8 by K-ichi


バッファカートリッジに接続された
スパゲティMSX漢字RAM
以前、MSXの半角フォントをいじったことがあった。
通常フォントデータはMAIN-ROM内に置かれているのだが、ワークエリアのCGPNT(F91FH,3)を書き換えると、任意のメモリ空間上に展開されたデータで代用することができる。
かつてはソニー機で、call文でフォントを切り替えるウラ技があったと記憶するが、この機能を使ったものと想像する。

その流れで、漢字フォントもいじってみたい……という構想が、2011年節分前にはもうあったのだが、地面が揺れたりFDDがトラブったりで、延ばし延ばしのうちに萎えてしまった。
一応の完成をみたので、ここに公開しておく。これにフォントデータを書き込めば、漢字ROMカートリッジとして動作する。

写真にあるとおり、MSXバッファカートリッジに接続している。
最近はMSXカートリッジ基板も売られている(エム・エー・ディー通信販売)ようなので、そちらを利用してもいい。

規模としては、ロジックIC10個にメモリ1個、スーパーキャパシタにダイオード、パスコン等々、といったところ。手工業にしてはちょっと大きめ。
漢字ROM回路に、バッテリバックアップRAMを載せ、ちょっとしたカラクリを仕込んだ形になる。
漢字ROMの回路は、MSX-Datapack vol.1に掲載されている。ネット上では、にゃごすwikiの7.8archive.orgのp53、などで確認できる。ちなみにこの回路例は、そのままではたぶん動作しない。


「MSX漢字RAM」回路図
左が、MSX漢字RAMの回路図。
描画ツールはBSch3V

まずは漢字ROMのアクセス方法をおさらいしておく。
I/OポートのD8Hに漢字アドレス(Datapackでは「漢字番号」と呼んでいる)下位、D9Hに漢字アドレス上位を出力した後、D9Hを32回読み出す。これで、16×16ドットのフォントデータが得られる。
ただしこれは第一水準の場合で、第二水準ではDAH、DBHにポートアドレスが変わる。

回路図中央のほとんどが、漢字ROMとしてのアクセス部になる。
一部アドレスデコードを端折っているが、問題はない。実機でも、Datapack回路例と異なる動作をする。

図下方のデータバスより下にある部分が、漢字ROMと漢字RAMとを切り替えるカラクリにあたる。
漢字アドレス上位を2回連続して書き込むと、KRAM信号をセット(='H')してRAMモードになる。続けて32回連続して書き込むと、16×16ドットのフォントを書き込める。
通常の漢字ROMアクセスでは、アドレス上位を2回連続で書き込まれる可能性はある。しかし3回以上はありえないので、これをトリガーとした。

漢字アドレス下位を書き込むと、アドレス設定のほかに、内部カウンタのクリアも行われる。これは本来の仕様で、さらに同時にKRAMのクリア(='L')も担わせている。
KRAMのクリアは、起動時のRESET信号によっても行われる。
じつは当初、漢字ROMの読み出し(=通常の漢字ROMアクセスに他ならない)をKRAMクリア信号に用いるつもりだったが、turboRのR800モードでは動作しなかった。
内蔵漢字ROMが有効な状態では、/KRD信号が出てこない。Z80モードでは出るので、S1990のお節介機能ということらしい。

メモリは、1MbitSRAM(628128など)、4MbitSRAM(628512など)、4Mbit擬似SRAM(PS-RAM、658512など)を想定している。ソケットを利用して、そのまま差し替えができる。
漢字ROMは、一水準あたり128KBが必要になる。1MbitSRAMは128KBなので第一水準のみとなる。4Mbitを使った場合は、容量の半分は使われない。

回路図右上にまとまっている74HC132は、擬似SRAMのバックアップ動作のためだけに追加している。
SRAMで構成する場合は不要であり、/KRDを直接/OEに接続できる。もちろんそのままでも、SRAM、擬似SRAMのどちらも使える。

回路内のロジックICは、ICの規格上、74HCTシリーズを推奨する。たとえば7430とあれば74HCT30を意味する。ただし実際には、74LS30でも74HC30でも、それら混在でも動作はする。
74シリーズ間の規格値の差異は小さく、最悪条件での保証値では外れる、という程度になる。
4024は、4000シリーズという74シリーズとは別のグループだが、規格を合わせこんだ74HC4024というものもある。これでも、4024でも、どちらも使える。
ただし、74HC132だけは、この型でないとマズいので、回路図内で指定してある。

パスコンとして、各ICごとに0.1μF程度のセラミックコンデンサをつけておく。また電源の入口に、10~100μF程度の電解コンデンサをつけておく。

RAMのバス配線は、順番は入れ替わっても構わない。たとえばD0とD2とD5が入れ替わっていても、書き込みも読み出しも同じ配線で行われて「行って来い」なので問題はおきない。
手ハンダは大変なので、作業のしやすさ、後で確認のしやすさ、などを優先していい。


バックアップ電圧の変化
バッテリバックアップは、電気二重層コンデンサ(スーパーキャパシタ)とショットキ・バリア・ダイオードによる。
スーパーキャパシタは1F程度のもの、ダイオードは1A程度流せる整流用などと謳ったものを使う。

信号レベル等を考えると、ダイオードは5V側に入れたくなるが、あまりよろしくない。プルアップ、プルダウンなどがある場合、抵抗やダイオードなどを介し、5V側に電流が流れ出ることがある。LS-TTLでもHC-MOSでも起こりうる。
ROMカートリッジエミュレータでも同じ理由でGND側に入れている。

擬似SRAMで構成し、バックアップ電圧を測ったのが左図。ダイオードの位置の違いで、電圧の持ちはひと桁違う。
……と考えたのだが、じつは青いグラフは、/CE=/OE='L'となっていたことが後で判った。実際の差はもう少し小さいと思われる。
ちなみにこの、アクセスしっ放し、読み出しっ放し、リフレッシュ無し状態でも、2分ほどはデータが保たれた。リフレッシュ頻度は2048cycles/32msなどと規定されているが、かなりのマージンを持っている模様。

オレンジ色グラフにあるとおり、14時間経っても3Vを保っていた。使用デバイスは低電圧モードのないLバージョンながら、2.99Vまで電源が下がってもデータは生きていた。
2018/9/29追記
24時間経過で約2.3V(2.26~2.32V間でふらつく)まで下がっても、まだデータは生きていた。さらにおいて、1.68Vまで下がったらダメだった。


内部がDRAMの擬似SRAMでは、バックアップできるのは半日余しかない。が、本物のSRAMを使えば、月のレベルまで伸ばせそう。
658512Lのスタンバイ(セルフリフレッシュ)電流は70μA(typ.)、628512Lでは2μA(typ.)となっている。実に35倍。さらにSRAMは、電源電圧2Vまで許容されており、電圧が3Vまで下がると消費電流は半減する。


実働の様子は別稿にて。
下記、関連記事欄参照のこと。

0 件のコメント:

コメントを投稿

.

関連記事


この記事へのリンク by 関連記事、被リンク記事をリストアップする」記事

ブログ アーカイブ