From e88de0162cff8bbad80972c1b92355b9d2db0213 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Tue, 28 Aug 2018 14:58:53 +0100 Subject: Add bootable kernel with basic print function --- kernel.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 kernel.c (limited to 'kernel.c') diff --git a/kernel.c b/kernel.c new file mode 100644 index 0000000..1c3a97c --- /dev/null +++ b/kernel.c @@ -0,0 +1,40 @@ + +#define FRAME_SIZE (80 * 25 * 2) // 80 cols, 25 rows, 2 bytes per char + +char *video_ram = (char *) 0xB8000; +int cursor_pos = 0; + +void clear_screen() +{ + for (int i = 0; i < FRAME_SIZE; i = i + 2) + { + video_ram[i] = ' '; + video_ram[i + 1] = 0x07; + }; + cursor_pos = 0; +} + +void print(char *msg) +{ + int j = 0; + while (msg[j] != '\0') + { + video_ram[cursor_pos++] = msg[j]; + video_ram[cursor_pos++] = 0x07; + ++j; + } +} + + +void run_kern() +{ + clear_screen(); + + print("I am a kernel!"); + print(" another message"); +} + +void kernel_entrypoint() +{ + run_kern(); +} -- cgit v1.2.3