Little colorful demo
This commit is contained in:
parent
1dce3a0cf7
commit
29f0253e5b
@ -70,28 +70,53 @@ extern "C" void _start()
|
|||||||
kinfoln("Prepared scheduler");
|
kinfoln("Prepared scheduler");
|
||||||
|
|
||||||
Scheduler::add_kernel_task([]() {
|
Scheduler::add_kernel_task([]() {
|
||||||
|
int64_t x = 0;
|
||||||
|
int64_t y = 0;
|
||||||
|
int64_t xvel = 10;
|
||||||
|
int64_t yvel = 10;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
sleep(1000);
|
sleep(5);
|
||||||
for (int i = 0; i < 5; i++) { Serial::println("woo!"); }
|
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([]() {
|
Scheduler::add_kernel_task([]() {
|
||||||
sleep(500);
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
sleep(2000);
|
sleep(200);
|
||||||
for (int i = 0; i < 6; i++) { Serial::println("boo!"); }
|
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");
|
kinfoln("Prepared scheduler tasks");
|
||||||
|
|
||||||
ACPI::SDTHeader* rootSDT = ACPI::GetRSDTOrXSDT();
|
ACPI::SDTHeader* rootSDT = ACPI::GetRSDTOrXSDT();
|
||||||
@ -104,6 +129,5 @@ extern "C" void _start()
|
|||||||
|
|
||||||
kinfoln("Interrupts enabled");
|
kinfoln("Interrupts enabled");
|
||||||
|
|
||||||
sleep(20000);
|
while (1) Scheduler::sleep(200);
|
||||||
reboot();
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user