ableos/sysdata/programs/serial_driver/src/main.hb
2024-10-25 16:37:38 +01:00

47 lines
897 B
Plaintext

.{memory, buffer} := @use("../../../libraries/stn/src/lib.hb")
serial_print := fn(ptr: ^u8): void {
letter := @as(u8, 0)
loop if *ptr == 0 break else {
letter = *ptr
memory.outb(0xF803, letter)
ptr += 1
}
return
}
serial_println := fn(ptr: ^u8): void {
serial_print(ptr)
memory.outb(0xF803, 12)
memory.outb(0xF803, 13)
return
}
main := fn(): int {
// This must be done first and foremost to prevent racing
a := buffer.create("XNumber\0")
serial_println("Starting Serial Driver.\0")
mem := memory.request_page(1)
loop {
ptr := @as(^u8, @eca(4, a, mem, 0x1000))
if ptr == 0 {
serial_println("No message\0")
}
if ptr > 0 {
serial_println("Yes message\0")
serial_println(mem)
break
}
}
// Note that the first byte is reserved, pad accordingly.
b := buffer.search("XNumber\0")
if a == b {
serial_println("Stopping Serial Driver.\0")
}
return 0
}