54 lines
1.1 KiB
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++;
|
|
}
|
|
}
|
|
} |