PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausgabe auf der Konsole im Protected Mode


armin
05.04.2005, 22:48
Hallo,
kann mir jemand erklären wie man mit dem Speichermodell flat (also im Protected Mode ) Zeichen auf der Konsole ausgibt.? Die Bios Interrupts kann man nicht mehr benutzen oder ?

vielen Dank und Grüße

Armin


Jidder
06.04.2005, 13:26
Hi,

der Speicherbereich für den Textmodus beginnt an 0x000B8000. Der Speicher ist so aufgebaut, dass immer abwechselnd ein Byte das Zeichen enthält und ein Byte die Vorder- und Hintergrundfarbe. Wenn du also z.b. die Zeichenkette "Hallo Welt" ausgeben willst, musst du
1. einen Zeiger auf den Videospeicher erstellen (z.b. edi)
2. 1 Byte der Zeichenkette einlesen
3. schauen ob das ende der zeichenkette erreicht ist (also z.b. ob das byte 0 ist)
4. Das Zeichen nach [edi] schreiben
5. edi um 1 erhöhen
6. nach [edi] die farbe (z.b. 0x07 für grau auf schwarz) schreiben
7. edi um 1 erhöhen
8. nach 2. springen

Den Cursor kannst du dann noch bewegen, indem du an die Ports 0x3D5 das offset schickst:

Mal was in C:
int offset = cursorx + cursory * 80; // oder in asm einfach (EDI - 0xB8000) / 2 ... warum das so ist? selber nachrechnen ;)

outb(14, 0x3D4); // den wert 14 an port 0x3D4 schicken, damit er weiss was jetzt kommt
outb(offset>>8, 0x3D5); // das highbyte des offsets an port 0x3D5 schicken
outb(15, 0x3D4); // ...
outb(offset, 0x3D5); // das lowbyte des offsets an port 0x3D5 schicken


das Stück C hier oben ist aus meinem "Video-Treiber": http://easytarget.de/jidder/c-80x25-video-treiber-pmode.html (wenn du was mit C anfangen kannst)

Jidder