240707 PS/55エミュ製作 [35]DOS J4.0だけおかしくなる文字モード
モノクロモニターの判別問題は、I/Oポート3E1hインデックス3のビット7がVGAでのSwitch Sense Bitと同じ役割を果たしていて、これはDOSVAXの実装と同じだった。問題はここではなく、属性コントローラーへのI/Oポートのデータ出力処理にバグがあって、これを直したらカラーパレットが正しく初期化されるようになって、問題が解決した。
属性コントローラーのI/Oポートにバイト単位で書き込むときはフリップフロップでインデックスとデータが交互に書き込まれるんだけど、ワード単位で書き込むときに、低位8ビットがインデックスで高位8ビットがデータに書き込まれるはずが、逆になっていた。
とても時間を掛けながらも、文字モードはほぼ実用レベルで表示できるようになった。しかし、今ぶち当たっている問題は、DOS K3.3やJ5.0は正しく起動するのに、DOS J4.0だけ文字モードが正しく表示されない。導入プログラムで使われる画面モード03hは正しく表示される。画面処理のBIOSがROMではなくDOSにあるのは知っているが、なんでDOSのバージョンによって挙動が違うんだ。