Scott, after "lock()" here, should I disable irq4 and rx, and enable tx? lock(); /* ready to use 3f9,3f8 as divisor */ out_byte(tty->port+LCR, 0x80); out_byte(tty->port+DIVH, 0x00); /* divisor = 12 ===> 9600 bauds */ out_byte(tty->port+DIVL, 12); /**** term 9600 /dev/ttyS0: 8 bits/char, no parity ****/ out_byte(tty->port+LCR, 0x03); /* clear lingering interrupts by reading status and data regs */ in_byte(tty->port+LSR); in_byte(tty->port+MSR); in_byte(tty->port+DATA); /*write to MSR and IER*/ /* 1011 ==> IRQ4, RTS, DTR on */ out_byte(tty->port+MCR, 0x0B); /* Enable Rx interrupt, Tx off */ out_byte(tty->port+IER, 0x01); unlock();