Do not delay port 61h I/O on 386 and lower, fixes #3831 .

This commit is contained in:
OBattler
2023-11-18 05:04:02 +01:00
parent 2cccdc409b
commit 3c37ef2eef

View File

@@ -46,6 +46,8 @@
#define PORT_6X_MIRROR 4
#define PORT_6X_SWA 8
static int cycles_sub = 0;
static void
port_6x_write(uint16_t port, uint8_t val, void *priv)
{
@@ -53,7 +55,7 @@ port_6x_write(uint16_t port, uint8_t val, void *priv)
port &= 3;
cycles -= ISA_CYCLES(8);
cycles -= cycles_sub;
if ((port == 3) && (dev->flags & PORT_6X_MIRROR))
port = 1;
@@ -83,7 +85,7 @@ port_61_read_simple(UNUSED(uint16_t port), UNUSED(void *priv))
{
uint8_t ret = ppi.pb & 0x1f;
cycles -= ISA_CYCLES(8);
cycles -= cycles_sub;
if (ppispeakon)
ret |= 0x20;
@@ -97,7 +99,7 @@ port_61_read(UNUSED(uint16_t port), void *priv)
const port_6x_t *dev = (port_6x_t *) priv;
uint8_t ret = 0xff;
cycles -= ISA_CYCLES(8);
cycles -= cycles_sub;
if (dev->flags & PORT_6X_EXT_REF) {
ret = ppi.pb & 0x0f;
@@ -197,6 +199,8 @@ port_6x_init(const device_t *info)
if (dev->flags & PORT_6X_SWA)
io_sethandler(0x0062, 1, port_62_read, NULL, NULL, NULL, NULL, NULL, dev);
cycles_sub = is486 ? ISA_CYCLES(8) : 0;
return dev;
}