Image: 初代ディスプレイ・アダプターの特異なテキストモード [PS/55]

私自身はモデル5570-Sの実物を使ったことも見たこともない。ただ、いくつかの文献を読んでいると、モデル5570-Sに搭載された初代ディスプレイ・アダプター (便宜上、DA-1とする) は翌年発売のモデル5550-S,T,5570-Tに搭載されたディスプレイ・アダプターII (DA-2) やそれ以降のモデルとは一線を画す大きな違いがあるようだ。

DA-1 (P/N 94X0968) をDA-2 (P/N 38F4650) に交換するEngineering Change (ECC13008) が1989年6月付けで発表されており、DA-2はDOS J4.0やOS/2 J1.1以降の動作に必須だったようだ。短命に終わったDA-1はDA-2と何が違ったのか。

DA-1のアダプターID (正式にはPOS IDという)は0xEFFFで、日本語DOS K3.3はこのアダプターIDでDA-1を検出すると、DA-2とは全然違ったテキスト処理を行うことが分かった。

DA-1とDA-2のテキストモードは、メモリーアドレスE0000-E0FFFに2Kワードのコード・バッファーを割り当てるという点では同じ。この偶数アドレスは表示コード (Display Character Code Byte)、奇数アドレスは属性コード (Attribute Byte)となっている。

Image: コード・バッファー

モデル5550-S/T/Vの技術解説書によれば、半角文字の表示コードは「文字コードと同じ値であり、JIS 8ビット・コードに対応」すると書いてある。全角文字については何のコードを書けばいいのか特に説明がないのだが、ここが実は今回の核心部分になる。

DA-2ではJIS 2バイトコードを変形したコードが書き込まれる。私は最近まで知らなかったが、このコードには「連続コード」という正式名称がある。下図にある「内部コード」はいわゆるシフトJISコードのことで、連続コードとシフトJISコードの関係が示されてる。

Image: 連続コード

DA-2では連続コードをコード・バッファーに書き込めば、そのコードに対応する文字がハードウェアでの処理によってディスプレイに表示される。

DA-1はこれと大きく異なる。DA-1では表示したい文字のフォントをメモリーアドレスA0000-AFFFFhを介して漢字ROMからメインメモリーに読み込み、それをフォント・バッファーに書き込み、コード・バッファーには0から始まるインデックスを書き込む。つまり、ソフトウェアの処理としてフォントを一度メインメモリーに読み込み、それをディスプレイ・アダプターのフォント・バッファーに追加するという風に、CPUの負担が増えることになる。フォント・バッファーは同じくメモリーアドレスA0000-AFFFFhに配置されており、I/Oポートでどちらにアクセスするか切り替えているようだ。

インデックスは5FFhまででループすることから、フォント・バッファーに保持できる全角文字は1536字。半角文字はDOSの起動時にフォントファイルからフォント・バッファーの別の領域に展開される。

なんか漢字ROMを搭載している割には回りくどい方法だ。あまり自信のない仮説だが、もともと5550(PS/55モデル5550じゃなくてマルチステーション5550のことね)がこのやり方を取っていたんじゃないかと思う。私は5550に関する技術解説書を持っていないので(当然ネットにも情報は一切なく)、アーキテクチャーは謎に包まれているが、BASICのマニュアルには以下のようなメモリーマップ図が載っている。

Image: 5550 BASIC メモリーマップ

A000:0 (A0000h)のところにフォントバッファーの記載がある。APA(All Point Addressable; 全点割り当て可能)はグラフィックモード用のビデオメモリーのことで、この構成はPS/55と同じ。5550の漢字ROM非搭載モデルはDOSのインストール先にあるフォントファイルから漢字フォントをロードしていたということから、この後はDA-1と同じような手順を踏んでいたんじゃないか。

DA-1とDA-2の違いはテキスト全画面インターフェイスを持つアプリケーションでコード・バッファーを直接書き換えるような場合に問題が出そうだが、DOSアプリケーション・レベルで問題が起きないような工夫はされていたのだろうか。


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!