ぐへへ
めんどうだったのでポーリングで実装してやったぜ…
void ns16550_write(const char *buffer, int n) { int i; for (i=0; i<n; i++) { unsigned char c; while (! ((c=inb(PORT+REG_LSR)) & LSR_THR)) ; outb(PORT + REG_THR, buffer[i]); } } void ns16550_read(char *buffer, int n) { int i; for (i=0; i<n; i++) { unsigned char c; while (! ((c=inb(PORT+REG_LSR)) & LSR_DR)) ; buffer[i] = inb(PORT+REG_RBR); } }
割り込みとかは実機で動くの確認してからだな。