Ich wuerde gerne unter DOS pruefen ob eine VGA graphikkarte vorhanden ist Da ich den code spaeter im Protected Mode laufen lassen will geht es leider nicht ueber die VGA BIOS interrupts Modus zwischen Text und Grafik klappt per IO Ports ohne Int 10h problemlos Jemand eine Idee?
Du bist Dir sicher daß Du Dich nicht um ~25 Jahre in der Zeit vertan hast? Wenn ja, dann könntest Du evtl. probieren ob die Kombination Daten und Adressregister wie erwartet funktioniert, Du also die Daten aus den verschiedenen indizierten Registern auslesen kannst. Wenn keine VGA-Grafikkarte vorhanden ist, bekommst Du da keine passenden Daten zurück weil niemand auf die Ports reagiert.
Ohne angeschlossenem Monitor sieht man sowieso nichts.
cppbert schrieb: > Ich wuerde gerne unter DOS pruefen ob eine VGA graphikkarte vorhanden > ist > > Da ich den code spaeter im Protected Mode laufen lassen will geht es > leider nicht ueber die VGA BIOS interrupts ACPI benutzen->DSDT.
Gerd E. schrieb: > Du bist Dir sicher daß Du Dich nicht um ~25 Jahre in der Zeit > vertan > hast? > > Wenn ja, dann könntest Du evtl. probieren ob die Kombination Daten und > Adressregister wie erwartet funktioniert, Du also die Daten aus den > verschiedenen indizierten Registern auslesen kannst. Wenn keine > VGA-Grafikkarte vorhanden ist, bekommst Du da keine passenden Daten > zurück weil niemand auf die Ports reagiert. Programmiere gerade ein ganz ganz ganz kleines Betriebssystem und da sind wohl die standard vga sachen das einzige auf das ich wirklich bauen kann Eine Idee welche Register ich abfragen soll, welche werte ich erwarten muss? Bin echt erstaunt das ich trotz intensiverer Suche gar keine beispiele finde
cppbert schrieb: > Bin echt erstaunt das ich trotz intensiverer Suche gar keine beispiele > finde Wie hast du denn das geschafft? Wenn ich "vga programming" in Google eingebe, bekomme ich auf Anhieb Massen von Beispielen, Anleitungen, Registerbeschreibungen und Tutorials.
du musst nur die VESA Modies benutzen, machen wir auch https://de.wikipedia.org/wiki/VESA_BIOS_Extension läuft auch im PM
Rolf M. schrieb: > Wie hast du denn das geschafft? Wenn ich "vga programming" in Google > eingebe, bekomme ich auf Anhieb Massen von Beispielen, Anleitungen, > Registerbeschreibungen und Tutorials. Wie schon geschrieben habe ich kein Problem damit den Grafikmodus per Register zu setzen Text und Pixel zu malen - nur zur "Erkennnung" habe ich nichts gefunden, da alle meine System den VGA-Standard on Board supporten hab ich nicht mal einen Ahnung was passiert wenn ich keine habe und den Code laufen lasse - ich hatte gehofft ein etwas ausgetesteteres Beispiel zu finden damit das auch ordentlich läuft
Thomas S. schrieb: > https://de.wikipedia.org/wiki/VESA_BIOS_Extension > > läuft auch im PM Ich wollte mich auf den VGA-Standard beschränken und dort erkennen ob es auch der auch verfügbar ist
Thomas S. schrieb: > du musst nur die VESA Modies benutzen, machen wir auch > https://de.wikipedia.org/wiki/VESA_BIOS_Extension > läuft auch im PM Naja. Das Protected Mode-Interface ist erstmal nur 16-bittig (das 32-bittige kam viel später) und ist auf zeitgenössischen Grafikkarten eher nicht vorhanden. cppbert schrieb: > Programmiere gerade ein ganz ganz ganz kleines Betriebssystem > und da sind wohl die standard vga sachen das einzige auf das > ich wirklich bauen kann Setze doch einfach den Modus im Bootloader und nutze den (vgl. vesafb, ufifb in modernen Systemen). Oder musst du unbedingt im Betrieb verschiedene Modi haben? cppbert schrieb: > Ich wuerde gerne unter DOS pruefen ob > eine VGA graphikkarte vorhanden ist Du kannst in den ACPI-Tabellen oder der PCI-Geräteliste nachschauen, ob ein VGA-Gerät vorhanden ist. Wenn du ACPI-Tabellen oder PCI hast, ist das allerdings ziemlich garantiert. Wenn es dir um Textmodi geht, dann kannst du in der BIOS Data Area nachschauen, ob eine CGA-kompatible Grafikkarte vorhanden ist (dann funktionieren die Textmodi schonmal, mit VRAM @ 0xB8000). Wenn du im Protected Mode arbeitest, dann hast du per Definition mindestens einen 80386. In solchen Systemen steckt eigentlich immer eine VGA-kompatible Grafikkarte. Du darfst also davon ausgehen, dass eine solche vorhanden ist, wenn das BIOS "CGA" meldet. Ansonsten brauchst du für EGA/VGA-Karten immer ein zusätzliches Video-BIOS. Du kannst also schauen, ob der "int 10h" in der IVT in einen passenden ROM-Bereich zeigt, also unterhalb von 0xF0000. Zusätzlich kannst du die Signatur (d.h. den Herstellernamen) prüfen, wenn du willst, aber das artet aus, weil du dann Tabellen brauchst. Zu guter Letzt kannst du schlicht die Register testen, ob sie tun, was du willst. Auf wirklich antiken Rechnern kannst du damit aber auch Dinge (z.B. den Bildschirm) kaputtmachen. cppbert schrieb: > Programmiere gerade ein ganz ganz ganz kleines Betriebssystem (a) Du arbeitest mit BIOS und Legacy-Zeugs (kein UEFI). Also wirst du Multiboot nutzen. Lass dir da den VESA-Modus geben und fertig. (b) Wenn du mit UEFI arbeitest, ist dein ganzes Zeugs eh hinfällig, weil du dort den Treiber der Firmware nehmen kannst. (c) Besitzt du eine Nicht-VGA-Grafikkarte zum Testen? Nein? Dann ignorier' den Scheiß und tue so, als ob die Grafikkarte jünger als 30 ist. :-) (d) Frag mal bei VOGONS oder OSDev.org nach. Die kennen sich besser aus als wir hier, denn die machen das aktiv.
S. R. schrieb: Danke für die Tips - ich schaue mal weiter > Zu guter > Letzt kannst du schlicht die Register testen, ob sie tun, was du willst. > Auf wirklich antiken Rechnern kannst du damit aber auch Dinge (z.B. den > Bildschirm) kaputtmachen. das hatte ich auch gelesen und wollte deshalb testen - und wegen dem kleinen Defensiv-Programmierer in mir :)
cppbert schrieb: > Wie schon geschrieben habe ich kein Problem damit den Grafikmodus per > Register zu setzen Text und Pixel zu malen - nur zur "Erkennnung" habe > ich nichts gefunden, Ach so. Da müsst ich mal mein altes PC-Intern entstauben und schauen, ob da was drin steht. Die anderen Bücher aus der Zeit, als das für mich relevant war, hab ich irgendwann mal weggeworfen. Es gab da mal für alles mögliche mehr oder weniger ausgefeilte Erkennungsroutinen.
Rolf M. schrieb: > cppbert schrieb: >> Wie schon geschrieben habe ich kein Problem damit den Grafikmodus per >> Register zu setzen Text und Pixel zu malen - nur zur "Erkennnung" habe >> ich nichts gefunden, > > Ach so. Da müsst ich mal mein altes PC-Intern entstauben und schauen, ob > da was drin steht. Die anderen Bücher aus der Zeit, als das für mich > relevant war, hab ich irgendwann mal weggeworfen. Es gab da mal für > alles mögliche mehr oder weniger ausgefeilte Erkennungsroutinen. Wäre super wenn du was findest - das nicht auf BIOS Funktionen basiert
Du könntest den selben Mechanismus nutzen wie das BIOS: Die Startaddressen für BIOS-Erweiterungen abklappern und nachschauen ob a) an der Stelle überhaupt eine Erweiterung liegt und b) es sich dabei um das VGA-BIOS handelt. Das BIOS selber würde beim Finden einer Erweiterung noch dessen Initialisierungsroutine anspringen. Im Falle des VGA-BIOS würde diese dann u.a. den Int 10h Handler verbiegen, daher auch der Tip von S. R. (svenska) in die IVT zu schauen (Beitrag "Re: auf standard vga karte pruefen ohne bios?"). Wie die Header der BIOS-erweiterungen genau aussehen müßte Rolf M. (rmagnus) mal in seinem alten PC-Intern nachschlagen :) Btw. Wenn Du Dich intensiver mit so alter PC-Technik befassen willst solltest Du Dir diesen Buch selbst zulegen. Es ist von Michael Tischer und bei Data Becker erschienen. In Deinem Fall wohl an besten PC-Intern 2.0, die letzten Versionen waren schon sehr Windows lastig.
cppbert schrieb: > Wäre super wenn du was findest - das nicht auf BIOS Funktionen basiert Leider nicht. Im Buch ist eine Routine beschrieben, die ermittelt, ob VGA, EGA, CGA, HGC oder MDA verbaut ist. Der VGA-Teil nutzt aber das VGA-BIOS. Die Frage wäre noch, ob du den Test nicht machen kannst, bevor du in den Protected Mode schaltest. Oder alternativ im virtuellen 8086-Modus.
Du brauchst das Buch "PC Intern 2.0". Da ist die Kartenerkennung umfangreich beschrieben und mit Assembler hinterlegt.
hercules schrieb: > Du brauchst das Buch "PC Intern 2.0". Da ist die Kartenerkennung > umfangreich beschrieben und mit Assembler hinterlegt. Auch ohne bios Zugriffen?
Meins ist Version 3.0, da steht es wie gesagt nur über das BIOS drin. Ich gehe mal nicht davon aus, dass das in 2.0 so viel anders sein wird.
http://www.ctyme.com/intr/rb-0575.htm 5-4 initial video mode. 00 EGA, VGA, or PGA. Ansonsten die Info halt holen bevor man in den Protected Mode umschaltet? Diverse Extender haben genau dafür Funktionen, die temporär in den Real Mode zurückschalten, dann gibt es auch noch den v86-Modus. Unsicherer wird es dann, z.B. das Option-ROM nach dem String "VGA" zu durchsuchen. Man müsste wohl auch PCI enumerieren können und nach VGA-Unterstützung filtern.
Ich möchte dich nochmals darauf aufmerksam machen, dass du auf einem wunderschönen Holzweg bist. Deine Frage führt nicht zu Lösungen, sondern nur zu Problemen. Was ist dein Zielsystem für dein Betriebssystem?
S. R. schrieb: > Ich möchte dich nochmals darauf aufmerksam machen, dass du auf > einem > wunderschönen Holzweg bist. Deine Frage führt nicht zu Lösungen, sondern > nur zu Problemen. > > Was ist dein Zielsystem für dein Betriebssystem? Erst mal nur mein System, hatte die Hoffnung das es ganz einfach geht aber es ist wohl relativ sicher davon aus zu gehen das jedes System worauf mein Prototyp läuft wohl Standard VGA supported
cppbert schrieb: > Erst mal nur mein System, hatte die Hoffnung das es ganz einfach geht > aber es ist wohl relativ sicher davon aus zu gehen das jedes System > worauf mein Prototyp läuft wohl Standard VGA supported Darauf würde ich mich nicht unbedingt verlassen. Die Unterstützung für VGA (bzw. eigentlich schon ewig: dessen Emulation) schwindet seit nunmehr Jahrzehnten immer weiter. Viele Modi werden von den Graphik-Herstellern überhaupt nicht mehr getestet. Sind oft formal noch vorhanden, funktionieren aber nicht mehr wirklich. Es ist absolut absehbar, dass die VGA-Kompatibilität am Ende der Entwicklung komplett verschütt geht, das wird mit dem Aussterben der Legacy-BIOS-Unterstützung zusammenfallen, die ebenfalls absehbar ist. Dann gibt es nur noch einen Weg: UEFI und sein Graphikadapter. Wenn ich heute ein neues "Betriebssystem" (vermutlich handelt es sich eher nur um eine Art Bootloader) entwickeln wollen würde, dann nur noch auf UEFI-Basis. Alles andere ist sinnlos zum Fenster rausgeworfene Lebenszeit...
c-hater schrieb: > Darauf würde ich mich nicht unbedingt verlassen. > Die Unterstützung für VGA (bzw. eigentlich schon > ewig: dessen Emulation) schwindet seit nunmehr > Jahrzehnten immer weiter. Jein. Ja, echter VGA-Support ist nahezu irrelevant geworden und man kann zunehmend davon ausgehen, dass eher seltsame Registerprogrammierung nicht mehr ordentlich funktioniert. Nein, grundlegender VGA-Support (inklusive VESA) ist vorhanden und es ist nicht absehbar, dass das verschwindet. Das Risiko, dass irgendwo ein Windows-Setup nichts anzeigt, bindet sich kein Hersteller aufs Bein. Sowohl virtuelle Maschinen als auch große Netzwerke fahren oft großflächig BIOS oder UEFI im Kompatiblitätslayer, weil Infrastruktur lange lebt. Solltest du eigentlich wissen. Und ob der VGA-Support nun ein reales VBIOS ist oder eine Emulation im UEFI-CSM, spielt für das Betriebssystem keine Rolle. c-hater schrieb: > Viele Modi werden von den Graphik-Herstellern überhaupt > nicht mehr getestet. Sind oft formal noch vorhanden, > funktionieren aber nicht mehr wirklich. Hast du das jemals getestet oder erzählst du nur gefährliches Halbwissen? Kannst du konkrete Beispiele nennen? c-hater schrieb: > Dann gibt es nur noch einen Weg: UEFI und sein Graphikadapter. Das ist vor allem dann eine ganz besonders schlaue Idee, wenn man sein Betriebssystem mal auf älterer Hardware testen möchte, die kein UEFI hat... cppbert schrieb: > Erst mal nur mein System, hatte die Hoffnung das es ganz einfach geht > aber es ist wohl relativ sicher davon aus zu gehen das jedes System > worauf mein Prototyp läuft wohl Standard VGA supported Davon ist auszugehen. Bedenke, dass alle Grafikstandards, die keine VGA-Kompatiblität haben, bereits vor 30 Jahren antik waren.
Für neuere Intel SoCs gibt es offiziell von Intel kein Legacy VBIOS mehr welches supported wird. Es gibt ein Legacy VBIOS, es wird aber explizit darauf hingewiesen, dass es nur experimentell ist und maximal für manufacturing benutzt werden soll. Spätestens bei WhiskeyLake U ist dass so, Lenovo zum Beispiel hat aber trotzdem ein CSM mit Legacy VBIOS in mein T490 eingebaut.
oszi40 schrieb: > Buch über VGA-Programmierung suchen? ISBN-13: 978-3893197255 Ich habe das Buch zur Hand. Wird ihm wenig bringen, da es - alle Beispiele in TurboPascal abbildet - vollständig auf das BIOS aufbaut Auch bei dem hier (ISBN 13 978-0201570250) ist nichts zu holen, wenn es um DPMI geht. In den 90ern - als es noch viele Mailboxen gab - lagen da haufenweise code-snippets, libs, how-tos von Democrews etc. Wenn der TO sich anmelden würde, könnte ich evtl. damit weiterhelfen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.