Hier sind die gewünschten Panic-Meldungen:
APIC write with len=1 (should be 4)
I/O apic write with len=1 (should be 4)
Diese beiden Meldungen wiederholen sich zweimal danach wird der kernel ordnungsgemäß aufgerufen.
[EDIT]
Habe jetzt folgenden Code ausprobiert:
void init(void)
{
const char hw[] = "Hello World!";
int i;
char* video = (char*) 0xB8000;
int n = 0;
while (n < 0xFA0)
{
video[n] = 0x0;
n++;
}
for (i = 0; hw[i] != '\0'; i++)
{
video[i * 2] = hw[i];
video[i * 2 + 1] = 0x07;
}
}
Funktioniert wunderbar - Keine Panics mehr.
Danke an alle für die Mühen und Erklärungen
mfg rungaaz
[EDIT II]
Zu der Variableninitialisierung in C:
Also in C muss eine Variable mit
variable = wert; initialisiert werden.
Die Variante mit den Klammern funktioniert nur in C++.
Wahrscheinlich, weil es in C++ Klassen gibt, welche meistens einen Konstruktor und einen Destruktor besitzen.
Mit
int n(1); würde man quasi dann den Konstruktor aufrufen, und den Wert als Parameter übergeben.
Das ist aber nur ein Theorie von mir
Ich weiß nicht ob das stimmt.