aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--kernel/gpu/text_mode/colours.h (renamed from kernel/io/vga/colours.h)0
-rw-r--r--kernel/gpu/text_mode/display.c (renamed from kernel/io/vga/text_mode_display.c)16
-rw-r--r--kernel/gpu/text_mode/display.h7
-rw-r--r--kernel/io/keyboard/keyboard_handler.c8
-rw-r--r--kernel/io/vga/text_mode_display.h7
-rw-r--r--kernel/kernel.c167
7 files changed, 105 insertions, 104 deletions
diff --git a/Makefile b/Makefile
index 57d03f1..25e1afd 100644
--- a/Makefile
+++ b/Makefile
@@ -7,11 +7,11 @@ default: build
setup:
mkdir -p bin
-build: setup kernel/kernel.c kernel/global_descriptor_table.c kernel/io/vga/text_mode_display.c kernel/io/keyboard/keyboard_handler.c kernel/kernel-bootstrap.asm
+build: setup kernel/kernel.c kernel/global_descriptor_table.c kernel/gpu/text_mode/display.c kernel/io/keyboard/keyboard_handler.c kernel/kernel-bootstrap.asm
nasm -f elf32 kernel/kernel-bootstrap.asm -o bin/kernel-bootstrap.o
$(CC) $(CFLAGS) -c kernel/kernel.c -o bin/kernel.o
$(CC) $(CFLAGS) -c kernel/global_descriptor_table.c -o bin/global_descriptor_table.o
- $(CC) $(CFLAGS) -c kernel/io/vga/text_mode_display.c -o bin/text_mode_display.o
+ $(CC) $(CFLAGS) -c kernel/gpu/text_mode/display.c -o bin/text_mode_display.o
$(CC) $(CFLAGS) -c kernel/io/keyboard/keyboard_handler.c -o bin/keyboard_handler.o
ld -m elf_i386 -T link.ld -o bin/kernel.bin bin/*.o
diff --git a/kernel/io/vga/colours.h b/kernel/gpu/text_mode/colours.h
index a019fd3..a019fd3 100644
--- a/kernel/io/vga/colours.h
+++ b/kernel/gpu/text_mode/colours.h
diff --git a/kernel/io/vga/text_mode_display.c b/kernel/gpu/text_mode/display.c
index db0e028..3659e60 100644
--- a/kernel/io/vga/text_mode_display.c
+++ b/kernel/gpu/text_mode/display.c
@@ -8,7 +8,7 @@ char *video_ram = (char *) 0xB8000;
int cursor_pos = 0;
int char_attribute_byte = 0x07;
-void vga_clear_screen()
+void scrn_clear()
{
for (int i = 0; i < FRAME_SIZE; i = i + 2)
{
@@ -18,7 +18,7 @@ void vga_clear_screen()
cursor_pos = 0;
}
-void vga_print(char *msg)
+void scrn_print(char *msg)
{
int j = 0;
while (msg[j] != '\0')
@@ -29,26 +29,26 @@ void vga_print(char *msg)
}
}
-void vga_print_ln(char *msg)
+void scrn_println(char *msg)
{
- vga_print(msg);
+ scrn_print(msg);
int current_line = cursor_pos / COLS;
cursor_pos = (current_line + 1) * COLS;
}
-void vga_set_text_colour(int foreground, int background)
+void scrn_set_text_colour(int foreground, int background)
{
char_attribute_byte = (background << 4) | foreground;
}
-void vga_print_raw(unsigned char byte)
+void scrn_putchar(unsigned char byte)
{
video_ram[cursor_pos++] = byte;
video_ram[cursor_pos++] = char_attribute_byte;
}
// TODO - jump cursor to prev non 0 text char rather than reversing through whole array
-void vga_backspace()
+void scrn_backspace()
{
if (cursor_pos != 0)
{
@@ -57,7 +57,7 @@ void vga_backspace()
}
}
-void vga_newline()
+void scrn_newline()
{
int current_line = cursor_pos / COLS;
cursor_pos = (current_line + 1) * COLS;
diff --git a/kernel/gpu/text_mode/display.h b/kernel/gpu/text_mode/display.h
new file mode 100644
index 0000000..f4f3724
--- /dev/null
+++ b/kernel/gpu/text_mode/display.h
@@ -0,0 +1,7 @@
+void scrn_clear();
+void scrn_print(char *msg);
+void scrn_println(char *msg);
+void scrn_set_text_colour(int foreground, int background);
+void scrn_putchar(unsigned char byte);
+void scrn_backspace();
+void scrn_newline(); \ No newline at end of file
diff --git a/kernel/io/keyboard/keyboard_handler.c b/kernel/io/keyboard/keyboard_handler.c
index 2578ebf..26b4586 100644
--- a/kernel/io/keyboard/keyboard_handler.c
+++ b/kernel/io/keyboard/keyboard_handler.c
@@ -1,5 +1,5 @@
#include "../../interrupt_descriptor_table.h"
-#include "../vga/text_mode_display.h"
+#include "../../gpu/text_mode/display.h"
#include "scancode_map.h"
extern void keyboard_handler(void);
@@ -70,13 +70,13 @@ void handle_keypress() {
switch(pressed_key)
{
case '\b':
- vga_backspace();
+ scrn_backspace();
break;
case '\n':
- vga_newline();
+ scrn_newline();
break;
default:
- vga_print_raw(pressed_key);
+ scrn_putchar(pressed_key);
}
}
diff --git a/kernel/io/vga/text_mode_display.h b/kernel/io/vga/text_mode_display.h
deleted file mode 100644
index 6c46185..0000000
--- a/kernel/io/vga/text_mode_display.h
+++ /dev/null
@@ -1,7 +0,0 @@
-void vga_clear_screen();
-void vga_print(char *msg);
-void vga_print_ln(char *msg);
-void vga_set_text_colour(int foreground, int background);
-void vga_print_raw(unsigned char byte);
-void vga_backspace();
-void vga_newline(); \ No newline at end of file
diff --git a/kernel/kernel.c b/kernel/kernel.c
index fbef9d4..80f110d 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -1,96 +1,97 @@
-#include "./io/vga/text_mode_display.h"
-#include "./io/vga/colours.h"
+#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()
{
- vga_set_text_colour(COLOUR_LIGHT_GREEN, COLOUR_BLACK);
- vga_clear_screen();
+ scrn_set_text_colour(COLOUR_LIGHT_GREEN, COLOUR_BLACK);
+ scrn_clear();
- vga_print_ln(" _ _ ____ _____ ");
- vga_print_ln(" | | (_) / __ \\ / ____|");
- vga_print_ln(" | |_ _ _ __ _ _| | | | (___ ");
- vga_print_ln(" | __| | '_ \\| | | | | | |\\___ \\ ");
- vga_print_ln(" | |_| | | | | |_| | |__| |____) |");
- vga_print_ln(" \\__|_|_| |_|\\__, |\\____/|_____/ ");
- vga_print_ln(" __/ | ");
- vga_print_ln(" |___/ ");
+ scrn_println(" _ _ ____ _____ ");
+ scrn_println(" | | (_) / __ \\ / ____|");
+ scrn_println(" | |_ _ _ __ _ _| | | | (___ ");
+ scrn_println(" | __| | '_ \\| | | | | | |\\___ \\ ");
+ scrn_println(" | |_| | | | | |_| | |__| |____) |");
+ scrn_println(" \\__|_|_| |_|\\__, |\\____/|_____/ ");
+ scrn_println(" __/ | ");
+ scrn_println(" |___/ ");
- vga_print_ln("");
- vga_print_ln("Supported colours");
- vga_set_text_colour(COLOUR_BLUE, COLOUR_BLACK);
- vga_print("blue ");
- vga_set_text_colour(COLOUR_GREEN, COLOUR_BLACK);
- vga_print("green ");
- vga_set_text_colour(COLOUR_CYAN, COLOUR_BLACK);
- vga_print("cyan ");
- vga_set_text_colour(COLOUR_RED, COLOUR_BLACK);
- vga_print("red ");
- vga_set_text_colour(COLOUR_PURPLE, COLOUR_BLACK);
- vga_print("purple ");
- vga_set_text_colour(COLOUR_BROWN, COLOUR_BLACK);
- vga_print("brown ");
- vga_set_text_colour(COLOUR_GRAY, COLOUR_BLACK);
- vga_print_ln("gray ");
- vga_set_text_colour(COLOUR_DARK_GREY, COLOUR_BLACK);
- vga_print("dark gray ");
- vga_set_text_colour(COLOUR_LIGHT_BLUE, COLOUR_BLACK);
- vga_print("light blue ");
- vga_set_text_colour(COLOUR_LIGHT_GREEN, COLOUR_BLACK);
- vga_print("light green ");
- vga_set_text_colour(COLOUR_LIGHT_CYAN, COLOUR_BLACK);
- vga_print_ln("light cyan");
- vga_set_text_colour(COLOUR_LIGHT_RED, COLOUR_BLACK);
- vga_print("light red ");
- vga_set_text_colour(COLOUR_LIGHT_PURPLE, COLOUR_BLACK);
- vga_print("light purple ");
- vga_set_text_colour(COLOUR_YELLOW, COLOUR_BLACK);
- vga_print("yellow ");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_BLACK);
- vga_print_ln("white ");
+ 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 ");
- vga_set_text_colour(COLOUR_BLACK, COLOUR_WHITE);
- vga_print("B");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_BLUE);
- vga_print("A");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_GREEN);
- vga_print("C");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_CYAN);
- vga_print("K");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_RED);
- vga_print("G");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_PURPLE);
- vga_print("R");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_BROWN);
- vga_print("O");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_GRAY);
- vga_print("U");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_LIGHT_BLUE);
- vga_print("N");
- vga_set_text_colour(COLOUR_BLACK, COLOUR_YELLOW);
- vga_print("D");
- vga_set_text_colour(COLOUR_BLACK, COLOUR_LIGHT_GREEN);
- vga_print(" ");
+ 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(" ");
- vga_set_text_colour(COLOUR_BLACK, COLOUR_LIGHT_CYAN);
- vga_print("C");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_LIGHT_RED);
- vga_print("O");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_LIGHT_PURPLE);
- vga_print("L");
- vga_set_text_colour(COLOUR_BLACK, COLOUR_WHITE);
- vga_print("O");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_RED);
- vga_print("U");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_PURPLE);
- vga_print("R");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_BROWN);
- vga_print("S");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_GRAY);
- vga_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("!");
- vga_set_text_colour(COLOUR_WHITE, COLOUR_BLACK);
+ scrn_set_text_colour(COLOUR_WHITE, COLOUR_BLACK);
+ scrn_newline();
}