patch in the fb stuff
This commit is contained in:
parent
54d7e6b02b
commit
5f136a66af
|
@ -54,10 +54,15 @@ pub fn memory_msg_handler(
|
||||||
val.push(0);
|
val.push(0);
|
||||||
}
|
}
|
||||||
vm.registers[1] = hbvm::value::Value(val.as_ptr() as u64);
|
vm.registers[1] = hbvm::value::Value(val.as_ptr() as u64);
|
||||||
|
log::debug!("Kernel ptr: {:x}", val.as_ptr() as u64);
|
||||||
}
|
}
|
||||||
1 => {
|
1 => {
|
||||||
let page_count = msg_vec[0];
|
let page_count = msg_vec[0];
|
||||||
msg_vec.remove(0);
|
msg_vec.remove(0);
|
||||||
|
|
||||||
|
let mptr_raw: [u8; 8] = msg_vec[0..8].try_into().unwrap();
|
||||||
|
let mptr: u64 = u64::from_le_bytes(mptr_raw);
|
||||||
|
log::debug!("Deallocating {} pages @ {:x}", page_count, mptr);
|
||||||
}
|
}
|
||||||
2 => {
|
2 => {
|
||||||
use MemoryQuotaType::*;
|
use MemoryQuotaType::*;
|
||||||
|
|
|
@ -1,21 +1,15 @@
|
||||||
buffer := @as(^u32, @bitcast(18446603339442422060));
|
|
||||||
|
|
||||||
send_msg := fn(): int {
|
|
||||||
msg := 10;
|
|
||||||
@eca(i32, 3, 1, 2, 1);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
modify := fn(a: ^int): void {
|
|
||||||
*a = 4294967295;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
main := fn(): int {
|
main := fn(): int {
|
||||||
@eca(i32, 1, 1, 1);
|
frame_buffer := @as(^u32, @bitcast(18446603339442421760));
|
||||||
|
color := 0;
|
||||||
loop {
|
loop {
|
||||||
@eca(i32, 1, 1, 1);
|
len := 786432*4;
|
||||||
modify(&buffer);
|
loop if len == 0 break else {
|
||||||
|
fb := frame_buffer + @as(^u32, @bitcast(len));
|
||||||
|
*fb = color;
|
||||||
|
len -= 1;
|
||||||
|
color += 100;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,21 +22,28 @@ trace:= fn(message: ^u8):void return log(message, 4);
|
||||||
|
|
||||||
|
|
||||||
request_mem_page := fn(page_count: u8): ^u8 {
|
request_mem_page := fn(page_count: u8): ^u8 {
|
||||||
msg := "\{01}\{01}00000\0";
|
msg := "\{00}\{01}xxxxxxxx\0";
|
||||||
msg_mem_page_count := msg + 1;
|
msg_mem_page_count := msg + 1;
|
||||||
*msg_mem_page_count = page_count;
|
*msg_mem_page_count = page_count;
|
||||||
return @eca(^u8, 3, 2, msg, 8);
|
return @eca(^u8, 3, 2, msg, 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
alloc := fn(): void {
|
release_mem_page := fn(ptr: ^u8, page_count: u8): void {
|
||||||
error("Did not allocate.\0");
|
msg := "\{01}\{00}xxxxxxxx\0";
|
||||||
|
|
||||||
|
msg_mem_page_count := msg + 1;
|
||||||
|
*msg_mem_page_count = page_count;
|
||||||
|
|
||||||
|
msg_mem_ptr := @as(^^u8, @bitcast(msg+2));
|
||||||
|
*msg_mem_ptr = ptr;
|
||||||
|
|
||||||
|
a := @eca(void, 3, 2, msg, 12);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
main := fn(): int {
|
main := fn(): int {
|
||||||
buffer := request_mem_page(3);
|
buffer := request_mem_page(3);
|
||||||
|
release_mem_page(buffer, 3);
|
||||||
alloc();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
|
@ -2,7 +2,7 @@
|
||||||
[boot.limine]
|
[boot.limine]
|
||||||
default_entry = 1
|
default_entry = 1
|
||||||
timeout = 0
|
timeout = 0
|
||||||
verbose = true
|
verbose = false
|
||||||
interface_resolution = "1024x768x24"
|
interface_resolution = "1024x768x24"
|
||||||
# Terminal related settings
|
# Terminal related settings
|
||||||
term_wallpaper = "boot:///background.bmp"
|
term_wallpaper = "boot:///background.bmp"
|
||||||
|
@ -24,5 +24,5 @@ path = "boot:///tests.hbf"
|
||||||
# [boot.limine.ableos.modules.diskio_driver]
|
# [boot.limine.ableos.modules.diskio_driver]
|
||||||
# path = "boot:///diskio_driver.hbf"
|
# path = "boot:///diskio_driver.hbf"
|
||||||
|
|
||||||
# [boot.limine.ableos.modules.fb_driver]
|
[boot.limine.ableos.modules.fb_driver]
|
||||||
# path = "boot:///fb_driver.hbf"
|
path = "boot:///fb_driver.hbf"
|
||||||
|
|
Loading…
Reference in a new issue