Image: 240113 PS/55エミュ製作 [27]1040×725グラフィックモード

ここ1週間、寝ても起きても、仕事の時以外ずっとこのことを考えていた。WindowsのディスプレイドライバーがBitBLTのレジスターに代入する値をテーブルにしてみると、ある程度法則は分かったが、ビットシフトやソース、デスティネーションのアドレスが期待する表示結果とうまく合わない。結果的にアイコンがずれて表示されたり、一部が黒塗りになってしまう。最初にJDOSの$BITBLT.SYSを解析したときは全く意味が分からなかったが、このテーブルと照らし合わせるとアドレスの計算方法が分かってきた。しかし、上手くいくかどうか先行きは見えない。

そんなことより、今回の調査で最大の発見はJDOSが持つディスプレイ・アダプターの画面モードに1040×725グラフィックモードが存在したことだろうか。

モード 種類 表示文字数 ボックスサイズ アドレス 面数 画面解像度
08h 単色文字 80×25 13×29 E0000h 1 1040×725
0Eh カラー文字 80×25 13×29 E0000h 1 1040×725
03h VGAモード3互換? 80×25 13×29 B8000h 1 1040×725
0Ah 単色グラフィック 78×25 13×29 A0000h 1 1024×768
0Dh 16色グラフィック 78×25 13×29 A0000h 4 1024×768
0Fh 256色グラフィック 78×25 13×29 A0000h 8 1024×768
45h 16色グラフィック 80×25 13×29 A0000h 4 1040×725 (NEW!)

この画面モード45hはJDOS上でInt 10h, AH=00hファンクションによって切り替えることは可能だが、ビデオ信号タイミングなどのCRTCのパラメーターが設定されるのみで、他のモードと違ってDOS画面は何も表示されなくなる。

Windowsのディスプレイドライバーもこの画面解像度を使うので、最初はエミュレーターの不具合かレジスターに値を補正する特殊な仕様でもあるのかと色々調べたが、原因が分からなかった。$BITBLT.SYSの画面モード判別ルーチンに画面モード45hがあり、テキスト画面と同じ1040×725のグラフィックモードが存在することが分かった。


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

管理人 : Akamaki (akm)

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

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

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