aboutsummaryrefslogtreecommitdiff
path: root/kernel/kernel.c
blob: 80f110db807eec434f04c787eff9df343b5df9b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "./gpu/text_mode/display.h"
#include "./gpu/text_mode/colours.h"
#include "./io/keyboard/keyboard_handler.h"
#include "global_descriptor_table.h"

void run_kern_demo()
{
  scrn_set_text_colour(COLOUR_LIGHT_GREEN, COLOUR_BLACK);
  scrn_clear();

  scrn_println("  _   _              ____   _____ ");
  scrn_println(" | | (_)            / __ \\ / ____|");
  scrn_println(" | |_ _ _ __  _   _| |  | | (___  ");
  scrn_println(" | __| | '_ \\| | | | |  | |\\___ \\ ");
  scrn_println(" | |_| | | | | |_| | |__| |____) |");
  scrn_println("  \\__|_|_| |_|\\__, |\\____/|_____/ ");
  scrn_println("               __/ |              ");
  scrn_println("              |___/               ");

  scrn_println("");
  scrn_println("Supported colours");
  scrn_set_text_colour(COLOUR_BLUE, COLOUR_BLACK);
  scrn_print("blue ");
  scrn_set_text_colour(COLOUR_GREEN, COLOUR_BLACK);
  scrn_print("green ");
  scrn_set_text_colour(COLOUR_CYAN, COLOUR_BLACK);
  scrn_print("cyan ");
  scrn_set_text_colour(COLOUR_RED, COLOUR_BLACK);
  scrn_print("red ");
  scrn_set_text_colour(COLOUR_PURPLE, COLOUR_BLACK);
  scrn_print("purple ");
  scrn_set_text_colour(COLOUR_BROWN, COLOUR_BLACK);
  scrn_print("brown ");
  scrn_set_text_colour(COLOUR_GRAY, COLOUR_BLACK);
  scrn_println("gray ");
  scrn_set_text_colour(COLOUR_DARK_GREY, COLOUR_BLACK);
  scrn_print("dark gray ");
  scrn_set_text_colour(COLOUR_LIGHT_BLUE, COLOUR_BLACK);
  scrn_print("light blue ");
  scrn_set_text_colour(COLOUR_LIGHT_GREEN, COLOUR_BLACK);
  scrn_print("light green ");
  scrn_set_text_colour(COLOUR_LIGHT_CYAN, COLOUR_BLACK);
  scrn_println("light cyan");
  scrn_set_text_colour(COLOUR_LIGHT_RED, COLOUR_BLACK);
  scrn_print("light red ");
  scrn_set_text_colour(COLOUR_LIGHT_PURPLE, COLOUR_BLACK);
  scrn_print("light purple ");
  scrn_set_text_colour(COLOUR_YELLOW, COLOUR_BLACK);
  scrn_print("yellow ");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_BLACK);
  scrn_println("white ");

  scrn_set_text_colour(COLOUR_BLACK, COLOUR_WHITE);
  scrn_print("B");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_BLUE);
  scrn_print("A");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_GREEN);
  scrn_print("C");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_CYAN);
  scrn_print("K");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_RED);
  scrn_print("G");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_PURPLE);
  scrn_print("R");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_BROWN);
  scrn_print("O");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_GRAY);
  scrn_print("U");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_LIGHT_BLUE);
  scrn_print("N");
  scrn_set_text_colour(COLOUR_BLACK, COLOUR_YELLOW);
  scrn_print("D");
  scrn_set_text_colour(COLOUR_BLACK, COLOUR_LIGHT_GREEN);
  scrn_print(" ");

  scrn_set_text_colour(COLOUR_BLACK, COLOUR_LIGHT_CYAN);
  scrn_print("C");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_LIGHT_RED);
  scrn_print("O");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_LIGHT_PURPLE);
  scrn_print("L");
  scrn_set_text_colour(COLOUR_BLACK, COLOUR_WHITE);
  scrn_print("O");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_RED);
  scrn_print("U");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_PURPLE);
  scrn_print("R");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_BROWN);
  scrn_print("S");
  scrn_set_text_colour(COLOUR_WHITE, COLOUR_GRAY);
  scrn_print("!");

  scrn_set_text_colour(COLOUR_WHITE, COLOUR_BLACK);
  scrn_newline();
}



void kernel_entrypoint()
{
  init_gdt();
  init_keyboard_handler();
  run_kern_demo();
  while(1);
}