ようこそゲストさん

80mkII愛友会 別館

2015/11/21(土) 幻のPC-8001mkII用 第2水準漢字ROM(再追記あり)

PC-8001mkII
前々回の記事で,PC-8801シリーズの第2水準漢字ROMはサードパーティ製品が先に発売され,NEC純正品もそれに追従する仕様になったと説明しました。
しかし,実はNECはそれよりも遙か以前に,8801シリーズに採用された物とは異なる第2水準漢字の仕様を作成しておりました。
そして,その仕様に合わせてPC-8001mkII/SRは第2水準漢字をROM BASICで標準サポートしています。こっそりと。


前回の記事で,8801シリーズの第1水準漢字ROMへのアクセスはポート0E8H~0EBHを使用すると説明しました。
しかし,M88などポート出力を確認できるエミュレータを使うと,N80 BASICのCMD PUT KANJI命令やN80SR BASICのPUT@ KANJI命令の実行時に,0E8H~0EBHに加えてポート0ECHに値が出力されるのが確認できます。
N80/N80SR BASICでは,このポート0ECHを第1水準漢字/第2水準漢字の切り替えと想定してアクセスしているようです。
以下は,PC-Tecknow8000mkII P244に記載されている漢字ROMアクセス仕様に関する記述の抜粋です。



0ECHへの出力値に「2:半角」という記述がありますが,これは間違いのようです。
半角文字は第1水準漢字ROM内に含まれるので,実際にはN80/N80SR BASICでも半角文字の表示時には0を出力しています。

また,8801用と異なるのはポートの指定だけではなく,漢字ROM内のデータ配置も異なっているようです。
PC-8801用とPC-8001mkII/SR用の,第2水準漢字の文字コード→漢字ROMアドレス変換の違いを以下に示します。


PC-8801用は,全てビットのマスク&シフト&合成だけで変換できる仕様となっています。
PC-8001mkII/SR用はPC-8801用に比べると,ビット5,6を移動する際に減算が必要になったり,漢字コード 5020H~6F7FHのビット13もシフトが必要になったりと,少し処理が増えそうに見えます。
しかし実際には,N80/N80SR BASICのアドレス変換処理ではテーブル参照を使って第1水準漢字と共通化するような実装になっているので,第1水準漢字と同様のパフォーマンスで動作します。


それにしても,ここまでソフトを作り込んでおきながらハードが未発売というのはなんとも残念です。
PC-8801では最終機種のMCでもROM BASICで第2水準漢字はサポートされていませんから,PC-8001mkIIの数少ない優位点となったかもしれません。

このまま使われずに眠らせておくだけというのはなんだか悲しいので,この仕様に合わせて第2水準漢字アクセスを修正したX88000の改造版を作ってみました。

 

見事に,ROM BASICだけで第2水準漢字が表示できています。

他にも対応しているソフトがないか探してみましたが,まず「N80 漢字BASIC」「マイレターmk2」はダメでした。ポート0ECHに全く値を出力していません。
N80 漢字BASICはNEC純正ソフトなのですから,サポートして欲しかったですね。

続いて「P-漢」「thePC漢字」も試してみましたが,これらもダメでした。
これらは文字表示にN80 BASICのCMD PUT KANJI命令を使っているので行けると思ったのですが,文字コード入力を行う機能が存在しないので第2水準漢字を入力することができませんでした。残念。

唯一表示できたのは「80mkII簡易日本語ワードプロセッサ」です。

見えづらいですが"髑髏"と表示しています。
こんな部分までサポートしているとは驚きです。簡易などと名付けていますが80mkII用ワープロでは最上位クラスの完成度を誇るソフトなので,ある意味納得の結果でした。


この改造版X88000はこちらに置いておきました。
ノリで作ったお遊びプログラムなので今後のサポートなどは一切期待できませんが,興味のある方はお試しください。


(2015/11/23追記)
なんと,j80が最新版のRelease 6.84でこの機能に公式で対応してくださいました。
こんな対応ハードが未発売のネタまで拾ってくださるとは,HAL8999さん守備範囲広すぎです。

ただ,88用第2水準漢字ROMのデータはそのままでは使えないので注意が必要です。
上記の改造版X88000では88用のデータをそのまま使えるように内部で細工していますが,j80の方は実際のハードウェアに忠実な作りになっているので,ROM内部のデータが本記事で説明したアドレスで格納されている必要があります。
試しに88用第2水準漢字ROMのデータからPC-8001mkII用のファイルを作成するツールを作成してこちらに置いておきましたので,必要な方はどうぞ。
本アーカイブを展開して,同じフォルダにM88形式のKANJI2.ROMをコピーしてからConvertKanji2RomFor80mkII.exeを実行すると,同じフォルダにPC-8801-20.mod.romというファイルが作成されます。

(2015/11/25再追記)
j80のRelease 6.85では,88用第2水準漢字ROMのデータを内部でマッピングする機能(-n80オプション)が追加されました。よって,上記ツールは不要になります。
ちなみに,上記ツールにも一部問題があるとHAL8999氏からご指摘&修正コードを頂いたので,新しいものに差し替えました。
既に不要なツールとなってしまいましたが,参考として残しておきます。
同じアルゴリズムでアドレス変換を行っていた改造版X88000にも同様の問題がありますが...とりあえずCMD PUT KANJI/PUT@ KANJIで文字コード表にある文字を表示する分には問題なさそうなのでそのままです。気になる方はj80を使うか,修正版ツールのソースを参考にして書き換えて使ってください。

名前:  非公開コメント