Immer Ärger mit der ET4000
Verfasst: So 3. Jul 2011, 23:35
So, langsam macht mich die ET4000 ganz schön kirre!
Mag ja sein, dass diese Karte zu ihrer Zeit (d.h. Ende der 80er, Anfang der 90er) die schnellste ihrer Art war. Aber mit der VGA-Kompatibilität hat sie es anscheinend nicht ganz so...
1. SplitScreen & Pel-Panning
Mittels SplitScreen (CRT-Ctrl., port $3d4, Reg. $18 u.a.) kann man eine statische Menüzeile per Hardware am unteren Bildschirmrand einrichten, während die obere Hälfte des Bildschirms per Hardware scrollen kann.
Mittels Pel-Panning (Attribute-Ctrl., port $3c0, Reg. $13) kann man das hardwareseitige Scrolling verfeinern, d.h. pixelweise ausrichten.
Leider hatte die IBM-EGA – Karte insoweit einen (nicht behebbaren) Bug: Wenn man pixelgenaues Scrolling über Pel-Panning durchführen wollte, hat die (eigentlich statische) Menüzeile „mitgewackelt“. Grund war, dass das Pel-Panning auch diesen Bildschirmbereich erfasst hatte, weil es nur global für den ganzen Bildschirm eingestellt werden konnte.
Mit der VGA-Karte wurde dieser Bug behoben. Aus Kompatibilitätsgründen zur EGA-Karte ist dieser Bug zwar grundsätzlich an. Er kann aber über das Setzen von Bit 5 im Register $10 des Attribute-Ctrl. abgeschalten werden.
Mit einer VGA-Karte kann man daher hardwareseitig pixelweise scrollen und zugleich eine hardwareseitige Menüzeile einrichten.
Dies steht so in allen mir bekannten VGA-Docs und ist so – getestet –
bei der original IBM vga onboard auf PS/2 386dx25
bei der wd90c11
bei der cl gd5426
bei der S3 Trio64V2/DX
bei der ATI RAGE 3d 8 MB, AGP2x
und unter DosBox 0.73.
Nur nicht auf der ET4000. Da wackelt die Menüzeile wie zu EGA's Zeiten!
64k/256k-WrapAround
Jede der oben genannten VGA macht einen WrapAround, wenn die Display-Area (CRT-Controller, port $3d4, Register $C und $D) die 64k-Grenze überschreitet. Nur nicht die ET4000. Die zeigt gnadenlos den Inhalt der zweiten 256kb an, obwohl ich diesen gar nicht (zumindest nicht ohne spezial-ET4000-Wissen) füllen kann.
Hat jemand 'ne Info, wie ich das Vorhandensei einer ET4000 sicher erkennen kann? Ich würde zukünftig dann meine Programme mit einer Fehlermeldung abbrechen lassen, wenn ich scrollen will und eine ET4000 wird entdeckt.
Mag ja sein, dass diese Karte zu ihrer Zeit (d.h. Ende der 80er, Anfang der 90er) die schnellste ihrer Art war. Aber mit der VGA-Kompatibilität hat sie es anscheinend nicht ganz so...
1. SplitScreen & Pel-Panning
Mittels SplitScreen (CRT-Ctrl., port $3d4, Reg. $18 u.a.) kann man eine statische Menüzeile per Hardware am unteren Bildschirmrand einrichten, während die obere Hälfte des Bildschirms per Hardware scrollen kann.
Mittels Pel-Panning (Attribute-Ctrl., port $3c0, Reg. $13) kann man das hardwareseitige Scrolling verfeinern, d.h. pixelweise ausrichten.
Leider hatte die IBM-EGA – Karte insoweit einen (nicht behebbaren) Bug: Wenn man pixelgenaues Scrolling über Pel-Panning durchführen wollte, hat die (eigentlich statische) Menüzeile „mitgewackelt“. Grund war, dass das Pel-Panning auch diesen Bildschirmbereich erfasst hatte, weil es nur global für den ganzen Bildschirm eingestellt werden konnte.
Mit der VGA-Karte wurde dieser Bug behoben. Aus Kompatibilitätsgründen zur EGA-Karte ist dieser Bug zwar grundsätzlich an. Er kann aber über das Setzen von Bit 5 im Register $10 des Attribute-Ctrl. abgeschalten werden.
Mit einer VGA-Karte kann man daher hardwareseitig pixelweise scrollen und zugleich eine hardwareseitige Menüzeile einrichten.
Dies steht so in allen mir bekannten VGA-Docs und ist so – getestet –
bei der original IBM vga onboard auf PS/2 386dx25
bei der wd90c11
bei der cl gd5426
bei der S3 Trio64V2/DX
bei der ATI RAGE 3d 8 MB, AGP2x
und unter DosBox 0.73.
Nur nicht auf der ET4000. Da wackelt die Menüzeile wie zu EGA's Zeiten!
64k/256k-WrapAround
Jede der oben genannten VGA macht einen WrapAround, wenn die Display-Area (CRT-Controller, port $3d4, Register $C und $D) die 64k-Grenze überschreitet. Nur nicht die ET4000. Die zeigt gnadenlos den Inhalt der zweiten 256kb an, obwohl ich diesen gar nicht (zumindest nicht ohne spezial-ET4000-Wissen) füllen kann.
Hat jemand 'ne Info, wie ich das Vorhandensei einer ET4000 sicher erkennen kann? Ich würde zukünftig dann meine Programme mit einer Fehlermeldung abbrechen lassen, wenn ich scrollen will und eine ET4000 wird entdeckt.