Rewritten parts of the 86F handler to minimize false CRC errors and misidentification of sectors;
Replaced IMG handler with one that now proxies to the 86F handler; Applies the remaining Mainline PCem speedup commit; Fixed the National Semiconductors PC87306 Super I/O Chip's serial port IRQ assignment; DMF images are now loaded with the correct sector interleave, improving read/write speed; XDF images are now loaded in a way that emulates the real order of the sectors on the track, improving read/write speed; Added 16-bit physical memory read/write routines (mem_phys_readw, mem_phys_writew) and modified the 16-bit DMA code to use them instead of two 8-bit reads/writes.
This commit is contained in:
@@ -33,22 +33,24 @@ void pc87306_gpio_write(uint16_t port, uint8_t val, void *priv)
|
||||
|
||||
uint8_t uart_int1()
|
||||
{
|
||||
return ((pc87306_regs[0x1C] >> 2) & 1) ? 3 : 4;
|
||||
return ((pc87306_regs[0x1C] >> 2) & 1) ? 4 : 3;
|
||||
}
|
||||
|
||||
uint8_t uart_int2()
|
||||
{
|
||||
return ((pc87306_regs[0x1C] >> 6) & 1) ? 3 : 4;
|
||||
return ((pc87306_regs[0x1C] >> 6) & 1) ? 4 : 3;
|
||||
}
|
||||
|
||||
uint8_t uart1_int()
|
||||
{
|
||||
return (pc87306_regs[0x1C] & 1) ? uart_int1() : 4;
|
||||
temp = ((pc87306_regs[1] >> 2) & 1) ? 3 : 4; /* 0 = IRQ 4, 1 = IRQ 3 */
|
||||
return (pc87306_regs[0x1C] & 1) ? uart_int1() : temp;
|
||||
}
|
||||
|
||||
uint8_t uart2_int()
|
||||
{
|
||||
return (pc87306_regs[0x1C] & 1) ? uart_int2() : 3;
|
||||
temp = ((pc87306_regs[1] >> 4) & 1) ? 3 : 4; /* 0 = IRQ 4, 1 = IRQ 3 */
|
||||
return (pc87306_regs[0x1C] & 1) ? uart_int2() : temp;
|
||||
}
|
||||
|
||||
void serial1_handler()
|
||||
@@ -178,7 +180,7 @@ process_value:
|
||||
if (val & 2)
|
||||
{
|
||||
serial1_handler();
|
||||
if (mouse_always_serial) mouse_serial_init();
|
||||
// if (mouse_always_serial) mouse_serial_init();
|
||||
}
|
||||
if (val & 4) serial2_handler();
|
||||
|
||||
@@ -218,7 +220,7 @@ process_value:
|
||||
if (pc87306_regs[0] & 2)
|
||||
{
|
||||
serial1_handler();
|
||||
if (mouse_always_serial) mouse_serial_init();
|
||||
// if (mouse_always_serial) mouse_serial_init();
|
||||
}
|
||||
if (pc87306_regs[0] & 4) serial2_handler();
|
||||
break;
|
||||
@@ -237,7 +239,7 @@ process_value:
|
||||
if (pc87306_regs[0] & 2)
|
||||
{
|
||||
serial1_handler();
|
||||
if (mouse_always_serial) mouse_serial_init();
|
||||
// if (mouse_always_serial) mouse_serial_init();
|
||||
}
|
||||
if (pc87306_regs[0] & 4) serial2_handler();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user