aboutsummaryrefslogtreecommitdiff
path: root/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel.c')
-rw-r--r--kernel.c40
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();
+}