Bob Supnik
2018-04-12 21:49:03 UTC
SimH's intended purpose was to run historical software in furtherance of
computer education. It was not intended as a perfectly accurate
emulation of every detail of every architecture. There are compromises
in the design to simplify implementation.
One of those, dating back to its progenitor, MIMIC, is the use of PMS
(processor-memory-switch) notation, which simplifies IO into controller
and units. It doesn't really support the notion of nested controllers,
which is what the Massbus actually requires: a Massbus controller (RH)
connected up to a maximum of eight subcontrollers (for an RP06, the
DCL), which is turn connected to one (or for tapes, more than one) unit.
Originally, the Massbus devices were modeled as a controller and units
(the KS10 simulator still does that). That proved unsatisfactory,
because it required extensive code duplication between the VAX and the
PDP11, and between Massbus disks and Massbus tapes. So a while back, the
RH controllers were split out, and a system-specific hack put in place
to associate the "independent" RP controller with a Massbus channel. The
RP controller was not restructured as eight independent controllers with
one unit each. It remained a quasi-standard disk device, with one
controller and eight units. As a result, the RP can only be associated
with a single Massbus channel.
The software changes to get "accuracy" are fairly intrusive.
1. Change the RP to be 'n' separate controllers of one unit each.
2. Change the RH controller to allow a different device for each device ID.
3. Allow each separated controller to be assigned to a MB channel
independently, based on device ID.
Enforcing configuration restrictions (for example, no mixing of disks
and tapes on the same channel) is yet more work.
A simpler hack would be to replicate the RP controller, allowing for up
to 16 drives in two strings. Each string could be associated with a
different MB channel. The 'generalization' of a controller to support
multiple instances is shown in the MSCP disks and in the RH controller
itself.
/Bob
computer education. It was not intended as a perfectly accurate
emulation of every detail of every architecture. There are compromises
in the design to simplify implementation.
One of those, dating back to its progenitor, MIMIC, is the use of PMS
(processor-memory-switch) notation, which simplifies IO into controller
and units. It doesn't really support the notion of nested controllers,
which is what the Massbus actually requires: a Massbus controller (RH)
connected up to a maximum of eight subcontrollers (for an RP06, the
DCL), which is turn connected to one (or for tapes, more than one) unit.
Originally, the Massbus devices were modeled as a controller and units
(the KS10 simulator still does that). That proved unsatisfactory,
because it required extensive code duplication between the VAX and the
PDP11, and between Massbus disks and Massbus tapes. So a while back, the
RH controllers were split out, and a system-specific hack put in place
to associate the "independent" RP controller with a Massbus channel. The
RP controller was not restructured as eight independent controllers with
one unit each. It remained a quasi-standard disk device, with one
controller and eight units. As a result, the RP can only be associated
with a single Massbus channel.
The software changes to get "accuracy" are fairly intrusive.
1. Change the RP to be 'n' separate controllers of one unit each.
2. Change the RH controller to allow a different device for each device ID.
3. Allow each separated controller to be assigned to a MB channel
independently, based on device ID.
Enforcing configuration restrictions (for example, no mixing of disks
and tapes on the same channel) is yet more work.
A simpler hack would be to replicate the RP controller, allowing for up
to 16 drives in two strings. Each string could be associated with a
different MB channel. The 'generalization' of a controller to support
multiple instances is shown in the MSCP disks and in the RH controller
itself.
/Bob
But we are far from being true to the original hardware, so trying to
use that as an argument I think is really weak. Or else we should really
allow me to set CSRs arbitrarily when I have several controllers, allow
me to setup two RP06 on different Massbus channels, and so on. That
would be true to the original hardware. And the same with claiming to
not want to do something because DEC didn't provide it, when obviously
3rd party manufacturers did.
use that as an argument I think is really weak. Or else we should really
allow me to set CSRs arbitrarily when I have several controllers, allow
me to setup two RP06 on different Massbus channels, and so on. That
would be true to the original hardware. And the same with claiming to
not want to do something because DEC didn't provide it, when obviously
3rd party manufacturers did.