Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: bitmaster am 30. July 2006, 01:24

Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: bitmaster am 30. July 2006, 01:24
Hi,

ich überlege gerade wie man im laufenden OS den Grafikmodus wechseln kann. Also z.B. von 800*600 auf 1024*768. Weil ich bin ja im Longmode und da kann ich den "int 10h" BIOS-Interrupt ja nicht nutzen. Kann man da einfach über Ports den Modus wechseln oder ist das incompatible und man sollte besser in den Realmode zurück? Also so:

RM -> Modus setzen -> PM (muss ja bevor LM) -> LM

User will den Grafikmodus im laufenden OS ändern:

LM -> PM (muss ja bevor RM) -> RM

Modus setzten wie es der User haben will (durch int 10h) und zurück zum LM

Würde das zu lange dauern? Wie machst du das eigentlich blueXseven?

danke!!!

bitmaster
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: scales of justice am 30. July 2006, 10:35
in der VESA Dokumentation steht was von einer bestimmten Adresse,
an der Adresse befindet sich eine funktion die wie der BIOS-Interrupt aufgebaut ist,
mit dem kann man dann auch im Pmode den Modus wechseln

so hab ich das jedenfalls verstanden,
guck am besten mal in die VESA-dokumentation, gibts irgendwo auf vesa.org
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: nooooooooos am 30. July 2006, 11:14
Das ist aber VESA 3.0. Und das unterstützen glaub ich (noch?) nicht viele Computer....
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: scales of justice am 30. July 2006, 11:37
ich glaub das gabs schon vor VESA 3.0,
und warum sollen wenige PCs VESA 3.0 unterstützen,
das können doch alle neuen, oder?

muss man wohl einfach mal in die Dokumentation schauen,
wie das mit der funktion aussieht
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: Jidder am 30. July 2006, 11:54
Zitat von: scales of justice
ich glaub das gabs schon vor VESA 3.0,

Ja, das ist aber 16 Bit Protected Mode. Da kann man auch gleich in den Real Mode springen.

Zitat von: scales of justice
und warum sollen wenige PCs VESA 3.0 unterstützen,
das können doch alle neuen, oder?

Anscheinend nicht: http://zweiundvierzig.tibit.de/xerxys/wiki/index.php?title=VESA
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: scales of justice am 30. July 2006, 13:56
kann mir nicht vorstellen dass die Liste komplett sein soll,
das ist ja grade mal eine handvoll Karten, da hätte man VESA 3.0 auch bleiben lassen können

dann frag ich mich aber wie das sonst gehen soll,
wahrscheinlich gibts irgendwelche Ports über die man das umstellen kann,
diese Funktion und das BIOS-Interrupt müssen das ja auch irgendwie machen
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: stultus am 30. July 2006, 14:01
nimm einfach die vesa3-methoden, ich würd sagen fast alles kann Vesa 3... zumindenst Geforce ab FX-Reihe sollte durchgängig gehn, und Radeon ab 9000 ja auch laut der Liste...
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: scales of justice am 30. July 2006, 14:37
laut der Liste gibts ab 9000 VESA 2.0
VESA 3.0 erst ab x800

mal abgesehen davon sthet da von ab nichts,
vielleicht können das die Nachfolger gar nicht

also wenn die Liste stimmt kann man das mit der funktion wohl vergessen
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: Jidder am 30. July 2006, 14:42
klar, die liste ist nicht komplett. das sollte aber aus dem kontext auch ersichtlich werden.

hier im forum gabs übrigens vor längerem mal ne aufforderung seine karte da einzutragen. es ist sicherlich noch nicht zu spät, das nachzuholen ;)
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: thetrue am 30. July 2006, 14:48
hier mal die ports die helfen könnten ... aber kA wie man die anwendet ^^

(http://www.imagespell.com/pimg/689b831ef64eaaf482565c1b1eebd80d.jpg)
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: scales of justice am 30. July 2006, 15:06
nach dem was da dran steht haben die abe rnicht viel mit VESA am Hut...
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: n3Ro am 30. July 2006, 15:39
Also mit den VGA-Registern wird man nicht allzuweit kommen, es sei denn 320x240x256 oder 640x480x16 ist einem genug Auflösung. Für die höheren Auflösung brauchts entweder den VESA-BIOS oder einen Grafiktreiber. Kannst ja mal die XFree86 Sourcen oder den Linux-Kern schauen, da sind Routinen für den Grafikmodus drin. Die haben nur 2 Nachteile (z.B. bei NVidia): 1. sind die Teilweise gecopyrighted, 2. teilweise total unverständlich (it's just magic).
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: bitmaster am 30. July 2006, 16:00
Also ich bin im Longmode und verwende VESA 2.0. Das kann selbst meine Geforce 2 und macht das sogar sehr gut. Aber für mich wäre es auch kein Problem auf VESA 3.0 umzusteigen da mein OS sowieso nur auf den neusten Rechnern laufen wird wegen 64 Bit. Aber sind die Ports einheitlich bei allen gleich? Also kann ich mich darauf verlassen das die auch überall so angesprochen werden um den Modus zu wechseln. Sonst wäre es doch vielleicht besser in den RM zurück. Noch mal an blueXseven: Wie hast du das denn gemacht?

bitmaster
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: n3Ro am 30. July 2006, 23:17
Em, nein. Die können sie von Modellreihe zu Modellreihe ändern, und das tun sie auch öfters (Von Hersteller zu Hersteller sind sie sowieso komplett anders). Aber nicht nur die Ports (MemoryMapped IO) sondern auch der Inhalt ändert sich ab und zu. Also wenn du Wert A in Register B schreibst, kann das auf einer GF2 andere Auswirkungen als auf einer GFFX haben.
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: bitmaster am 31. July 2006, 01:11
Zitat von: n3Ro
Em, nein. Die können sie von Modellreihe zu Modellreihe ändern, und das tun sie auch öfters (Von Hersteller zu Hersteller sind sie sowieso komplett anders). Aber nicht nur die Ports (MemoryMapped IO) sondern auch der Inhalt ändert sich ab und zu. Also wenn du Wert A in Register B schreibst, kann das auf einer GF2 andere Auswirkungen als auf einer GFFX haben.
Und genau deswegen bevorzuge ich auch den "int 10h". Also zurück in den RM. Ich frage mal blueXseven per mail wie der das gemacht hat.

bitmaster
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: scales of justice am 01. August 2006, 14:07
Zitat
eine andere Möglichkeit als per vm86 wäre der Protected Mode Entry Point


die Idee war schon, hat aber eben den Haken das sie erst bei VESA 3.0 funktioniert,
und das einfach noch zu wenig Karten unterstützen (siehe oben)


ich denk mal blueXseven macht das irgendwie per Ports,
am Ende muss das ja auch der BIOS-Interrupt irgendwie machen,
und wie soll das schon ohne Ports gehen?
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: ST-225 am 01. August 2006, 15:01
Die Ports werden aber von den herstellern streng geheim gehalten
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: nooooooooos am 01. August 2006, 15:09
Er kann sich ja den BIOS-Code anguggen...und für PM umschreiben!
Oder im Linux stöbern....
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: ST-225 am 01. August 2006, 15:13
wenn dann muss er sich den des vga-bios anschauen, denk ich mal. Und dann für jede Grafikkarte einen passenden treiber schreiben.
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: Jidder am 01. August 2006, 15:21
Im BIOS steht vermutlich nicht mehr als in den freien Treibern von x.org und xfree86.
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: Osbios am 01. August 2006, 17:37
In den freien Treibern von X11 wird sehr viel mehr stehen als irgend jemand aus einem Disassembliertem BiosBrocken herauslesen kann!

Mal ne ernste Frage: lohnt sich der Aufwand?

Wenn man VESA benutzen will muss man in den RM zurück oder einen v86/v386 Modus unterstüzen. Zudem wird von vielen NEUEN Karten nur VESA 2.0 unterstütz(besonders bei ATI). Kurzum VESA 2.0 = 60Hz. Das ist in hohen Auflösungen nur auf einem Flachbildschirm erträglich. Ich hatte dass  z.B. mit einer Radeon 9200 und Vesa Treibern unter Linux, habe dann zum Glück herausgefunden, dass es da ja noch richtige Treiber von Linux gibt[nicht fglrx!])

Linux ist also eine Gute Anlaufstelle für Informationen zur Grakenprogrammierung wenn man kein 3D benötigt. Allerdings wird man sich für die einzelnen Karten bzw. Chips jeweils einen Treiber Programmieren müssen!

Naja, sonst bleibt nurnoch der ultimative Standard...

VGA

Hey, damit kann man noch immer verdammt viel machen!!! :]
Titel: Im laufenden OS den Grafikmodus wechseln.
Beitrag von: bitmaster am 03. August 2006, 00:27
OK, vielen dank blueXseven. Genau so habe ichs mir auch gedacht. Ich werde das höchstwarscheinlich auch so machen. Doch z.Z. bastle ich gerade an PNG-Unterstützung. Viel spaß noch beim OS proggen.

bitmaster

PS: Ach ja, dein OS gefällt mir von allen (Hobby OS) die ich bis jetzt gesehen habe am besten. Mach weiter so. Aber bald kommt Konkurenz. ^^ Mein 64 Bit OS-64, also streng dich an. ;-)

bitmaster