ぐへへ

めんどうだったのでポーリングで実装してやったぜ…

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);
	}
}

割り込みとかは実機で動くの確認してからだな。