#include "../Include/Init/Init.h"

void KernelStart(){
  Init();

  Main();
}

void task1(void)
{
	char *msg = (char *) 0x40001000;
	int i;

	msg[0] = 't';
	msg[1] = 'a';
	msg[2] = 's';
	msg[3] = 'k';
	msg[4] = '1';
	msg[5] = '\n';
	msg[6] = 0;

	while (1) {
		asm("mov %0, %%ebx; mov $0x01, %%eax; int $0x30":: "m"(msg));
		for (i = 0; i < 1000000; i++);
	}

	return;			/* never go there */
}

void task2(void)
{
	char *msg = (char *) 0x40001000;
	int i;

	msg[0] = 't';
	msg[1] = 'a';
	msg[2] = 's';
	msg[3] = 'k';
	msg[4] = '2';
	msg[5] = '\n';
	msg[6] = 0;

	while (1) {
		asm("mov %0, %%ebx; mov $0x01, %%eax; int $0x30":: "m"(msg));
		for (i = 0; i < 1000000; i++);
	}

	return;			/* never go there */
}



int Main(void){
	TerminalPrint("Task Created!\n");

	TerminalPrint("Trying to switch to user task... \n");

  LoadTask((uint32_t *) 0x100000, (uint32_t *) & task1, 0x2000);
	LoadTask((uint32_t *) 0x200000, (uint32_t *) & task2, 0x2000);
  sti;

  while(1);
}