#include <stddef.h>
#include <stdint.h>
#include <stdarg.h>
#include <stdbool.h>
#include "Init.h"

void Init(){
    InitTerminal();
    TerminalSetColor(0x0E);
    TerminalPrint("Kernel");
    TerminalSetColor(0x0F);
    TerminalPrint(" :: ");
    InitGdt();
    TerminalSetColor(0x0A);
    TerminalPrint("GDT Loaded\n");
	asm("   movw $0x18, %ax \n \
                movw %ax, %ss \n \
                movl $0x20000, %esp");

    TerminalSetColor(0x0E);
    TerminalPrint("Kernel");
    TerminalSetColor(0x0F);
    TerminalPrint(" :: ");
    InitIdt();
    TerminalSetColor(0x0A);
    TerminalPrint("IDT Loaded\n");
    TerminalSetColor(0x0E);
    TerminalPrint("Kernel");
    TerminalSetColor(0x0F);
    TerminalPrint(" :: ");
    InitPics();
    TerminalSetColor(0x0A);
    TerminalPrint("PICS Loaded\n");
    TerminalSetColor(0x0E);
    TerminalPrint("Kernel");
    TerminalSetColor(0x0F);
    TerminalPrint(" :: ");
    InitMM();
    TerminalSetColor(0x0A);
    TerminalPrint("Paging Enabled\n");
    TerminalSetColor(0x0E);
    TerminalPrint("Kernel");
    TerminalSetColor(0x0F);
    TerminalPrint(" :: ");
    asm("	movw $0x38, %ax \n \
		ltr %ax");
    TerminalSetColor(0x0A);
	TerminalPrint("TR Loaded\n\n");
    TerminalSetColor(0x0A);
    TerminalPrint("Switching to User Mode\n");
    TerminalSetColor(0x0F);
}