Serial controller is no longer reset when serial port/IRQ updated - fixes mouse on 430VX in Windows 98.
This commit is contained in:
parent
ea3844acf1
commit
a1a3068ac0
4 changed files with 32 additions and 22 deletions
12
src/serial.c
12
src/serial.c
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue