1
0
mirror of https://github.com/simh/simh.git synced 2026-01-25 19:56:25 +00:00

PDP1, PDP8, PDP18B, PDP11: Fixed dt_seterr to clear successor states

For the PDP11, this includes deferring the setting of DONE on an error, allowing RSTS V4 to work correctly.

There was a minor (possibly only theoretical) bug in dt_seterr as well.
dt_seterr is supposed to stop the drive. If the drive is accelerating, at
speed, or stopped, it works fine. But if the drive is decelerating, it did
not clear out the "successor" states. In theory, the drive could be in the
middle of reversing - that is, there are successor states of accelerating
(in reverse) and at speed. So the successor states need to be cleared,
or the drive won't actually stop.

The fifth DECtape controller (the PDP8's TD8E) is much simpler and
doesn't have the problem.
This commit is contained in:
Bob Supnik
2017-03-15 10:04:52 -07:00
committed by Mark Pizzolato
parent 1cd11f3464
commit 62879beb70
4 changed files with 13 additions and 3 deletions

View File

@@ -27,6 +27,7 @@
(PDP-9) TC02/TU55 DECtape
(PDP-15) TC15/TU56 DECtape
15-Mar-17 RMS Fixed dt_seterr to clear successor states
09-Mar-17 RMS Fixed dt_seterr to handle nx unit select (COVERITY)
10-Mar-16 RMS Added 3-cycle databreak set/show entries
07-Mar-16 RMS Revised for dynamically allocated memory
@@ -1283,6 +1284,7 @@ if (uptr != NULL) { /* valid select? */
sim_activate (uptr, dt_dctime); /* sched decel */
DTS_SETSTA (DTS_DECF | (mot & DTS_DIR), 0); /* state = decel */
}
else DTS_SETSTA (mot, 0); /* clear 2nd, 3rd */
}
DT_UPDINT;
return;