From 1c486904f76a09278775e045419cf412bff8f30d Mon Sep 17 00:00:00 2001 From: TC1995 Date: Fri, 29 May 2020 01:30:06 +0200 Subject: [PATCH 1/2] Fixed format issue with the ESDI AT controller in DOS. --- src/disk/hdc_esdi_at.c | 38 +++++++------------------------------- 1 file changed, 7 insertions(+), 31 deletions(-) diff --git a/src/disk/hdc_esdi_at.c b/src/disk/hdc_esdi_at.c index 759dd5a51..7a40f1ef0 100644 --- a/src/disk/hdc_esdi_at.c +++ b/src/disk/hdc_esdi_at.c @@ -528,14 +528,8 @@ esdi_callback(void *priv) irq_raise(esdi); break; } - - if (hdd_image_read_ex(drive->hdd_num, addr, 1, (uint8_t *)esdi->buffer)) { - esdi->error = ERR_ID_NOT_FOUND; - esdi->status = STAT_READY | STAT_DSC | STAT_ERR; - irq_raise(esdi); - break; - } - + + hdd_image_read(drive->hdd_num, addr, 1, (uint8_t *)esdi->buffer); esdi->pos = 0; esdi->status = STAT_DRQ|STAT_READY|STAT_DSC; irq_raise(esdi); @@ -556,14 +550,8 @@ esdi_callback(void *priv) irq_raise(esdi); break; } - - if (hdd_image_write_ex(drive->hdd_num, addr, 1, (uint8_t *)esdi->buffer)) { - esdi->error = ERR_ID_NOT_FOUND; - esdi->status = STAT_READY | STAT_DSC | STAT_ERR; - irq_raise(esdi); - break; - } - + + hdd_image_write(drive->hdd_num, addr, 1, (uint8_t *)esdi->buffer); irq_raise(esdi); esdi->secount = (esdi->secount - 1) & 0xff; if (esdi->secount) { @@ -590,13 +578,7 @@ esdi_callback(void *priv) break; } - if (hdd_image_read_ex(drive->hdd_num, addr, 1, (uint8_t *)esdi->buffer)) { - esdi->error = ERR_ID_NOT_FOUND; - esdi->status = STAT_READY | STAT_DSC | STAT_ERR; - irq_raise(esdi); - break; - } - + hdd_image_read(drive->hdd_num, addr, 1, (uint8_t *)esdi->buffer); ui_sb_update_icon(SB_HDD|HDD_BUS_ESDI, 1); next_sector(esdi); esdi->secount = (esdi->secount - 1) & 0xff; @@ -623,14 +605,8 @@ esdi_callback(void *priv) irq_raise(esdi); break; } - - if (hdd_image_zero_ex(drive->hdd_num, addr, esdi->secount)) { - esdi->error = ERR_ID_NOT_FOUND; - esdi->status = STAT_READY | STAT_DSC | STAT_ERR; - irq_raise(esdi); - break; - } - + + hdd_image_zero(drive->hdd_num, addr, esdi->secount); esdi->status = STAT_READY|STAT_DSC; irq_raise(esdi); ui_sb_update_icon(SB_HDD|HDD_BUS_ESDI, 1); From 9932a5ee322c820963b92941dbefe847872efbb3 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Fri, 29 May 2020 01:37:54 +0200 Subject: [PATCH 2/2] Minor fix to the fix. --- src/disk/hdc_esdi_at.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/disk/hdc_esdi_at.c b/src/disk/hdc_esdi_at.c index 7a40f1ef0..86f564c8d 100644 --- a/src/disk/hdc_esdi_at.c +++ b/src/disk/hdc_esdi_at.c @@ -805,8 +805,8 @@ wd1007vse1_init(const device_t *info) esdi_read, esdi_readw, NULL, esdi_write, esdi_writew, NULL, esdi); io_sethandler(0x01f1, 7, - esdi_read, NULL, NULL, - esdi_write, NULL, NULL, esdi); + esdi_read, esdi_readw, NULL, + esdi_write, esdi_writew, NULL, esdi); io_sethandler(0x03f6, 1, NULL, NULL, NULL, esdi_write, NULL, NULL, esdi);