今回はあまり使っていないと思われる、拡張漢字ROMについてです。
P6で使われる漢字は内蔵のものが1024文字ありますが、それ以外にカートリッジとして用意されていました。
PC-6601-01(拡張漢字ROM)
PC-6007SR(拡張漢字ROM&RAM)
2つの違いは、64KバイトのRAM部分があるかどうかです。
...だと思います。実は、両方とも持っていないので、詳細はよく分かりません。
回路図の資料がココにあります。
http://www2.odn.ne.jp/~haf09260/Etc/EnrEtc.htmhttp://www43.tok2.com/home/cmpslv/Etc/EnrEtc.htm この回路図ですが、一箇所間違っているようです。
ROM に出力している、/ROE という信号ですが、これは RA15 の誤りのようです。
また、回路図下部に書かれている説明も若干違うようです。
下記が多分正解だと思われます。
○搭載ROM:64Kアドレス × 16bit の 1Mbit
○使用ポート
0xFC:(書き込み)漢字ROMのアドレス(RA15-0)
データバスに RA15-8、アドレス上位に RA7-0 を出力して書き込む。
0xFD:(読み出し)漢字ROMの左半分
0xFE:(読み出し)漢字ROMの左半分
0xFF:(書き込み)漢字ROMのチップイネーブル
開始の際に0x00を書き込み、終了時に、0xFFを書き込む
ポート0xFC のみ、16ビットアクセスをする必要があります(OUT (C),A などを使う)。
ポート0xFF に関しては、実は書き込みデータは関係ありません。
○P6からのアクセスプログラム
; HL にアドレスを入力して、コールする。
;
LD B,L
; 拡張漢字ROM アドレスラッチ
LD C,0FCH
OUT (C),H
; 時間待ち
NOP
NOP
NOP
NOP
; 拡張漢字ROM Enable
LD A,00H
OUT (0FFH),A
;拡張漢字ROM 左フォント読み込み
LD C,0FDH
IN H,(C)
;拡張漢字ROM 右フォント読み込み
LD C,0FEH
IN L,(C)
; 拡張漢字ROM Disable
LD A,0FFH
OUT (0FFH),A
RET
(プログラム自体はもっと短くなりますが、分かりやすさを優先しています)
○BASIC のサポート
PC-6001、PC-6001mk2では、BASICでサポートしていません。
PC-6601 以降の機種で、KANJI文で呼び出す事が可能です。
KANJI文は、KANJI (X座標,Y座標),色,漢字コード
ですが、この漢字コードが内蔵漢字を使う場合と、拡張漢字ROMを使う場合とで変わってきます。
BASIC内部では以下の処理をしています
1)拡張漢字ROMが挿さっているかどうかをチェックします。
2)拡張漢字ROMが挿さっていない場合、漢字コードが1〜1024ならば、それに対応する内蔵漢字を表示します。
3)拡張漢字ROMが挿さっている場合は、漢字コードから漢字ROMのアドレスを計算して、拡張漢字ROMにアクセスします。
このため、同じKANJI文でも動きが変わる事があります。
例えば、KANJI (0,0),4,33 とした場合、内蔵漢字だと 雨 が表示されますが、拡張漢字ROMの場合、半角の ! が表示されます。
拡張漢字ROMのアクセスなどのプログラムは、PC-6601 の音声合成ROMの0x3E00〜に格納されています。