diff options
| author | James Barnett <noreply@jamesbarnett.xyz> | 2018-08-28 14:58:53 +0100 |
|---|---|---|
| committer | James Barnett <noreply@jamesbarnett.xyz> | 2018-08-28 14:58:53 +0100 |
| commit | e88de0162cff8bbad80972c1b92355b9d2db0213 (patch) | |
| tree | 625f5544459177fbe54161bc89887b0288a36c29 /kernel.c | |
| parent | f85dc5011b3ff2342c6129eafb038ae11fef44a3 (diff) | |
| download | tinyOS-e88de0162cff8bbad80972c1b92355b9d2db0213.tar.xz tinyOS-e88de0162cff8bbad80972c1b92355b9d2db0213.zip | |
Add bootable kernel with basic print function
Diffstat (limited to 'kernel.c')
| -rw-r--r-- | kernel.c | 40 |
1 files changed, 40 insertions, 0 deletions
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(); +} |