From a4eef728064cfc3f14396d0ad91f105f12ef32ea Mon Sep 17 00:00:00 2001 From: Jacob McDonnell Date: Sun, 8 Jun 2025 15:03:33 -0400 Subject: Initial Commit --- source/main.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 source/main.c (limited to 'source/main.c') diff --git a/source/main.c b/source/main.c new file mode 100644 index 0000000..316274f --- /dev/null +++ b/source/main.c @@ -0,0 +1,51 @@ +#include +#include +#include "LimineRequests.h" +#include "memory.h" + +static void HaltForever(void) { + while (true) { + asm("hlt"); + } +} + +void KernelMain(void) { + if (!VerifyBaseRevision()) { + HaltForever(); + } + + if (!VerifyStackSizeRequest()) { + HaltForever(); + } + + if (!VerifyFramebufferRequest()) { + HaltForever(); + } + + const uint64_t framebufferCount = + framebufferRequest.response->framebuffer_count; + + struct limine_framebuffer **framebuffers = + framebufferRequest.response->framebuffers; + + struct limine_framebuffer *framebuffer = nullptr; + + const uint32_t colors[] = {0xFF0000, 0x00FF00, 0x0000FF}; + uint8_t count = 0; + uint8_t color = 0; + + for (uint64_t i = 0; i < framebufferCount; i++) { + framebuffer = framebuffers[i]; + volatile uint32_t *fb_ptr = (volatile uint32_t *)framebuffer->address; + for (uint64_t j = 0; j < framebuffer->height && j < framebuffer->width; + j++) { + fb_ptr[j * (framebuffer->pitch / 4) + j] = colors[color]; + if ((count = (count + 1) % 16) == 0) { + color = (color + 1) % 3; + } + } + } + + HaltForever(); +} + -- cgit v1.2.3