PS/55のテキストスクロールはDOS/Vよりも遅い? [3]データ転送サイズで比較してみる
DOS/VとPS/55でビデオメモリーへの書き込み量を比べてみる。
データ転送サイズで比較
前回の時間計測比較表より。
PS/55テキスト | PS/55モノクロ | DOS/V(/HS=ON) | DOS/V(/HS=LC) | DOS/V(/HS=OFF) |
---|---|---|---|---|
10秒(1.1) | 110秒(12.2) | 9秒(1) | 13秒(1.4) | 27秒(3.0) |
最初に説明したとおり、1文字が画面上に表示されるまでには文字コードの変換やアドレス計算など様々な処理を挟むが、結局のところ一番大きなウェイトを占めるのはフォントイメージの転送(ビデオメモリーへの書き込み)にある。
DOS/Vハードウェア・スクロールの場合
DOS/Vのハードウェア・スクロールでは改行が発生した時に次のような処理が行われる。
- 26行目(画面表示外)に日本語入力ステータス表示を書き込む。
- 25行目(従前の日本語入力ステータス表示)を消去する。
- 開始アドレスレジスターの値を1行分(80×19=1520)加算する(→画面が1行分次にスクロールする)。
2行分の領域を丸ごと上書きしていると考えると、ビデオメモリーへの書き込みは80バイト×19ライン×2行=3040バイトになる。
フォントイメージの取得については、半角文字は常に基本メモリーに入っているので、全角文字の場合だけ拡張メモリーから転送する必要が生じる。つまり、表示するテキストによって異なるものの、最大で16ビット×16ライン×40字=640ワード(1280バイト)になる。実際にはリアルモードとプロテクトモードの切り替えによるオーバーヘッドが生じるため、CPUが286か386以降か、そのクロック速度、またBIOSのINT15hルーチンがどの程度最適化されているかによる。
PS/55テキストモードの場合
PS/55については前回説明したとおり、コード・バッファーのデータを1行上にずらしているだけである。25行目は日本語入力ステータス表示なので更新に含めない。
よって、ビデオメモリー内でのデータ移動は2バイト×80字×23行=3680バイト、ビデオメモリーへの書き込みは2バイト×80字=160バイトになる。
この比較から出た結論
DOS/Vのフォントイメージの取得処理にかかる時間はテキスト内容に依存する。全角文字が続く場合はPS/55の方が有利かもしれない。
今回時間を計った際はDOS/Vのreadme.docを出力したので、半角文字も空行も相当含まれている。そうなると、DOS/Vがグラフィックモードだったとしてもハードウェア・スクロールの恩恵を受けてメモリーアクセスの回数を抑えることができ、DOS/Vの速さはPS/55のテキストモードに勝るという結果は妥当と言える。
表示品質で言えば24×24フォントのPS/55が優れているが、表示速度でPS/55とDOS/Vが互角というのは、もしかしたらDOS/Vの開発陣が目標としていたところなのかもしれない。そう思うとロマンがある。