Autor Thema: VESA EDID Infos  (Gelesen 7362 mal)

Ch40zz

  • Beiträge: 12
    • Profil anzeigen
Gespeichert
« am: 19. February 2016, 19:17 »
Hey, ich habe mal wieder ein Problem :D
Um eine Standardauflösung für mein OS zu suchen wollte ich die EDID Infos aus dem BIOS lesen.
VESA an sich funktioniert gut, man kann alle Auflösungen auswählen und dort Bitmaps zeichnen lassen.
Das Problem ist, dass nach dem EDID call das Register AH 1 ist und AL nicht 0x4F ist (also: not supported)
Hier mein code (credits für den mode switcher gehen an Napalm)
memset((void*)&regs, 0, sizeof(regs16_t));
regs.ax = 0x4F15;
regs.bx = 1;
regs.es = 0;
regs.di = 0x1000;
int32(0x10, &regs);

printf("AX: %X | ES:DI: %X:%X\n", regs.ax, regs.es, regs.di);

Getestet habe ich den Code auf QEMU 1,2 und auf VirtualBox, bei allen das selbe Ergebnis :(
Liegt es vielleicht an den VMs?
Vielen Dank im Vorraus!

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 19. February 2016, 22:39 »
Das VGA-BIOS von Qemu unterstützt diesen Aufruf nicht. Laut diesem Code werden nur die VBE-Funktionen 0x00 bis 0x08, 0x0a und 0x10 unterstützt. Ich würde nicht erwarten, dass reale (moderne) Hardware besser viel ist.

Moderne Features und ein VESA-Standardtreiber vertragen sich nicht besonders gut. Windows setzt standardmäßig 1024x768 (seit Vista auch im Bootloader) und lässt dann den Nutzer entscheiden. Das ist ausreichend und so ziemlich das beste, was du ohne speziellen Treiber erreichen kannst.

Ch40zz

  • Beiträge: 12
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 19. February 2016, 22:58 »
Okay Danke, dann werde ich das wohl auch so machen.
Im Endeffekt ist es ja kein großes Problem, war nur nervig dass ach VirtualBox und VMWare es nicht implementiert haben :(

 

Einloggen