47 lines
897 B
Plaintext
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
|
|
} |