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

_______________________________________________
Simh mailing list
[email protected]
http://mailman.trailing-edge.com/mailman/listinfo/simh

Reply via email to