Serial controller is no longer reset when serial port/IRQ updated - fixes mouse on 430VX in Windows 98.

This commit is contained in:
TomW 2014-07-31 15:57:24 +01:00
commit a1a3068ac0
4 changed files with 32 additions and 22 deletions

View file

@ -249,6 +249,12 @@ void serial1_init(uint16_t addr, int irq)
serial1.rcr_callback = NULL;
timer_add(serial_recieve_callback, &serial1.recieve_delay, &serial1.recieve_delay, &serial1);
}
void serial1_set(uint16_t addr, int irq)
{
serial1_remove();
io_sethandler(addr, 0x0008, serial_read, NULL, NULL, serial_write, NULL, NULL, &serial1);
serial1.irq = irq;
}
void serial1_remove()
{
io_removehandler(0x2e8, 0x0008, serial_read, NULL, NULL, serial_write, NULL, NULL, &serial1);
@ -265,6 +271,12 @@ void serial2_init(uint16_t addr, int irq)
serial2.rcr_callback = NULL;
timer_add(serial_recieve_callback, &serial2.recieve_delay, &serial2.recieve_delay, &serial2);
}
void serial2_set(uint16_t addr, int irq)
{
serial2_remove();
io_sethandler(addr, 0x0008, serial_read, NULL, NULL, serial_write, NULL, NULL, &serial2);
serial2.irq = irq;
}
void serial2_remove()
{
io_removehandler(0x2e8, 0x0008, serial_read, NULL, NULL, serial_write, NULL, NULL, &serial2);