From f2899b62b997aafc25666f21ea3a754030a8de71 Mon Sep 17 00:00:00 2001 From: Elizabeth Alexander Hunt Date: Mon, 28 Sep 2026 21:08:07 -0700 Subject: Upload from https://github.com/TheHuddle/pr-practice/pull/10/changes --- kernel.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 kernel.c (limited to 'kernel.c') diff --git a/kernel.c b/kernel.c new file mode 100644 index 0000000..190d36e --- /dev/null +++ b/kernel.c @@ -0,0 +1,36 @@ +#include +#include + +#define WIDTH 80 +#define HEIGHT 25 + +#define BLACK 0 +#define BLUE 1 +#define GREEN 2 +#define RED 4 +#define MAGENTA 13 +#define WHITE 15 + +int strlen(char* s) { + int n = 0; + char* s_ptr = s; + while (*(s_ptr++)) { + n++; + } + return n; +} + +void kernel(void) { + uint16_t* vgamem = (uint16_t*) 0xB8000; + uint16_t vgacolors[6] = {WHITE | RED << 4, WHITE | GREEN << 4, WHITE | BLUE << 4, BLACK | RED << 4, BLACK | GREEN << 4, BLACK | BLUE << 4}; + char* s = "Hello world!"; + int i,j,k; + for (k = 0; k >= 0; ++k) { + k = (k % 5); + j = 0; + while (j < 100000000) { j++; } // Since we don't have an interrupt descriptor table we can't use the PIC; this emulates "sleeping" + for (i = 0; i < WIDTH*HEIGHT; i++) { + vgamem[i] = s[i % strlen(s)] | vgacolors[(i+k) % 6] << 8; + } + } +} -- cgit v1.3