2 Punkte von GN⁺ 2025-01-06 | 1 Kommentare | Auf WhatsApp teilen

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

 
GN⁺ 2025-01-06
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.

    • Das XFree86-Projekt hatte versucht, dieses Problem zu lösen, aber dieser Ansatz wurde im Xorg-Fork nicht beibehalten.
  • 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.

    • Das VGA-ROM-BIOS ist vermutlich ein Wrapper für VBE, der IN- und OUT-Befehle enthalten kann, die mit den VBE-I/O-Ports kommunizieren.
  • 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.