Implemented serial scratch register.

Serial IER register only 4 bits wide.
This commit is contained in:
TomW 2015-06-21 14:52:53 +01:00
commit fd2fc0e02b
2 changed files with 8 additions and 1 deletions

View file

@ -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;

View file

@ -14,6 +14,7 @@ typedef struct
uint8_t dlab1,dlab2;
uint8_t dat;
uint8_t int_status;
uint8_t scratch;
int irq;