x86_fat12bs/src/kernel.c

54 lines
1.1 KiB
C

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++;
}
}
}