Bob Supnik
2018-09-07 00:31:10 UTC
It's not a quirk, it's a design feature.
The PDP11 simulator didn't start out as a generalized, all-singing,
all-dancing emulation of all possible PDP11 models; it started as a J11
and PDP-11/73 simulator - one processor type, one system, Qbus only. In
the same way, the VAX didn't start out as a generalized emulation of all
possible VAX models; it started as a CVAX and MV3900 simulator - one
processor type, one system, Qbus only. These simulator targets were
chosen because I managed both chip projects and had all the design
documents, including microcode, for chips and systems.
Both the PDP11 and the VAX got extended for entirely legitimate reasons
- to run a broader range of software. Getting to early versions of Unix
meant supporting the PDP-11/45. Getting to early versions of VMS and BSD
meant supporting the VAX-11/780. In both cases, the peculiarities of the
Unibus versus the Qbus were not considered. The Unibus was treated as an
18b version of the Qbus.
As the simulators have been generalized, detailed divergences from how
the hardware worked - particularly model by model variances - have
surfaced repeatedly, and the simulators have been refactored
accordingly. For example, the discovery that the VAXstation code in
Ultrix violated the SRM but nonetheless worked on a MicroVAX II required
major surgery on the handling of unaligned references. Unibus DMA to the
IO page is just another example of model-specific differences that must
now be accommodated in order to run more code.
Except for models that have been written with complete design
documentation in hand, simulation of a model always has limits to its
fidelity. Within the PDP11 family, I'll vouch for the J11. Many of the
other models are just sketches (think 11/60), really. Within the VAX
family, I'll vouch for the CVAX/MV3900 and the 11/780. The others are
adaptations from one of those two bases and may be incomplete or
incorrect on details.
Mark has a good understanding of what needs to be done. In theory, the
same modifications need to be retrofitted to the 11/780 and other Unibus
VAX models, as well as to the KS10, although I don't think they have the
internal register shielding problem that the PDP-11 does.
/Bob
The PDP11 simulator didn't start out as a generalized, all-singing,
all-dancing emulation of all possible PDP11 models; it started as a J11
and PDP-11/73 simulator - one processor type, one system, Qbus only. In
the same way, the VAX didn't start out as a generalized emulation of all
possible VAX models; it started as a CVAX and MV3900 simulator - one
processor type, one system, Qbus only. These simulator targets were
chosen because I managed both chip projects and had all the design
documents, including microcode, for chips and systems.
Both the PDP11 and the VAX got extended for entirely legitimate reasons
- to run a broader range of software. Getting to early versions of Unix
meant supporting the PDP-11/45. Getting to early versions of VMS and BSD
meant supporting the VAX-11/780. In both cases, the peculiarities of the
Unibus versus the Qbus were not considered. The Unibus was treated as an
18b version of the Qbus.
As the simulators have been generalized, detailed divergences from how
the hardware worked - particularly model by model variances - have
surfaced repeatedly, and the simulators have been refactored
accordingly. For example, the discovery that the VAXstation code in
Ultrix violated the SRM but nonetheless worked on a MicroVAX II required
major surgery on the handling of unaligned references. Unibus DMA to the
IO page is just another example of model-specific differences that must
now be accommodated in order to run more code.
Except for models that have been written with complete design
documentation in hand, simulation of a model always has limits to its
fidelity. Within the PDP11 family, I'll vouch for the J11. Many of the
other models are just sketches (think 11/60), really. Within the VAX
family, I'll vouch for the CVAX/MV3900 and the 11/780. The others are
adaptations from one of those two bases and may be incomplete or
incorrect on details.
Mark has a good understanding of what needs to be done. In theory, the
same modifications need to be retrofitted to the 11/780 and other Unibus
VAX models, as well as to the KS10, although I don't think they have the
internal register shielding problem that the PDP-11 does.
/Bob
It seems like a rather unfortunate design quirk in simh.
A real Unibus don't distinguish between the I/O page any anything else.
In fact, from the Unibus point of view, there is no "I/O page". It's a
flat 18-bit address space where everything works the same.
A real Unibus don't distinguish between the I/O page any anything else.
In fact, from the Unibus point of view, there is no "I/O page". It's a
flat 18-bit address space where everything works the same.