One Dog v. the Windows 3.1 Graphics Stack
Einführung
- Beim Erlernen der VGA-Hardware habe ich versucht, ein Problem zu beheben, das beim Modifizieren eines alten Videotreibers auftrat.
- Ich versuchte, Windows 3.11 auf einem Asus Eee PC 1000H zu installieren, um eine brauchbare Videoausgabe zu erhalten.
Standard-Videoausgabe in Windows 3.x
- Standardmäßig rendert Windows 3.x in VGA mit 640x480 und 16 Farben.
- Auf dem 1024x600-Display des Eee PC ist diese Auflösung jedoch ungeeignet.
Probleme mit dem Super-VGA-Treiber
- Windows 3.11 enthält zwar Treiber für alte Videoadapter, unterstützt aber den Intel GMA 950 nicht.
- Der Super-VGA-Treiber unterstützt zwar 1024x768 und 256 Farben, funktioniert aber nicht.
Probleme mit der IBM-PC-Video
- VGA ist ein sehr spezifischer Videocontroller, der in den 1980er Jahren von IBM entwickelt wurde.
- SVGA bedeutet eine Weiterentwicklung von VGA, ist jedoch kein Standard.
VBE (VESA BIOS Extensions)
- VBE ist eine Schnittstelle, die es Software ermöglicht, mit dem Videoadapter zu kommunizieren.
- VBE9x und VBEMP von BearWindows machen die Nutzung von VBE unter Windows 9x und NT möglich.
- SVGAPatch patcht den 256-Farben-Super-VGA-Treiber von Microsoft so, dass er VBE verwendet.
Probleme von SVGAPatch
- SVGAPatch verursacht Kompatibilitätsprobleme mit DOS-Software.
- Beim Öffnen einer DOS-Eingabeaufforderung wird der Bildschirm beschädigt.
Aufbau von Windows 3.x
- Im Enhanced Mode laufen drei Betriebssysteme gleichzeitig.
- Ein Virtual-Machine-Manager erzeugt virtuelle Maschinen, und Windows im Standardmodus läuft in der ersten virtuellen Maschine.
Aufbau des Display-Treibers
- Bei der Auswahl des Videoadapters im Windows-Setup werden mehrere Treiber installiert.
- Es besteht aus Grabber, Display Driver und Virtual Display Device (VDD).
Funktionsweise von SVGAPatch
- SVGAPatch setzt bestimmte Videomodi und verwaltet den Videospeicher mithilfe von VBE.
- Es ersetzt die Fähigkeiten eines bestimmten Videoadapters, um VBE-Unterstützung bereitzustellen.
Rolle des VDD
- DOS-Programme erwarten typischerweise einen direkten Hardwarezugriff.
- Windows wickelt dies über eine virtualisierte Implementierung ab.
Fazit
- SVGAPatch verbessert durch VBE die Videoausgabe, löst aber noch nicht die Kompatibilitätsprobleme mit DOS-Programmen.
- Die komplexe Zustandsverwaltung im VDD könnte die Ursache des Problems sein.
1 Kommentare
Hacker News Kommentar
Es ist erstaunlich, dass man Windows 3.x auf modernen PCs laden und sofort die Standard-VGA nutzen kann. Auf modernen Linux/BSD-Systemen ist es jedoch schwierig, den standardmäßigen softwarebeschleunigten VGA-Framebuffer zu unterstützen, wenn passende Treiber und Konfigurationsdateien fehlen.
Die GUI von Windows 3.1 wirkt intuitiver, effizienter und benutzerfreundlicher als die heutige.
Das Startmenü von Win11 ist so unpraktisch, dass man es fast nur noch bedienen kann, indem man Schlüsselwörter eingibt und betet.
Windows NT und 2k waren am besten, danach begannen die Produktmanager, Änderungen vorzunehmen.
KDE und Gnome wirken im Laufe der Zeit immer ansprechender.
Das Problem mit der kaputten Darstellung beim Öffnen der DOS-Eingabeaufforderung im Fenstermodus liegt daran, dass die DOS-Eingabeaufforderung in einer separaten VM läuft.
Windows-3.x/9x-Display-Treiber setzten I/O-Port-Traps ein, um den Hardwarezugriff zu virtualisieren.
Ein Virtual Display Device (VDD) fungierte als Multiplexer der Videohardware und leitete bei Vollbild-DOS-Apps die Befehle direkt an den echten VGA-Adapter weiter.
Die GUI von Windows 3.x läuft in einer DOS-VM, während der Hypervisor-Kern VMM32 sie mit anderen DOS-Prozess-VMs multiplexer.
Beim Schreiben eines Win9x-VESA-Framebuffer-Treibers habe ich festgestellt, dass das Speichern und Wiederherstellen des GPU-Status je nach Hersteller unterschiedlich ist.
In DOSBox wird der Textmodus mit beschädigten Zeichen angezeigt, und auf dem Eee PC verschwinden einige Farben der GUI.
Auf dem Eee PC läuft 32-Bit-Debian; Firefox ist schwergewichtig, aber mpv reicht für Videostreaming völlig aus.
Beim Lesen darüber, wie alte DOS-basierte Windows-Versionen funktionierten, empfinde ich immer Ehrfurcht.
Als der ET4000H unter Windows 3.1 nicht unterstützt wurde, habe ich den Microsoft-Support kontaktiert und mir eine Treiber-Diskette schicken lassen.
Ich habe ein EeePC 207g, und es wäre lustig, damit Retro-Games auszuprobieren.
Muster werden analysiert, indem man den Zustand zwischen GUI und DOS-Modus vergleicht.
Das Design der Website wirkt erfrischend und erinnert an die besten Zeiten des frühen Internets.