misc changes + mouse driver work

This commit is contained in:
Able 2024-11-01 13:09:12 -05:00
parent eaace7d9c1
commit 3c3c156eb0
13 changed files with 120 additions and 19 deletions

6
Cargo.lock generated
View file

@ -253,12 +253,12 @@ dependencies = [
[[package]] [[package]]
name = "hbbytecode" name = "hbbytecode"
version = "0.1.0" version = "0.1.0"
source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#faa8dd2e6fabe2e0e4a375e677171856da491c61" source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#38a00cbaa09434324d209fc5f59480d2b6743fb3"
[[package]] [[package]]
name = "hblang" name = "hblang"
version = "0.1.0" version = "0.1.0"
source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#faa8dd2e6fabe2e0e4a375e677171856da491c61" source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#38a00cbaa09434324d209fc5f59480d2b6743fb3"
dependencies = [ dependencies = [
"hashbrown 0.15.0", "hashbrown 0.15.0",
"hbbytecode", "hbbytecode",
@ -270,7 +270,7 @@ dependencies = [
[[package]] [[package]]
name = "hbvm" name = "hbvm"
version = "0.1.0" version = "0.1.0"
source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#faa8dd2e6fabe2e0e4a375e677171856da491c61" source = "git+https://git.ablecorp.us/AbleOS/holey-bytes.git#38a00cbaa09434324d209fc5f59480d2b6743fb3"
dependencies = [ dependencies = [
"hbbytecode", "hbbytecode",
] ]

View file

@ -22,7 +22,7 @@ fatfs = "0.3"
toml = "0.8" toml = "0.8"
hblang = { git = "https://git.ablecorp.us/AbleOS/holey-bytes.git", features = [ hblang = { git = "https://git.ablecorp.us/AbleOS/holey-bytes.git", features = [
"std", "std",
"opts", # "opts",
], default-features = false } ], default-features = false }
log = "0.4" log = "0.4"
raw-cpuid = "11" raw-cpuid = "11"

View file

@ -47,7 +47,6 @@ impl Package {
for (count, (name, table)) in bin_table.into_iter().enumerate() { for (count, (name, table)) in bin_table.into_iter().enumerate() {
// if count != 0 { // if count != 0 {
println!("{}", name);
binaries.push(name.clone()); binaries.push(name.clone());
// } // }
} }
@ -75,7 +74,7 @@ impl Package {
&path, &path,
Options { Options {
fmt: true, fmt: true,
optimize: true, // optimize: true,
..Default::default() ..Default::default()
}, },
&mut bytes, &mut bytes,
@ -84,7 +83,7 @@ impl Package {
hblang::run_compiler( hblang::run_compiler(
&path, &path,
Options { Options {
optimize: true, // optimize: true,
..Default::default() ..Default::default()
}, },
&mut bytes, &mut bytes,
@ -101,7 +100,7 @@ impl Package {
&path, &path,
Options { Options {
dump_asm: true, dump_asm: true,
optimize: true, // optimize: true,
..Default::default() ..Default::default()
}, },
&mut bytes, &mut bytes,

View file

@ -407,7 +407,8 @@ fn run(release: bool, target: Target, do_accel: bool) -> Result<(), Error> {
"-parallel", "none", "-parallel", "none",
"-monitor", "none", "-monitor", "none",
"-machine", accel, "-machine", accel,
"-cpu", "max", "-cpu", "max", "-serial", "stdio",
"-device", "isa-debug-exit,iobase=0xf4,iosize=0x04", "-device", "isa-debug-exit,iobase=0xf4,iosize=0x04",
]); ]);
} }

View file

@ -36,7 +36,7 @@ free_surface := fn(surface: Surface): void {
return @inline(memory.free, Color, surface.buf, @intcast(surface.width * surface.height), false) return @inline(memory.free, Color, surface.buf, @intcast(surface.width * surface.height), false)
} }
framebuffer := @as(^Color, idk) framebuffer := @as(^Color, null)
init := fn(doublebuffer: bool): Surface { init := fn(doublebuffer: bool): Surface {
framebuffer = dt.get(^Color, "framebuffer/fb0/ptr\0") framebuffer = dt.get(^Color, "framebuffer/fb0/ptr\0")

View file

@ -15,6 +15,8 @@ Window := struct {
y: int, y: int,
} }
psf := @embed("../../../consolefonts/tamsyn/10x20r.psf")
main := fn(): int { main := fn(): int {
win_buff := buffer.create("XHorizon\0") win_buff := buffer.create("XHorizon\0")
@ -33,6 +35,8 @@ main := fn(): int {
vel_inner := Vec2(int).(1, 1) vel_inner := Vec2(int).(1, 1)
pos_inner := Vec2(uint).((window.width - side) / 2, (window.height - side) / 2) pos_inner := Vec2(uint).((window.width - side) / 2, (window.height - side) / 2)
str := "Window Title Bar\0"
font := render.text.font_from_psf2(@bitcast(&psf))
loop { loop {
// Clear the screen // Clear the screen
@ -43,6 +47,8 @@ main := fn(): int {
ret := buffer.recv([u8; 4096], win_buff, mem_buf) ret := buffer.recv([u8; 4096], win_buff, mem_buf)
if ret == 0 { if ret == 0 {
log.info("No messages\0") log.info("No messages\0")
} else {
log.info("Handle Messages\0")
} }
} }
@ -65,6 +71,7 @@ main := fn(): int {
{ {
render.put_rect(window, .(0, 0), .(window.width - 1, window.height - 1), render.white) render.put_rect(window, .(0, 0), .(window.width - 1, window.height - 1), render.white)
render.put_rect(window, .(0, 0), .(window.width - 1, 20), render.white) render.put_rect(window, .(0, 0), .(window.width - 1, 20), render.white)
render.put_text(window, font, .(window.width / 2, 1), render.white, str)
} }
render.put_filled_rect(window, pos_inner, .(side, side), color) render.put_filled_rect(window, pos_inner, .(side, side), color)

View file

@ -7,6 +7,8 @@ horizon_api := @use("../../../libraries/horizon_api/src/lib.hb");
ignim := @use("../../../libraries/ignim/src/lib.hb"); ignim := @use("../../../libraries/ignim/src/lib.hb");
.{errors} := ignim .{errors} := ignim
psf := @embed("../../../consolefonts/tamsyn/10x20r.psf")
main := fn(): int { main := fn(): int {
x := 0 x := 0
// loop if x > 10000 break else x += 1 // loop if x > 10000 break else x += 1

View file

@ -0,0 +1 @@
# mouse_driver

View file

@ -0,0 +1,11 @@
[package]
name = "mouse_driver"
authors = [""]
[dependants.libraries]
[dependants.binaries]
hblang.version = "1.0.0"
[build]
command = "hblang src/main.hb"

View file

@ -0,0 +1,79 @@
.{memory, buffer, log, string} := @use("../../../libraries/stn/src/lib.hb")
render := @use("../../../libraries/render/src/lib.hb")
ACK := 250
wait_for := fn(for: u8): void {
log.info("Start waiting\0")
loop {
if (memory.inb(0x64) & 2 >> for) == for {
log.info("End waiting\0")
return
}
}
}
send_info := fn(info: u8): void {
wait_for(1)
memory.outb(0x64, info)
}
send_command := fn(command: u8): void {
send_info(0xD4)
wait_for(1)
memory.outb(0x60, command)
}
get_response := fn(): u8 {
wait_for(1)
return memory.inb(0x60)
}
main := fn(): int {
// screen := render.init(true)
format_page := memory.alloc(u8, 1024)
wait_for(0)
memory.outb(0x64, 0xA8)
log.info("Aux mouse device enabled.\0")
send_command(0xF6)
a := get_response()
send_command(0xF4)
b := get_response()
x := -0
y := -0
loop {
// render.clear(screen, render.black)
loop {
if (memory.inb(0x64) & 0x20) == 0x20 {
log.info("Yeah\0")
break
} else {
}
}
status := memory.inb(0x60)
log.info(string.display_int(status, format_page, 10))
d_x := memory.inb(0x60)
log.info(string.display_int(d_x, format_page, 10))
x = x + d_x
d_y := memory.inb(0x60)
y = y + d_y
log.info(string.display_int(d_y, format_page, 10))
// render.put_rect(screen, .(x, y), .(x + 10, y + 10), render.white)
log.info("XY\0")
log.info(string.display_int(x, format_page, 10))
log.info(string.display_int(y, format_page, 10))
}
return 0
}

View file

@ -10,14 +10,13 @@ example := fn(): void {
screen := render.init(true) screen := render.init(true)
font := render.text.font_from_psf2(@bitcast(&psf)) font := render.text.font_from_psf2(@bitcast(&psf))
t := 0 t := 0
str := "Hello, World! str := "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX\0"
This is a test
of multiline rendering\0"
loop { loop {
render.clear(screen, render.black) render.clear(screen, render.black)
render.put_text(screen, font, .(t, t % screen.height), render.red, str) render.put_text(screen, font, .(t, t % screen.height), render.red, str)
render.sync(screen) render.sync(screen)
t += 1 // t += 1
} }
return return
} }

View file

@ -1,3 +1 @@
.{example} := @use("./examples/text.hb") .{example: main} := @use("./examples/text.hb")
main := example

View file

@ -28,8 +28,8 @@ resolution = "1024x768x24"
# [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.render_example] # [boot.limine.ableos.modules.render_example]
path = "boot:///render_example.hbf" # path = "boot:///render_example.hbf"
# [boot.limine.ableos.modules.serial_driver] # [boot.limine.ableos.modules.serial_driver]
# path = "boot:///serial_driver.hbf" # path = "boot:///serial_driver.hbf"
@ -57,3 +57,7 @@ path = "boot:///render_example.hbf"
# [boot.limine.ableos.modules.pumpkin_print] # [boot.limine.ableos.modules.pumpkin_print]
# path = "boot:///pumpkin_print.hbf" # path = "boot:///pumpkin_print.hbf"
[boot.limine.ableos.modules.mouse_driver]
path = "boot:///mouse_driver.hbf"