ableos/sysdata/programs/serial_driver/src/main.hb

47 lines
888 B
Plaintext
Raw Normal View History

2024-09-13 16:41:31 -05:00
.{memory, buffer} := @use("../../../libraries/stn/src/lib.hb")
2024-05-23 16:59:17 -05:00
serial_print := fn(ptr: ^u8): void {
letter := 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")
2024-08-19 13:13:58 -05:00
mem := memory.request_page(1)
loop {
2024-10-23 15:22:28 -05:00
ptr := @as(^u8, @eca(4, a, mem, 0x1000))
2024-08-19 13:13:58 -05:00
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")
}
2024-08-19 13:13:58 -05:00
return 0
2024-05-23 16:59:17 -05:00
}