Implemented PIC IRQ freeze on poll mode start.

This commit is contained in:
OBattler
2022-07-31 04:45:26 +02:00
parent 37bf41ec17
commit 69379b68b0

View File

@@ -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 {