[Simh] More on the RK611
Bob Supnik
bob at supnik.org
Sat Aug 31 15:52:54 EDT 2013
The RK611 is modeled as though it was a monolithic controller, a la the
RP series, in which all the state in both the controller and the drives
is interrelated and constantly interlinked. In fact, this is not true.
The RK611 is a command-response model; status from the drive is only
available in response to a command. Thus, when state in the controller
is altered WITHOUT a command (eg, controller clear), the existence of
state in the drives cannot be seen.
What this means is that the update_hkcs and update_hkds routines are
basically wrong. The former can only look at state within the
controller. The latter can only look at state within the drive.
Information about drive errors is dynamic: it has to be captured when
generated, and after that, from the point of view of the controller,
"it's gone." In particular, if DTER (drive type error) is generated by a
command, it "persists" in the drive, but the actions that resulted in
the controller (setting combined error) are ephemeral. A subsequent
controller clear will clear combined error, even though the "drive type
error" still exists in the drive.
So when errors are set, all related consequences (setting ATA if
appropriate, setting CERR if appropriate) must be done at the time, and
not in the master update_hkcs routine. update_hkcs can only deal with
controller state.
This will result in a lot of small changes throughout the HK simulator.
I've started in, and the result passes an initial smoke test with RT11;
but then again, RT always worked. The real tests are RSTS, RSX, and VMS.
/Bob
More information about the Simh
mailing list