From fd2fc0e02b4a879daca8e4a2939758f6f16b620a Mon Sep 17 00:00:00 2001 From: TomW Date: Sun, 21 Jun 2015 14:52:53 +0100 Subject: [PATCH] Implemented serial scratch register. Serial IER register only 4 bits wide. --- src/serial.c | 8 +++++++- src/serial.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/serial.c b/src/serial.c index e294039..fb5c458 100644 --- a/src/serial.c +++ b/src/serial.c @@ -110,7 +110,7 @@ void serial_write(uint16_t addr, uint8_t val, void *p) serial->dlab2 = val; return; } - serial->ier = val; + serial->ier = val & 0xf; serial_update_ints(serial); break; case 3: @@ -160,6 +160,9 @@ void serial_write(uint16_t addr, uint8_t val, void *p) serial->int_status |= SERIAL_INT_MSR; serial_update_ints(serial); break; + case 7: + serial->scratch = val; + break; } } @@ -221,6 +224,9 @@ uint8_t serial_read(uint16_t addr, void *p) serial->int_status &= ~SERIAL_INT_MSR; serial_update_ints(serial); break; + case 7: + temp = serial->scratch; + break; } // pclog("%02X\n",temp); return temp; diff --git a/src/serial.h b/src/serial.h index e57e066..469c29b 100644 --- a/src/serial.h +++ b/src/serial.h @@ -14,6 +14,7 @@ typedef struct uint8_t dlab1,dlab2; uint8_t dat; uint8_t int_status; + uint8_t scratch; int irq;