One Dog vs. Windows 3.1 グラフィックススタック
はじめに
- VGAハードウェアを学習し、古いビデオドライバーの修正中に発生した問題を解決しようと試みた。
- Asus Eee PC 1000HにWindows 3.11をインストールして、適切なビデオ出力を得ることを目指した。
Windows 3.xのデフォルトのビデオ出力
- Windows 3.xは標準でVGA 640x480解像度、16色でレンダリングする。
- Eee PCの1024x600画面では、この解像度は適切ではない。
Super VGAドライバーの問題
- Windows 3.11には古いビデオアダプター用のドライバーが含まれているが、Intel GMA 950はサポートしていない。
- Super VGAドライバーは1024x768解像度と256色をサポートするが、実際には動作しない。
IBM PCビデオの問題点
- VGAは1980年代にIBMが設計した、非常に特殊なビデオコントローラーである。
- SVGAはVGAより進化した技術を意味するが、標準化されたものではない。
VBE(VESA BIOS Extensions)
- VBEは、ソフトウェアがビデオアダプターとやり取りできるようにするインターフェースである。
- BearWindowsのVBE9xとVBEMPは、Windows 9xとNTでVBEを利用できるようにする。
- SVGAPatchは、Microsoftの256色Super VGAドライバーをVBEを使って動作するようにパッチする。
SVGAPatchの問題点
- SVGAPatchは、DOSソフトウェアとの互換性の問題を引き起こす。
- DOSプロンプトを開くと画面が崩れる。
Windows 3.xの構造
- Enhanced Modeでは3つのオペレーティングシステムが同時に実行される。
- 仮想マシンマネージャーが仮想マシンを作成し、最初の仮想マシン内で標準モードのWindowsが実行される。
ディスプレイドライバーの構造
- Windows Setupでビデオアダプターを選択すると、複数のドライバーがインストールされる。
- Grabber、Display Driver、Virtual Display Device(VDD)で構成される。
SVGAPatchの動作原理
- SVGAPatchは特定のビデオモードを設定し、VBEを使用してビデオメモリを管理する。
- 特定のビデオアダプターに対する機能を置き換え、VBEをサポートするようにする。
VDDの役割
- DOSプログラムは、ハードウェアへの直接アクセスを前提としている。
- Windowsは仮想化された実装を通じてこれを処理する。
結論
- SVGAPatchはVBEを使ってより良いビデオ出力を実現するが、DOSプログラムとの互換性問題を解決する必要がある。
- VDDの複雑な状態管理が問題の原因である可能性がある。
1件のコメント
Hacker Newsのコメント
現代のPCでWindows 3.xを起動し、標準のVGAを即座に使える点には驚きがある。しかし、現代のLinux/BSDでは、適切なドライバと設定ファイルがなければ、標準のソフトウェアアクセラレーション対応VGAフレームバッファをサポートするのが難しい
Windows 3.1のGUIは、現在のものよりも直感的で効率的、使いやすく見える
Win11のスタートメニューは、キーワードを入力して祈る以外はほとんど使えないほど不便
Windows NTと2kが最も最適だった時代で、その後製品マネージャーたちが変更を始めた
KDEとGNOMEは時間が経つにつれて、ますます魅力的に見えてくる
DOSプロンプトをウィンドウモードで開くと画面が壊れる問題は、DOSプロンプトが別個のVM上で実行されているため
Windows 3.x/9xのディスプレイドライバー作者は、I/Oポートトラップを設定してハードウェアアクセスを仮想化する方法を使っていた
仮想ディスプレイデバイス(VDD)はビデオハードウェアのマルチプレクサとして機能し、DOSアプリがフルスクリーンのときはコマンドを実際のVGAアダプターへ直接送る
Windows 3.xのGUIはDOS VMで動作し、ハイパーバイザカーネルVMM32がこれを他のDOSプロセスVMとマルチプレクシングする
Win9xのVESAフレームバッファドライバーを作成する中で、GPU状態の保存と復元方法はベンダーごとに異なることがあると分かった
DOSBoxでテキストモードが文字化けし、Eee PCではGUIの一部の色が消える
Eee PCで32ビットDebianを実行しており、Firefoxは重いがmpvは動画ストリーミングには十分使える
古いDOSベースのWindowsがどのように動作していたかを読むたびに、常に畏敬の念を覚える
ET4000HがWindows 3.1でサポートされていなかったとき、MSのサポート窓口に連絡してドライバーディスクを受け取った経験がある
EEEPC 207gを所有しており、それを使ってレトロゲームを試してみるのが楽しそう
GUIとDOSモードの状態遷移を比較し、パターンを分析している
このWebサイトのデザインは、インターネットの黄金期を思い出させてくれ、さわやかな気分になる