Autor Thema: VESA Super VGA benutzen  (Gelesen 6272 mal)

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« am: 17. June 2006, 14:48 »
Ich will die VESA Funktionen benutzen. Soweit hab ich auch kein Problem, aber wenn ich z. B. den Ganzen Bildschirm mit einer Farbe füllen will werden die unteren Punkte nicht angezeigt.
So sieht erst einmal der Test Code aus:
mov ax, 4f02h
mov bx, 103h
int 10h

;...
;In den PMode wird geschaltet
;...

mov esi, 0xA0000
mov ecx, 800*600
k:
mov byte [esi], 7
inc esi
loop k

h:
jmp h

Worin liegt der Fehler, dass die Letzten Punkte nicht gezeichnet werden? :?:

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 17. June 2006, 14:52 »
Der Videospeicher an der Adresse 0xA0000 ist genau 65536 Bytes groß. Für 800*600 mit 8 Bit Farbtiefe brauchst du allerdings insgesamt 800 * 600 = 480000 Bytes. Da du im Protected Mode bist, ist es das einfachste den Linearen Framebuffer (LFB) zu nutzen. Zu dem Stichwort sollte es eigentlich hier im Forum genug Informationen geben. (Suchfunktion)
Dieser Text wird unter jedem Beitrag angezeigt.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #2 am: 17. June 2006, 14:56 »
Hi,

bist du dir sicher das es der 800*600 Modus ist? Liegt die Adresse wirklich bei A0000h? Na ja gut, wenn die ersten Pixel angezeigt werden, wird die Adresse wohl stimmen. Aber wundert mich erlich gesagt einbisschen. Außerdem würde ich die Infoblocks prüfen, da z.B. bei Bochs die Moden anders sind wie bei VMware und bei einer echten PC umgebung wieder anders. Bist du dir sicher, dass es 8 Bit pro Farbe ist? So würde ich das aufjeden Fall nicht stehen lassen.

bitmaster
In the Future everyone will need OS-64!!!

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 17. June 2006, 16:25 »
wenn du nicht den linearen Modus benutzt (das sollte man im Pmode aber), kannst du immer nur einen bestimmten Bereich vom Bildschirm füllen,
musst dann den Bereich umstellen und kannst dann erst den anderen füllen

den Modus nennt man "banked mode", oder "fenster modus"
und ist noch ein überbleibsel von DOS (da war einfach nicht genug Platz für einen linearen Framebuffer)
vorallem wegen der Geschwindigkeit nimmt man im Pmode aber jetzt immer den linearen

such einfach bei Google, dort wirst du genug infos drüber finden

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 17. June 2006, 16:33 »
Ich hab jetzt ein bisschen gesucht, aber ich hab nur herusgefunden das ich die richtige Adresse mit irgent einer VESA 01h funktion bekommen soll. Nur das Problem ist ich weiss nicht welche funktion es jetzt wirklich ist. Das ist jetzt nur noch mein Problem.  :?:

scales of justice

  • Beiträge: 228
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 17. June 2006, 18:08 »
ladt dir einfach die VESA Spezifikation von www.vesa.org runter,
da steht alles einfach erklärt drin

Hauke

  • Beiträge: 113
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 18. June 2006, 14:31 »
Tut mir leid, aber ich hab die Seite durchgesehen und nicht das gefunden ,was ich suche.
Kann mir jemand eine direkten Link geben oder so etwas? Das währe sehr nett.
 :?:

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 18. June 2006, 14:46 »
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen