Autor Thema: Vga/svga (vesa) im Pmode  (Gelesen 5192 mal)

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« am: 23. June 2004, 18:20 »
Hallo,
Weiß jemand wie man mit VGA oder VESA im PMode arbeitet? Denn die Interrupts darf man doch im PMode nichtmehr benutzen oder?

mastermesh

  • Beiträge: 341
    • Profil anzeigen
    • http://www.kostenloser-laptop.de/
Gespeichert
« Antwort #1 am: 23. June 2004, 18:23 »
Die meisten Leute bedienen sich hier an einem Workaround. Sie implementieren einen V86-Monitor, sodass sie auch im PMode auf das Video-BIOS zugreifen können.

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 23. June 2004, 19:07 »
O_o Wird ein wenig kompliziert...naja V86 is dieser gefakte realmode oder? Ich sehe mich mal nach docs um... danke für die schnelle antwort.

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #3 am: 23. June 2004, 19:44 »
Oder du nimmst das PMode-Interface des Vesa-BIOS. Dort ließt du einfach die Adresse 0xC0000 aus, wo sich das VGA BIOS befindet, suchsat nach einem Key, ließt einen Datenblock, legst paar Deskriptoren an und initialisierst es. Das jetzt alles in Einzelheiten zu erklären würde Seiten füllen. Also ich werde bald (wenn die ganzen Referate und die Engl. Arbeit weg sind) ein Tut dazu schreiben. Wenn du nicht solange warten möchstes kannst du ja auch selber danach suchen. Was das alles noch komplizierter macht, ist dass alles 286er kompatibel ist....

Another Stupid Coder

  • Beiträge: 749
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 23. June 2004, 20:30 »
Ähm...der 286 hatte doch noch nichtmal PMode soweit ich weiß....

Danke ich warte gerne auf dein Tutorial :)

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #5 am: 23. June 2004, 20:42 »
Doch, der 286 hatte schon PMode, aber halt nur 16 Bit. So hast du dann bei den Funtionen z.B. 16 Bit Adressen und dumusst die noch auf 32 Bit erweitern usw.....

tokmar

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 23. June 2004, 20:58 »
Ist zwar schon eine Weile her wo ich Gfxzeugs programmiert hab, aber so kompliziert war das nicht.
1. im RMode den Grafikmodus einschalten
2. einen Selektor auf das Segment A000000h setzen
3. den PMode einschalten

Dann kannst du auf den Grafikspeicher (der in dieses Segment gemappt wird) einfach deine Daten reinschreiben.

Zum berechnen eines Punktes nimmst du die Formel ((y_pos*x_auflösung)+x_pos)*byte_pro_pixel(Farbauflösung)
Der Rest ist einfache Mathematik.

Ich glaube nicht, das du ersthaft die langsamen Biosfunktionen nutzen willst

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #7 am: 23. June 2004, 21:19 »
Das das so geht ist hier wohl jedem klar. Aber wir wollen ja u.A. die Modi im Pmode setzen! (Man ist sich beim PC-Start ja nicht immer sicher, was fürn Modi man haben möchte.

tokmar

  • Beiträge: 5
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 27. June 2004, 11:03 »
Hmmm, ich weiss nicht was einfacher ist, ein Krücke zu basteln um die VGA-BIOS-Funktionen aufzurufen oder die Ports zu programmieren. In Ralph Browns Interruptlist waren die Ports der Grafikkarte recht gut beschrieben (glaube ich).
Vllt hab ich auch noch ein Tut dazu.

Was wollt ihr eigentlich noch für Biosfunktionen nutzen? Sehr viel mehr sinnvolles gibt es ja nicht.

chr15

  • Beiträge: 279
    • Profil anzeigen
    • http://www.clinux.de.vu
Gespeichert
« Antwort #9 am: 27. June 2004, 13:16 »
Kann man über die Ports auch PCI/AGP-Vesa Karten ansteuern? Und zwar auch in alle Vesa-Modi? Ich habe mir da mal was angeguckt, das ging nur mit standard VGA und das andere nur mit ISA-VESA-Karten.

 

Einloggen