type IOPacket* = tuple port: uint16 value: uint8 {.push stackTrace:off.} proc outb*(data: IOPacket) = asm """ outb `data.value` `data.port` """ proc inb*(port: uint16): uint = asm """ inb `port` `result` """ {.pop.}