Hey, hab mich jetzt mal daran gewagt, nen kernel in c anzufangen. habe Leider ein problem. iwi kommt eine farbige vielfalt mit braunem hintergrund auf dem bildschirm, bei meinem code. Kann mir jemand viellecht helfen? was mache ich falsch, bei der speicherung des attributbytes.
Und was kann es für einen grund haben das sizeof() nicht funktioniert? habe wo jetzt 21 im quelltext in der schleife steht, vorher sizeof(text) stehen gehabt, aber anscheinend hat sizeof immer 5 zurückgegeben, egal wie lang text war.
// Bildschirmdefinition
#define DISPLAY_MEM_START 0xb8000
#define DISPLAY_MEM_END 0xB8FA0
// Konsolendefinition
#define KON_LINE_SIZE 0xA0
int static kon_line = 0;
void clear_screen(void)
{
char *videos = (char*) 0xb8000;
for(videos=(char*)DISPLAY_MEM_START; videos < (char*) DISPLAY_MEM_END;videos++)
*videos=0;
}
void kprintf(char text[])
{
int cursor = 0;
char *video = (char*) DISPLAY_MEM_START;
for(cursor = 0; cursor < 21; cursor++)
{
video[(kon_line * KON_LINE_SIZE)+(cursor)] = text[cursor];
video[(kon_line * KON_LINE_SIZE)+(cursor+1)] = 0x7;
}
kon_line++;
}
void init(void)
{
clear_screen();
kprintf("Willkommen zu InfoOS");
}