void kprintstr(char* str); void khang(); void kdelay(int mills); /* HACK. kmain has to come first because of flat binary */ void kmain(void) { char* k_msg = "Hello world from 32-bit C kernel!"; /*33 characters*/ kprintstr(k_msg); } void kdelay(int millis) { for(int i = 0; i < millis; i++) { for(int j = 0; j < millis; j++) { } } } void kprintstr(char* str) { /* 80x25 */ char* ch = (char*)0xb8000 + 2 * 80 * 21; char color = 0xF; char swap[] = {'|','\\', '/', '\\', '/', '|', '|'}; while(*str) { *ch = *str; ch++; *ch = color; /* white character */ ch++; str++; } ch = (char*)0xb8000 + 2 * 80 * 22; while(1) { int i = 0; while(1) { /*display 10 characters doing*/ for(int j = 0; j < 80 * 3; j++) { *(ch + j * 2) = swap[(i * 1337 + j * 33 ) % 3]; *(ch + j * 2+ 1) = color; color = (color + 1) % 0xF; } kdelay(5000); i++; } } }