Immer Ärger mit der ET4000

Diskussion zum Thema Programmierung unter DOS (Intel x86)
Antworten
wobo
DOS-Guru
Beiträge: 614
Registriert: So 17. Okt 2010, 14:40

Immer Ärger mit der ET4000

Beitrag von wobo »

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.
DOSferatu
DOS-Übermensch
Beiträge: 1220
Registriert: Di 25. Sep 2007, 12:05
Kontaktdaten:

Re: Immer Ärger mit der ET4000

Beitrag von DOSferatu »

Diese Splitscreen-Dinge, genau wie der IRQ, der bei Erreichen des Vertical Retrace auftritt, waren nicht Standard. Ich habe einen Kumpel, der auch einige Funktionen seiner VGA benutzen wollte (speziell diesen IRQ) und merkte dann, daß es nur auf 40% der Karten von anderen lief.

Die ET4000 ist die quasi-kompatibelste VGA, die es gibt - daher wird sie auch so gern als Referenz benutzt. Bestimmte Dinge wurden halt von anderen Herstellern zusätzlich eingebaut.

Ich selber verlasse mich mittlerweile nur noch auf das "kleinste gemeinsame Vielfache", um sicherzugehen. Es gibt z.B. auf der ET4000 interessante Grafikmodi (und z.B. einen sehr interessanten 256-Farben-Textmode, den man durch so Trickserei einschalten kann). Trotzdem verwende ich diese nicht, weil ich weiß, daß es sowieso nicht auf allen Systemen laufen wird. Manche so "Tricks" sind eben nur durch Zufall entstanden. Man kann ja froh sein, daß der "Mode-X" (der im Prinzip auch zu den "Tweaked Modi" gehört) weiterhin unterstützt wird, obwohl er ursprünglich gar nicht vorgesehen war.
Anmerkung: Die DOSbox-Emulation der ET4000 kann z.B. diesen "besonderen 256-Farb-Textmode" nicht.
Antworten