From 29f0253e5bbcc94ff952b970f332ef021f21281a Mon Sep 17 00:00:00 2001 From: apio Date: Tue, 20 Sep 2022 20:49:31 +0200 Subject: [PATCH] Little colorful demo --- kernel/src/main.cpp | 50 +++++++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp index 48647cd7..db584d65 100644 --- a/kernel/src/main.cpp +++ b/kernel/src/main.cpp @@ -70,28 +70,53 @@ extern "C" void _start() kinfoln("Prepared scheduler"); Scheduler::add_kernel_task([]() { + int64_t x = 0; + int64_t y = 0; + int64_t xvel = 10; + int64_t yvel = 10; while (1) { - sleep(1000); - for (int i = 0; i < 5; i++) { Serial::println("woo!"); } + sleep(5); + uint32_t color = (uint32_t)Mersenne::get(); + uint32_t* colptr = &color; + x += xvel; + y += yvel; + if ((x + 10) >= framebuffer0.width()) + { + xvel = -xvel; + x = (framebuffer0.width() - 10); + } + if ((y + 10) >= framebuffer0.height()) + { + yvel = -yvel; + y = (framebuffer0.height() - 10); + } + if (xvel < 0 && (x - 10) < 0) + { + xvel = -xvel; + x = 0; + } + if (yvel < 0 && (y - 10) < 0) + { + yvel = -yvel; + y = 0; + } + framebuffer0.paint_rect(x, y, 10, 10, *(Color*)colptr); } }); Scheduler::add_kernel_task([]() { - sleep(500); while (1) { - sleep(2000); - for (int i = 0; i < 6; i++) { Serial::println("boo!"); } + sleep(200); + uint32_t color = (uint32_t)Mersenne::get(); + uint32_t* colptr = &color; + framebuffer0.paint_rect(Mersenne::get() % (framebuffer0.width() - 256), + Mersenne::get() % (framebuffer0.height() - 256), Mersenne::get() % 255, + Mersenne::get() % 255, *(Color*)colptr); } }); - Scheduler::add_kernel_task([]() { - sleep(20000); - kinfoln("Here i am, the hard-to-get thread!"); - while (1) Scheduler::yield(); - }); - kinfoln("Prepared scheduler tasks"); ACPI::SDTHeader* rootSDT = ACPI::GetRSDTOrXSDT(); @@ -104,6 +129,5 @@ extern "C" void _start() kinfoln("Interrupts enabled"); - sleep(20000); - reboot(); + while (1) Scheduler::sleep(200); } \ No newline at end of file