From 8d3a7583de295444c05d90e1a75fe3b82aec3888 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 20 Aug 2021 16:50:39 +0200 Subject: [PATCH] IDE BusMaster IRQ status is no longer automatically cleared on IRQ lower. --- src/disk/hdc_ide_sff8038i.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/disk/hdc_ide_sff8038i.c b/src/disk/hdc_ide_sff8038i.c index 97a77388c..733868cc3 100644 --- a/src/disk/hdc_ide_sff8038i.c +++ b/src/disk/hdc_ide_sff8038i.c @@ -370,8 +370,10 @@ void sff_bus_master_set_irq(int channel, void *priv) { sff8038i_t *dev = (sff8038i_t *) priv; - dev->status &= ~4; - dev->status |= (channel >> 4); + if (!(dev->status & 0x04) || (channel & 0x40)) { + dev->status &= ~4; + dev->status |= (channel >> 4); + } channel &= 0x01; if (dev->status & 0x04) {