Servus,
erstmal großes Lob an die lieben Leute, die sich solche Mühe für das Wiki gegeben haben.
Ich habe nach langem Rumgewurschtel und Tools installieren (unter Windows, ich denke der Fall ist für euch klar
) geschafft ein bootfähiges Image, welches GRUB benützt zu erstellen, so wie es in "Teil 4 - Hello World" des Wikis beschrieben ist.
Da ich nirgends eine Anleitung gefunden habe, wie man nun den Bildschirm löscht.
[...] ein wunderschönes Hello World in die linke obere Ecke. Den Rest des Bildschirms zu löschen haben wir leider vergessen, so dass das über irgendwelche BIOS-Meldungen geschrieben wird.
Nun, da ich nicht - so wie wir hier in Bayern sagen - auf der Brennsuppe dahergeschwommen komme, schonmal kleine Programme für meinen Taschenrechner in Assembler geschrieben habe und über passable C-Kenntnisse (oder vielmehr C++) verfüge, habe ich folgende schleife in die init()-Funktion hinzugefügt:
//...
int n;
while (n < 0xB8FA0)
{
video[n] = 0x0;
n++;
}
//...
vorher wurde 'video' als Pointer auf die Adresse 0xB8000 definiert.
Im Wiki steht, der Videospeicher ist 4kB groß d.h. 4000 Byte entspricht FA0 in hexadezimal.
Dann rechnet man zu 0xB8000 noch FA0 dazu, und man bekommt die letzte Adresse im Videospeicher - oder?
Mithilfe der schleife wird dann jedes Byte auf 0 (Schwarz) gesetzt. Somit hätte ich ja dann quasi auch den Bildschirm gelöscht.
Und es funktioniert sogar!
Leider gibt Bochs vor dem Ausführen einige PANIC-Meldungen aus, welche ich alle mit 'Continue' quittiere.
Das Hello World wird korrekt auf einem schwarzen Bildschirm ausgegeben, so wie ich es wollte.
Die Frage ist nur, kann ich das auf meinen PC loslassen? Ich meine Bochs wird nicht umsonst PANIC schieben.
mfg rungaaz