1024x768x32 Auflösung in einer eigenem OS
-
Ja aber wenn ich auf der Hompage von VESA bin, finde ich kein Tut zu dem Thema.
Kennt einer ein gescheiten Link?
Ich muss ja da irgent etwas in den ASM-Code eingeben damit das funkt
-
Moin, Moin...
Tutorials gibt es dort tatsächlich nicht, aber die Dokumentation des VESA-Standards: http://www.vesa.org/vbelink.html
Dort sind alle Funktionen aufgeführt, die im Standard definiert sind. Wenn Dein OS im Protected Mode arbeitet, wird es jedoch ein wenig schwieriger. Aber auch das Protected-Mode-Interface ist genau beschrieben.
Ciao...
-
Das ist ja ne menge Stoff ... danke schön
-
Das ist ja ne menge Stoff
Ja aber ohne wirkliche Beispiele
Am besten wehre es ja:
; Davor noch die Größe initialisieren und dann immer nur noch mov ax [BeginDesBildes] ; die Adresse des ersten Pixels call Paint jmp Start
Gibt es denn nirgends so eine Prozedur
-
Hm... Ich will dir ja nicht den Spass verderben, aber ich glaube nicht, dass du auf diese Frage die Antwort bekommen wirst, die du gern haettest. :p
(Falls doch: Du darfst dich gluecklich schaetzen)
Liess dir die Doku durch (die kommt IMHO auch sehr gut ohne vorgefertigten Beispielcode fuer alle Funktionen aus) und stell deine (moeglichst konkreten) Fragen halt hier, wenn du irgendwo nicht weiterkommst.
Solltest du absolut keinen Plan haben, wovon da in der Doku die Rede ist, empfehle ich http://freespace.virgin.net/hugo.elias/graphics/x_svga_i.htm als leichte Einstiegslektuere. Ist das wichtigste zur RealMode VESA-Programmierung in konzentrierter Form.
-
Danke schön
Also wie ich das nun verstanden hab, ist dort erklärt, wie man den Modus festlegt ... oder?
Nun muss ich nur noch wissen, wie auf jeden Pixel zugriff bekomme, um ihn einzufärben
-
und wie macht das z.B. Windows mit den hohen Auflösungen? Glaube nicht das die da was von VESA benutzen. Gibt es noch eine andere Möglichkeit?
-
the train schrieb:
und wie macht das z.B. Windows mit den hohen Auflösungen? Glaube nicht das die da was von VESA benutzen. Gibt es noch eine andere Möglichkeit?
Klar, Grafikkartenspezifische Treiber benutzen. Ich wünsche viel Spaß
-
Anfaenger2003 schrieb:
Nun muss ich nur noch wissen, wie auf jeden Pixel zugriff bekomme, um ihn einzufärben
Das geht via Speicherzugriff.
Die VESA-Funktion 01h gibt im RM die Segment-Addressen und Groesse der in den Speicher gemappten "Windows" zurueck. (WinASegment & WinBSegment und WinSize)
Bei diesem Speicherbereich liegt praktisch der Bildschirminhalt in einem 2D-Array. (zB. bei einer Aufloesung von 320*200@8Bit berechnet sich das Offset eines Pixels nach y*320+x)
Dort also einfach an die entsprechende Stelle im Speicher je nach Modus einen bestimmten Wert reinschreiben um einen Pixel in einer bestimmten Farbe zu platzieren.PS: Ich erinnere vorsichtshalber in dem Zusammenhang im RM nochmal ans Bank-Switching (VESA Funktion 05h)
-
aber bei windows gibt es ja auch einen standard s(vga) treiber, der bei eigentlich allen grafikkarten funktioniert. benutzt der vesa ?
-
plonk schrieb:
aber bei windows gibt es ja auch einen standard s(vga) treiber, der bei eigentlich allen grafikkarten funktioniert. benutzt der vesa ?
Ja, anzunehmen. Außer VESA gibts soweit ich weiß keine generelle Methode.
-
Und was ist mit xFree86?
-
Hi.
Das benutzt AFAIK ebenfalls Grafikkartenspezifische Treiber, wobei VESA ebenfalls unterstuetzt wird.
-
Häh?
-
Häh? (Uebersetzt in verstaendliches Deutsch: Welchen Teil meiner Antwort hast du nicht verstanden?)
-
Das ganze aber vorallem das mit AFAIK (was ist das).
-
Ok, dann werde ich es nochmal ausfuehren:
Nobuo T schrieb:
Hi.
Das benutzt AFAIK
Mit "Das" ist hier xFree86 gemeint.
"AFAIK" => http://www.afaik.de/Nobuo T schrieb:
Grafikkartenspezifische Treiber
Ein Treiber ist ein Programm, das eine Schnittstelle zwischen Betriebssystem und Hardware zur Verfuegung stellt.
Mit einem Treiber ist es einem anderen Programm zB. moeglich, eine Grafikkarte Grafiken anzeigen zu lassen.Mit "Grafikkartenspezifisch" ist hier gemeint, dass alle Grafikkarten ein wenig anders funktionieren und daher jeweils einen eigenen Treiber benoetigen, um benutzt werden zu koennen.
VESA ist eine Schnittstelle, die im Grunde genommen bei fast allen PC-Grafikkarten gleich ist.
So ist es moeglich, mit einem Treiber viele verschiedene Grafikkarten steuern zu koennen.Zur Kernaussage meines letzten Postings:
xFree86 benutzt meines Wissens nach ein System mit verschiedenen Treibern fuer verschiedene Grafikkarten, wobei einer dieser Treiber die VESA-Schnittstelle benutzt.
-
Dumm bin ich auch nicht aber diese Abkürzung hat mich verwirrt denn ich dachte das so was wie xfree86.
Achso ein Idiot bin ich auch nicht falls du mich so darstellen wolltest.
-
Nein, das war nicht meine Absicht.
-
OK. Gut zu wissen. *sorry*