PS/55のテキストスクロールはDOS/Vよりも遅い? [2]PS/55のテキストスクロール
PS/55の日本語テキスト表示手法
PS/55は16ビットMicro Channelスロットにディスプレイ・アダプターという日本語表示専用のビデオカードを搭載している(後期に登場したVGA専用機やXGA搭載機を除く)。概要や各種画面モードは以下で説明しているので省略。
→ PS/55ディスプレイ・アダプターの画面モードと解像度 - Diary on wind
ディスプレイ・アダプターはハードウェアで日本語テキストの描画をサポートしている。仮にCPUでグラフィックとして描画するとなると、PS/55では24×24フォントを使用するので、全角文字1字を表示するのに必要な書き込みバイト数は24ビット×24ライン=72バイトになる。実際は文字ボックスの大きさが26×29なので約94バイト。前機種の5550(マルチステーション)ではDOS/V同様にディスクからフォントを読んでグラフィックに描画していたが、スクロールの速さはともかくフロッピーディスクからフォントを読み込むのに時間が掛かることが不評だったようで、後期モデルでは漢字ROMを搭載した「漢字フォント・カード」が内蔵されるようになった。
ディスプレイ・アダプターの文字モードではビデオメモリー(コード・バッファー)が実アドレス空間でE0000hからE0FFFhの4096バイトに割り当てられる。CPUが偶数アドレスに文字コード、奇数アドレスに属性コードを書き込むと、属性コントローラーはそれに従ってフォント・バッファーから文字イメージを読み出し、点滅や反転などの制御を行った上で表示信号を生成する。このフォント・バッファーがいわゆる漢字ROMということになる。
(引用元:日本アイ・ビー・エム(株)『IBM PS/55 ハードウェア モデル5550-S/T/V 技術解説書』、オーム社、1990年)
1画面は80字×25行の各文字が2バイトなので4000バイト。96バイトの余りが出るが、この部分の扱いについて技術解説書では特に明示されていない。
ディスプレイ・アダプターのグラフィック用ビデオメモリーは16ビット(ワード)単位でアクセスできるが、コード・バッファーは8ビット(バイト)単位でしかアクセスできない。
PS/55のテキストスクロール
ディスプレイ・アダプターの文字モードではビデオメモリー上のデータを1行分上にずらして書き換えていく手法をとっている。やっていることはDOS/Vのソフトウェア・スクロールと同じ。ただし、全画面を書き換えたとしても4KBだけで、新規行のためにCPUがフォントイメージを用意する必要もないので、DOS/Vのソフトウェア・スクロールにかかる時間に比べれば微々たるものだ。これはVGAの英数テキストモードも同じ。
上述の通りディスプレイ・アダプターのコード・バッファーは8ビット単位でのアクセスになる。これが16ビット単位なら8ビットアクセスのVGAより少し有利だっただろうに。まあ、そこまですることに実用性があるかと言われると、ケースは限定されると思うが。