PC-98 のハイレゾモードと16ドットフォント

タグ: #PC-98 

暫く前から V30 搭載で 386DX 搭載の PC-98 が欲しいなぁと思っていた。 CPU は速い方が良いから、それは殆ど PC-9801RA 後期を指しているわけだが、縁がなかったというか、のらりくらりしていたというかで、欲しいと思っているだけの月日が幾らか経った。 今まで386機をちゃんと使ったことがなく興味をもっていたのもあり、入手してしまうのは遅かれ早かれ当然の成り行きで、遂に、PC-98RL を入手した。

きっかけは最早覚えていないが、気づかなければ良いのに、兎に角 RL も V30 搭載で 386DX 20MHz であることに気づいて、調子に乗ってしまったのだった。 人気はあまりなさそうなので、RA の代用としての RL は結構穴場かもしれないが、でかいし、情報があんまりないし、でかいし、純正メモリボードが全然見あたらないし、でかいし、重いし、でかいし、割に合っているかというと微妙だ。 実際、分解清掃中に「でかすぎる」と20回くらいは言った。

残念なことに普段5インチフロッピーディスクを全く使っていないのも噛み合わない。 ただ重さに拍車を掛けているだけの2台の FD1155Dを取り除き、何とか改造なりして3.5インチ化できれば御の字だが、フロントマスクを美しく加工する自信があるかというと微妙だ。

といった感じで、高性能なでかい計算機に心躍るがきんちょの部分と、なんでこんな選択したんじゃと冷めている部分と心に同居していたが、入手した以上何かに使わないと勿体ないと思い直して、適当に WWW を跋渉していると、目に留まった情報があった。 こちらこちら のツイートに曰く、「ノーマルモードもついたハイレゾ機(XLとかRL)は、裏技でハイレゾモードから16x16ドットの感じROMが読め」て、それは「とあるIOポートを叩くと漢字ROMを切り替えられ」るためとのこと。 面白そうなので、当該の IO ポートを探すことにした。

毎度お世話になっております undoc2 を読んで、漢字 ROM 切り替え機能が配置されていそうな IO ポートとして、以下2つに目星を付けた。

  • CG 関係の IO ポート(0a*h の奇数ポート)のうち undoc2 に機能の記述がないもの。
  • IO ポート 68h 及び 6ah のモード FF のうち undoc2 に機能の記述がないもの。

事前に CG ウィンドウから値を読んでおき、怪しい IO ポートに適当な値を書いた後に再び CG ウィンドウから値を読んで、先に読んでおいた内容と同じかどうか判定するプログラムを書いた。 IO ポート 0a5h に未使用ビットがあったので一応 0a5h から試したところ、次の 0a7h で CG ウィンドウの値が変わっているとプログラムが言ってきた。 どうやら、以下の仕様っぽい。 PC-9821A-E02 による MATE-A のハイレゾモードでも試してみたところ同様の挙動のようだった。

  • IO ポート 0a7h に 00h を書いておくと CG ウィンドウから24ドットフォントが読み出せる。
  • 同ポートに 01h を書いておくと CG ウィンドウから16ドットフォントが読み出せる。
    • 16ドットフォント読み出しの際の操作はノーマルモードと同じ。

テストプログラムを書きました → HR16FONT.ASM 。 プログラム引数に合わせて「あ」「A」「㍼」の3種類の文字の24ドットまたは16ドットフォントのいずれかを読み出すプログラムです。 読んだフォントパターンは1ドット1文字のテキストで表示するので24ドットフォントの場合、上端が少し見切れます。

テストプログラムの実行例
テストプログラムの実行例

というわけでハイレゾモードから16ドットフォントが読めるようになったが、どう活用すればいいんだろうか。 まあ、この令和にハイレゾ専用プログラムを作るというのは、それ自体酔狂で面白いとは思うので、何か思いついたら使ってみよう。 そういえば、07ah に触って CG ウィンドウの値が変わるのが分かった時点で目星を付けた IO ポートの探索は打ち切ってしまったので、0a7h より後の IO ポートやモード FF に何かまだ他の機能があるかもしれない。

あと、興味で XL^2 を1回は入手するつもりで生きていたが、でかいのは RL で腹一杯なので、多分今後入手はしないだろう。 V30 搭載の 386DX 機が最初の目標だったので RL なんてところに着地してしまったが、そもそも RL 互換のハイレゾモードは、まあ、PC-9821A-E02 でいいと思います……。


投稿一覧に戻るトップに戻る