PS/55の日本語DOSをエミュレートする試みは失敗
今日は休みだったのですが、一時は頭が割れそうなくらいの頭痛で横にならざるを得ず、全然やりたいことが手に付かなかった感じがします。鼻づまりがひどいので、そこからくる頭痛ですかね。家の片付け。特に冬期に買ったゲームをいい加減やり崩したいのですが。早いとこ、お金にしたい。
PS/55のエミュレータを作れないかと試みたのですが、グラフィックの仕様が不透明なところで挫折しました。
画面出力はさておき、日本語DOSを起動させるだけなら簡単です。まず、キーボードコントローラーに対して、システムからキーボードIDが要求 (F2
) されたら83 AB
を返すように実装します。実際にキーボードを使えるようにするにはスキャンコード8Aの実装が必要ですが、J-DOSを起動するだけなら不要です。
次にJ-DOSは各マイクロチャネル・アダプターのIDを調べてディスプレイ・アダプターを探します。これはPS/55(及びPS/2)固有のProgrammable Option Select (POS) というレジスタを使います。よって、ディスプレイ・アダプターのID (FEFF
だかFFEF
だか) を返すようPOSを実装してやればいいのです。この仕様はハードウェア・インターフェイス技術解説書 (英語名: Hardware Interface Technical Reference) で公開されています。
画面出力の切り替えは同じくPOSでカードを選択した上で0x102ビット0 (Enable System Board) をセットしているものと思ったのですが、実機で確かめたわけではないので仮説です。
この後、J-DOSはディスプレイ・アダプターを初期化します。問題はこの部分で、PS/55の技術解説書ではレジスタの操作例とメモリマップのみが説明されていて、レジスタの内容は公開されていません。BIOSレベルでInt10/AH=08hの画面モード(文字モード)を実装するのは恐らくそれほど難しいことではないでしょうが、J-DOSをそのまま動かせるレベルにするとなると、グラフィックチップのレジスタの内容を明らかにさせる必要がありそうです。そこまで追うのは断念しました。