.{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 }