diff --git a/src/pic.c b/src/pic.c index fe6b29fc8..857f45cfc 100644 --- a/src/pic.c +++ b/src/pic.c @@ -436,6 +436,7 @@ pic_read(uint16_t addr, void *priv) dev->data_bus = dev->irr; #endif if (dev->ocw3 & 0x04) { + dev->interrupt &= ~0x20; /* Freeze the interrupt until the poll is over. */ if (dev->int_pending) { dev->data_bus = 0x80 | (dev->interrupt & 7); pic_acknowledge(dev); @@ -516,6 +517,8 @@ pic_write(uint16_t addr, uint8_t val, void *priv) update_pending(); } else if (val & 0x08) { dev->ocw3 = val; + if (dev->ocw3 & 0x04) + dev->interrupt |= 0x20; /* Freeze the interrupt until the poll is over. */ if (dev->ocw3 & 0x40) dev->special_mask_mode = !!(dev->ocw3 & 0x20); } else {