[Simh] something strange with simulated RK05 drive ?

Paul Koning paulkoning at comcast.net
Tue Feb 11 19:49:25 EST 2020



> On Feb 11, 2020, at 7:37 PM, Johnny Billquist <bqt at softjar.se> wrote:
> 
> On 2020-02-12 01:24, Paul Koning wrote:
>>> On Feb 11, 2020, at 6:00 PM, Johnny Billquist <bqt at softjar.se> wrote:
>>> 
>>> On 2020-02-11 23:25, Paul Koning wrote:
>>>>> On Feb 11, 2020, at 3:15 PM, Henk Gooijen <henk.gooijen at hotmail.com> wrote:
>>>>> ...
>>>>>  As you can see from the printed debug statements, in the function rk_go()
>>>>> the cylinder number goes higher than the maximum number of cylinders
>>>>> possible on an RK05. Then, the function rk_set_done() is called with the
>>>>> variable "error" holding RKER_NXC (64 decimal == 000100, octal == RKER_NXC)
>>>>> ==> turns on the FAULT indicator.
>>>>> SIMH does not generate an error, all is OK, as is on the real PDP-11 / RK05.
>>>>> For now, I "solved" this by adding "if (error != RKER_NXC)", but that
>>>>> will exclude all "non-existing cylinder" errors, not only the error that
>>>>> is generated at the end of the FORMAT RK0:  command.
>>>>>  Is this incorrect behavior in SIMH, simulating the RK05?  I don't believe
>>>>> that, so is the RKER_NXC handled in the RK.SYS driver or in RT11 in case of
>>>>> the execution of the FORMAT command?
>>>> I only have some V2 sources.  The zero directory operation, which I think is what "format" uses, just grabs the device size and writes an empty directory. So I'm puzzled by the reference to an invalid sector.
>>> 
>>> I would expect the INIT to write the empty directory. I would expect FORMAT to actually format the disk pack, meaning writing the sector header for each sector on the whole packet.
>>> A little surprised, though, that the formatting wouldn't know how many tracks there are, and continue until it hits an error.
>> There is no such thing as "format", in the sense of writing sector headers, on an RK05.
> 
> Uh... Yes there is. I happen to have written a formatting program myself on a PDP-8 for the RK05. It can definitely write the sector headers.

Oops.  You're right, I misremembered.  

>>>> The driver calls that a hard error (no retrying).
>>>> But why would you turn on the FAULT light on your RK05 for that?  Fault, on the RK05, means servo failure, in particular it means the servo grid light bulb has burned out.  References to invalid disk addresses don't light FAULT in an RK05.  The Peripherals handbook describes it as (a) that light bulb failed, or (b) write current is present without a write command, meaning your disk probably has been wiped by an electronic failure.
>>> 
>>> Sounds like simh does it wrong, then.
>> I don't think Henk was talking about SIMH having a problem, though I got a bit confused.  The question was about the fact that the fault light was coming on. My answer is: don't implement that light, there is no condition in the emulated drive that matches what that light does in the real drive.
> 
> I think Henk was also reflecting on that the error condition in simh was triggered by the cylinder address error, and this is what he was using as the source for his error light.
> 
> If I understood it right, Henk didn't implement the logic to trigger the error state. He's merely extracting the information in order to display it on the RK05 panel. And the light went on, and that led us here...
> But I might have missed the whole point...

There is no fault light handling that I can see in SIMH.  The way I read Henk's comment is that he observed from debug messages added to pdp11_rk.c that RT11 FORMAT was passing an out of bounds cylinder number.  FWIW, I see RSTS-11 DSKINT format code stopping at cylinder 202, as expected.

I'm not sure why one would format an emulated RK05, assuming that it only simulates the data portion of the sectors and not the header word.

	paul




More information about the Simh mailing list