Image: 220111 PS/55エミュ製作 [16]2バイト半角文字

DOS文書プログラムはデータだけあったんだけどマスターディスクを紛失して、動作も上手くいかなかったから諦めていたんだけど、バッチファイルを色々整理していたらなんか動いてしまった。

しかし、画面に豆腐文字がちらほら。上の画面では前後の文字から「グループ(パス)」となっているだろうことは想像が付く。

解析してみると、PS/55のフォントROMには2バイト半角文字が記録されているらしいことが分かった。文字コードはJIS区点番号で言えば9区から10区あたり。実はPC-98も同じようなポイントに2バイト半角文字を持っているのだが、文字パターンの配置や順番は互換性がない。また、PS/55は平仮名も含んでいる。

この文字は通常のDOSでは入力することができない。DOS文書プログラムでは半角入力の状態で濁点や半濁点付き片仮名、記号などを入力した時、1バイト文字に該当する文字がなければ2バイト半角文字が入力される。または半角・全角変換機能で半角に変換した場合も同様。そして、プログラムは必要な文字パターンをフォントROMからフォントRAMの拡張半角文字に上書きするという手順を取っている。これにより、グラフィックモードを使わずテキストモードの拡張半角文字属性によって2バイト半角文字を表示している。

エミュを作る上で問題になるのは、この文字セットはDOS/Vのフォントファイル ($JPNZN24.FNT) には含まれていないことだ。実機からフォントデータを持ってくるか、既存のフォントデータを縮小処理するかという所だが、数少ないPS/55ハードを要求する仕様にはしたくない。ユーザビリティーを考えると後者だろう。

縮小処理自体は単純なビットオペレーションなので大したことないが、2バイト半角文字のコードがJISコードと一致しないので、対応するコードを調べて変換テーブルを作るのがただ面倒くさい。

DOS/V版のDOS文書プログラムはどう処理しているんだろう。自前でフォントセットを持っているんだろうか。


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

管理人 : Akamaki (akm)

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

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

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