Do not delay port 61h I/O on 386 and lower, fixes #3831 .
This commit is contained in:
@@ -46,6 +46,8 @@
|
|||||||
#define PORT_6X_MIRROR 4
|
#define PORT_6X_MIRROR 4
|
||||||
#define PORT_6X_SWA 8
|
#define PORT_6X_SWA 8
|
||||||
|
|
||||||
|
static int cycles_sub = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
port_6x_write(uint16_t port, uint8_t val, void *priv)
|
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;
|
port &= 3;
|
||||||
|
|
||||||
cycles -= ISA_CYCLES(8);
|
cycles -= cycles_sub;
|
||||||
|
|
||||||
if ((port == 3) && (dev->flags & PORT_6X_MIRROR))
|
if ((port == 3) && (dev->flags & PORT_6X_MIRROR))
|
||||||
port = 1;
|
port = 1;
|
||||||
@@ -83,7 +85,7 @@ port_61_read_simple(UNUSED(uint16_t port), UNUSED(void *priv))
|
|||||||
{
|
{
|
||||||
uint8_t ret = ppi.pb & 0x1f;
|
uint8_t ret = ppi.pb & 0x1f;
|
||||||
|
|
||||||
cycles -= ISA_CYCLES(8);
|
cycles -= cycles_sub;
|
||||||
|
|
||||||
if (ppispeakon)
|
if (ppispeakon)
|
||||||
ret |= 0x20;
|
ret |= 0x20;
|
||||||
@@ -97,7 +99,7 @@ port_61_read(UNUSED(uint16_t port), void *priv)
|
|||||||
const port_6x_t *dev = (port_6x_t *) priv;
|
const port_6x_t *dev = (port_6x_t *) priv;
|
||||||
uint8_t ret = 0xff;
|
uint8_t ret = 0xff;
|
||||||
|
|
||||||
cycles -= ISA_CYCLES(8);
|
cycles -= cycles_sub;
|
||||||
|
|
||||||
if (dev->flags & PORT_6X_EXT_REF) {
|
if (dev->flags & PORT_6X_EXT_REF) {
|
||||||
ret = ppi.pb & 0x0f;
|
ret = ppi.pb & 0x0f;
|
||||||
@@ -197,6 +199,8 @@ port_6x_init(const device_t *info)
|
|||||||
if (dev->flags & PORT_6X_SWA)
|
if (dev->flags & PORT_6X_SWA)
|
||||||
io_sethandler(0x0062, 1, port_62_read, NULL, NULL, NULL, NULL, NULL, dev);
|
io_sethandler(0x0062, 1, port_62_read, NULL, NULL, NULL, NULL, NULL, dev);
|
||||||
|
|
||||||
|
cycles_sub = is486 ? ISA_CYCLES(8) : 0;
|
||||||
|
|
||||||
return dev;
|
return dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user