diff --git a/PDP10/ka10_dp.c b/PDP10/ka10_dp.c index c101cc6..4888b14 100644 --- a/PDP10/ka10_dp.c +++ b/PDP10/ka10_dp.c @@ -544,30 +544,35 @@ t_stat dp_svc (UNIT *uptr) uptr->STATUS |= SRC_DONE; if (uptr->STATUS & END_CYL) { uptr->UFLAGS |= DONE; + uptr->STATUS &= ~BUSY; df10_finish_op(df10, 0); return SCPE_OK; } if (sect >= dp_drv_tab[dtype].sect) { uptr->UFLAGS |= DONE; + uptr->STATUS &= ~BUSY; uptr->STATUS |= SEC_ERR; df10_finish_op(df10, 0); return SCPE_OK; } if (surf >= dp_drv_tab[dtype].surf) { uptr->UFLAGS |= DONE; + uptr->STATUS &= ~BUSY; uptr->STATUS |= SUF_ERR; df10_finish_op(df10, 0); return SCPE_OK; } if (cyl != uptr->CUR_CYL) { uptr->UFLAGS |= DONE; + uptr->STATUS &= ~BUSY; uptr->STATUS |= SRC_ERR; df10_finish_op(df10, 0); return SCPE_OK; } if ((uptr->STATUS & BUSY) == 0) { - df10_finish_op(df10, 0); - return SCPE_OK; + uptr->STATUS &= ~BUSY; + df10_finish_op(df10, 0); + return SCPE_OK; } if (cmd != WR) { /* Read the block */ diff --git a/PDP10/ka10_mt.c b/PDP10/ka10_mt.c index f8cc8d4..1bae466 100644 --- a/PDP10/ka10_mt.c +++ b/PDP10/ka10_mt.c @@ -523,6 +523,7 @@ t_stat mt_srv(UNIT * uptr) if ((r = sim_tape_rdrecf(uptr, &mt_buffer[0], &reclen, BUFFSIZE)) != MTSE_OK) { sim_debug(DEBUG_DETAIL, dptr, "MT%o read error %d\n", unit, r); + uptr->u3 &= ~MT_MOTION; return mt_error(uptr, r, dptr); } sim_debug(DEBUG_DETAIL, dptr, "MT%o read %d\n", unit, reclen); @@ -582,6 +583,7 @@ t_stat mt_srv(UNIT * uptr) if ((r = sim_tape_rdrecf(uptr, &mt_buffer[0], &reclen, BUFFSIZE)) != MTSE_OK) { sim_debug(DEBUG_DETAIL, dptr, "MT%o read error %d\n", unit, r); + uptr->u3 &= ~MT_MOTION; return mt_error(uptr, r, dptr); } sim_debug(DEBUG_DETAIL, dptr, "MT%o compare %d\n", unit, reclen);