From b074c28d3d4929957319778073561869dc99d8ed Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Wed, 23 Apr 2025 16:07:41 +0600 Subject: [PATCH 1/2] DMA-based IDE writes are now reported properly --- src/disk/hdc_ide.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index fe48bba6d..e1e12afcd 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -2514,6 +2514,7 @@ ide_callback(void *priv) return; } else if (ret & 1) { /* DMA successful */ + ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 1); ret = hdd_image_write(ide->hdd_num, ide_get_sector(ide), ide->sector_pos, ide->sector_buffer); @@ -2524,7 +2525,6 @@ ide_callback(void *priv) err = UNC_ERR; ide_irq_raise(ide); - ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 0); } else { /* Bus master DMA error, abort the command. */ ide_log("IDE %i: DMA read aborted (failed)\n", ide->channel); From 531e6545be8ff3714536c8557e32948048fac637 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Wed, 23 Apr 2025 16:22:53 +0600 Subject: [PATCH 2/2] IDE: Report single sector writes properly for 28-bit Write commands --- src/disk/hdc_ide.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index e1e12afcd..d725b2ace 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -2472,6 +2472,7 @@ ide_callback(void *priv) else if (!ide->tf->lba && (ide->cfg_spt == 0)) err = IDNF_ERR; else { + ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 1); ret = hdd_image_write(ide->hdd_num, ide_get_sector(ide), 1, (uint8_t *) ide->buffer); ide_irq_raise(ide); ide->tf->secount--; @@ -2479,10 +2480,8 @@ ide_callback(void *priv) ide->tf->atastat = DRQ_STAT | DRDY_STAT | DSC_STAT; ide->tf->pos = 0; ide_next_sector(ide); - ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 1); } else { ide->tf->atastat = DRDY_STAT | DSC_STAT; - ui_sb_update_icon_write(SB_HDD | hdd[ide->hdd_num].bus_type, 0); } if (ret < 0) err = UNC_ERR;