PDP11, Most VAX: Improve rewind time for TQ device

Make the rewind time vary based on tape position.
This commit is contained in:
Mark Pizzolato 2019-05-13 00:18:11 -07:00
parent f700346ea9
commit bd45a9c45f

View file

@ -1210,7 +1210,11 @@ if ((uptr = tq_getucb (lu))) { /* unit exist? */
uptr->cpkt = pkt; /* op in progress */ uptr->cpkt = pkt; /* op in progress */
if ((tq_pkt[pkt].d[CMD_MOD] & MD_RWD) && /* rewind? */ if ((tq_pkt[pkt].d[CMD_MOD] & MD_RWD) && /* rewind? */
(!(tq_pkt[pkt].d[CMD_MOD] & MD_IMM))) { /* !immediate? */ (!(tq_pkt[pkt].d[CMD_MOD] & MD_IMM))) { /* !immediate? */
sim_activate_after (uptr, tq_rwtime); /* use 2 sec rewind execute time */ double walltime = (tq_rwtime - 100);
if (uptr->hwmark)
walltime *= ((double)uptr->pos)/uptr->hwmark;
sim_activate_after_d (uptr, 100 + walltime);/* use scaled 2 sec rewind execute time */
} }
else { /* otherwise */ else { /* otherwise */
uptr->iostarttime = sim_grtime(); uptr->iostarttime = sim_grtime();