hos/kernel.c

64 lines
1.1 KiB
C

//kernel.c
//08/13/03 Josh Holtrop
//Holtrop's Operating System
#include "k_defines.h"
#include "lib/string.h"
#include "lib/io.h"
#include "functions.h"
#include "video.h"
#include "mm.h"
void isr(dword num);
void k_init();
#include "mm.c"
#include "functions.c"
#include "video.c"
dword timer = 0;
void k_init()
{
remap_pics(0x20, 0x28);
//set timer : 2e9c = 100hz
outportb(0x43, 0x34);
outportb(0x40, 0x9c); //lsb
outportb(0x40, 0x2e); //msb
enable_ints();
video_init((ModeInfoBlock *) 0x90306);
mm_init();
console_cls();
printf("Memory available to OS: %d MB", mm_totalmem/0x100000);
pageblock *pb = first_pageblock;
for (;;)
{
if (pb->flags == MM_PB_NP)
break;
printf("\nBase: 0x%x; Limit: 0x%x; Flags: 0x%x, Link: 0x%x", pb->base, pb->length, pb->flags, pb->link);
pb = (pageblock *) pb->link;
}
int a;
for (a = -1024; a < 778; a += 98)
printf("\n%u\t%d\t%x", a, a, a);
//printf("\n%d\t%d", -123, -23456);
}
void isr(dword num)
{
if (num == 0x20)
{
timer++;
eoi();
}
//if (num == 0x21)
// restart();
}