hdc_st506: Report image read/write errors

This commit is contained in:
RichardG867
2024-10-29 12:49:21 -03:00
parent ed0c571a8e
commit 5734fd9a55
2 changed files with 34 additions and 10 deletions

View File

@@ -585,12 +585,16 @@ do_callback(void *priv)
do_seek(mfm);
if (get_sector(mfm, &addr)) {
mfm->error = ERR_ID_NOT_FOUND;
read_error:
mfm->status = STAT_READY | STAT_DSC | STAT_ERR;
irq_raise(mfm);
break;
}
hdd_image_read(drive->hdd_num, addr, 1, (uint8_t *) mfm->buffer);
if (hdd_image_read(drive->hdd_num, addr, 1, (uint8_t *) mfm->buffer) < 0) {
mfm->error = ERR_BAD_BLOCK;
goto read_error;
}
mfm->pos = 0;
mfm->status = STAT_DRQ | STAT_READY | STAT_DSC;
@@ -604,12 +608,16 @@ do_callback(void *priv)
do_seek(mfm);
if (get_sector(mfm, &addr)) {
mfm->error = ERR_ID_NOT_FOUND;
write_error:
mfm->status = STAT_READY | STAT_DSC | STAT_ERR;
irq_raise(mfm);
break;
}
hdd_image_write(drive->hdd_num, addr, 1, (uint8_t *) mfm->buffer);
if (hdd_image_write(drive->hdd_num, addr, 1, (uint8_t *) mfm->buffer) < 0) {
mfm->error = ERR_BAD_BLOCK;
goto write_error;
}
irq_raise(mfm);
mfm->secount = (mfm->secount - 1) & 0xff;