diff --git a/src/serial.c b/src/serial.c index 30111e1..4225bf2 100644 --- a/src/serial.c +++ b/src/serial.c @@ -110,6 +110,9 @@ void serial_write(uint16_t addr, uint8_t val, void *p) serial->ier = val & 0xf; serial_update_ints(serial); break; + case 2: + serial->fcr = val; + break; case 3: serial->lcr = val; break; @@ -197,6 +200,8 @@ uint8_t serial_read(uint16_t addr, void *p) serial->int_status &= ~SERIAL_INT_TRANSMIT; serial_update_ints(serial); } + if (serial->fcr & 1) + temp |= 0xc0; break; case 3: temp = serial->lcr; diff --git a/src/serial.h b/src/serial.h index 88e57c7..e41603f 100644 --- a/src/serial.h +++ b/src/serial.h @@ -15,6 +15,7 @@ typedef struct uint8_t dat; uint8_t int_status; uint8_t scratch; + uint8_t fcr; int irq;