diff --git a/src/devices/machine/upd765.cpp b/src/devices/machine/upd765.cpp index 2884063e27a..fadaea4eab6 100644 --- a/src/devices/machine/upd765.cpp +++ b/src/devices/machine/upd765.cpp @@ -1473,13 +1473,20 @@ void upd765_family_device::seek_continue(floppy_info &fi) break; } if(done) { - fi.st0 |= ST0_SE | fi.id; - command_end(fi, false); + fi.sub_state = SEEK_WAIT_DONE; + // recalibrate takes some time, even if we are already at track 0 + fi.tm->adjust(attotime::from_nsec((fi.main_state == RECALIBRATE) ? 20000 : 0)); return; } fi.sub_state = SEEK_MOVE; break; } + + case SEEK_WAIT_DONE: + fi.st0 |= ST0_SE | fi.id; + command_end(fi, false); + return; + } } } diff --git a/src/devices/machine/upd765.h b/src/devices/machine/upd765.h index 143419114cd..52b545c2be7 100644 --- a/src/devices/machine/upd765.h +++ b/src/devices/machine/upd765.h @@ -223,6 +223,7 @@ protected: SEEK_WAIT_STEP_SIGNAL_TIME_DONE, SEEK_WAIT_STEP_TIME, SEEK_WAIT_STEP_TIME_DONE, + SEEK_WAIT_DONE, SEEK_DONE, HEAD_LOAD_DONE,