Autor Thema: Im laufenden OS den Grafikmodus wechseln.  (Gelesen 8285 mal)

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« 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
In the Future everyone will need OS-64!!!

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #1 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

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 30. July 2006, 11:14 »
Das ist aber VESA 3.0. Und das unterstützen glaub ich (noch?) nicht viele Computer....

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #3 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

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #4 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
Dieser Text wird unter jedem Beitrag angezeigt.

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #5 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

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #6 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...
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #7 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

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #8 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 ;)
Dieser Text wird unter jedem Beitrag angezeigt.

thetrue

  • Beiträge: 216
    • Profil anzeigen
    • http://www.the-true.net
Gespeichert
« Antwort #9 am: 30. July 2006, 14:48 »
hier mal die ports die helfen könnten ... aber kA wie man die anwendet ^^

thetrue way is my way

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #10 am: 30. July 2006, 15:06 »
nach dem was da dran steht haben die abe rnicht viel mit VESA am Hut...

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #11 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).
Agieren statt Konsumieren!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #12 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
In the Future everyone will need OS-64!!!

n3Ro

  • Beiträge: 288
    • Profil anzeigen
Gespeichert
« Antwort #13 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.
Agieren statt Konsumieren!

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #14 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
In the Future everyone will need OS-64!!!

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #15 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?

ST-225

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« Antwort #16 am: 01. August 2006, 15:01 »
Die Ports werden aber von den herstellern streng geheim gehalten

nooooooooos

  • Beiträge: 734
    • Profil anzeigen
Gespeichert
« Antwort #17 am: 01. August 2006, 15:09 »
Er kann sich ja den BIOS-Code anguggen...und für PM umschreiben!
Oder im Linux stöbern....

ST-225

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« Antwort #18 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.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #19 am: 01. August 2006, 15:21 »
Im BIOS steht vermutlich nicht mehr als in den freien Treibern von x.org und xfree86.
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen