diff --git a/hw/fdc.c b/hw/fdc.c index 4f04b729ff..98a3c3131d 100644 --- a/hw/fdc.c +++ b/hw/fdc.c @@ -1843,5 +1843,13 @@ enqueue: static void fdctrl_result_timer(void *opaque) { fdctrl_t *fdctrl = opaque; + fdrive_t *cur_drv = get_cur_drv(fdctrl); + /* Pretend we are spinning. + * This is needed for Coherent, which uses READ ID to check for + * sector interleaving. + */ + if (cur_drv->last_sect != 0) { + cur_drv->sect = (cur_drv->sect % cur_drv->last_sect) + 1; + } fdctrl_stop_transfer(fdctrl, 0x00, 0x00, 0x00); }