[Simh] VMS 4.6 won't boot from a Massbus disk
Brian Knittel
brian at quarterbyte.com
Wed Jan 26 16:49:39 EST 2011
> I am running this on a recently purchased quad-core system that is rather
> fast. I have simh set up on a system that is much slower, so I will give
> that a try to see if there is a difference.
Hi Peter,
The speed of the *host* (Intel) processor should not be a factor. The
timing in question is within the simulated machine -- the "virtual"
time between when a hardware device is given a command and when
the corresponding data is transferred or when the device interrupt
occurs. In SIMH the delay is typically specified as a number of
simulated instructions. That is, a delay of 10 means an interrupt will
occur after the simulated VAX CPU has executed 10 instructions. The
default delay settings for each device are determined on an ad-hoc
basis, and as I found while writing the IBM 1130 simulator, this can be
a dicey thing.
Here's a hypothetical explanation of the problem: The VMS 4 driver
initiates an operation, does a little housekeeping, then enters an idle
loop waiting for the corresponding operation-complete interrupt. On
real hardware, there was always enough time for the housekeeping work.
But, in SIMH the interrupt occurs before the VMS driver enters the wait
loop, and so the wait never ends because no further interrupts occur.
This is the "too fast" issue they're talking about. If this is the
problem, then increasing the disk device's delay settings may well
solve it. It looks like the RP device read and write delay is:
RTIME + STIME * (# of cylinders being stepped)
where RTIME and STIME are both 10 by default. If the read head is
already on the desired cylinder, a read operation completes when just
10 VAX instructions have elapsed since it was initiated.
On real hardware, a read took, at the very least, enough time for the
desired number of words to rotate past the read head. 10 instructions
isn't very much time at all. I'd suggest setting RTIME to 1000 just to
see if the boot succeeds:
deposit RP RTIME 1000
then boot. If it works, try repeatedly halving it. Find the minimum
value needed for a successful boot.
But the problem could be also due to a subtle difference in the way
that interrupts are generated on the real hardware vs. the simulated
hardware (for example, an interrupt that should be occurring isn't or
vice versa), or in the way that the control registers work (as a
hypothetical example, after a seek the driver examines the current-
cylinder register and expects to see it changing over time, whereas in
SIMH the register changes instantly). The VMS 4 driver might be
dependent on the exact behavior, while the other versions' drivers
aren't.
If this is the problem, it may require a change in the source code for
the simulated device. Far trickier to do. The change would have to make
VMS 4 work but not break the other VMS versions or the PDP-11 operating
systems, which share the same RP device simulator code.
Brian
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
_| _| _| Brian Knittel
_| _| _| Quarterbyte Systems, Inc.
_| _| _| Tel: 1-510-559-7930
_| _| _| http://www.quarterbyte.com
More information about the Simh
mailing list