First, a warning: IMHO!
You may know that modifications to machines after initial commissioning
goes back to the beginning of the world, starting with ENIAC. (Even
Zuse talked about pausing before adding the wire to allow conditional
branches to one of his machines because he knew it would cause trouble,
although he did it anyway. The ERA/UNIVAC ATLAS, ATLAS-II machine were
made for the NSA but had instructions like popcount [any others?]
removed from the later 110x commercial versions.)
Anyway, no matter what, you want to read this paper, if you haven't yet:
https://www.soemtron.org/downloads/decinfo/architecture18b08102006.pdf
If you want details on the ancestral TX-0 (see below), you want to read
this paper:
https://archive.org/details/bitsavers_mittx0memoOct74_2884219
Remember that the original TX-0, and the later L-1, both had Wes Clark's
4 opcodes (he was the logic designer for both machines and the TX-2 and
LINC):
add to ac,
store & clear ac,
conditional jump (jump if ac positive on the L-1, jump if ac
negative on the TX-0), and
the misc. addr. bits with the operate op-code (which included I/O).
(I do not know if there were additions to the operate bits while the
op-code was still 2 bits., McKenzie's paper above probably says.)
But once the TX-0 moved beyond the 2-bit opcode, if not earlier, then as
Gwen Bell once said, "you could add instructions just by adding some
wires, so each morning you might find a new instruction had been added
to the machine overnight."
Considering that the PDP-1 came out of the TX-0 group, adding different
instructions beyond the base design to different machines is par for the
course. But as you know, there is not a single PDP-1 design, just as
there is not a single PDP-11 design or even (if you look low enough)
PDP-11/70 design. The same applies to the PDP-1.
I would indeed call any PDP-1X a PDP-1. If it ran code for the PDP-1C
(and it was probably was a 1C with added instructions, and nothing
removed) it was a PDP-1.
Chapter 4 of this BBN history is about the different models of the PDP-1
they dealt with (B, C, D, IIRC):
https://ethw-images.s3.us-east-va.perf.cloud.ovh.us/ethw/c/c1/BBN_computing_history_-_A_Culture_of_Innovation.pdf
via
https://ethw.org/Archives:BBN_computing_history:_A_Culture_of_Innovation
p. 54 talks about the PDP-1B serial #2 (the "white" (really speckled)
PDP-1 in the "trainspotting" articles)
Importantly, this talks about a meeting where drums for the PDP-1 were
discussed, and somebody left the room and came back with a couple of POs
for them, so DEC agreed to build them.
The T-11 doesn't have EIS & MARK, the J-11 doesn't have MARK, but they
are still PDP-11 CPUs.
So IIRC from the above-referenced papers, there was one PDP-1A (#1), one
-1B (#2), maybe 40-some -1Cs (the "production" machine), and two -1Ds
for timesharing that were different from each other. So that's 5 types
of machines not counting -1Xs. And some of those machines were
sometimes called -1Xs which (if they weren't the -1Ds) makes for more
types of machines.
As was said someplace, quoted as best as I can recall, "The PDP-1X
wasn't a single design, it was a loose term for a machine with
extensions." (Maybe in as Bell or Kotok or KO oral history? Sorry if I
got a couple of words wrong.)
If open-simh now supports some but not all of the additions made between
the 1C and the 1D, then it is already a new machine type, so call it
whatever you want to call it, maybe a -1CX. [The best solution is
probably to pick a historic machine and try to duplicate it as close as
you can. Then you have 'PDP-1D#43' if you picked serial #43 and it was
a 1D. But it's still a PDP-1.
I don't know how this variation among models is handled in open-simh but
I would suggest handling it like you handle variations between machines
in one of the other DEC families.
(As for handling different hardware options/models, are any of the WCS
options for the [CMU] 11/40E, 11/60, LSI-11, or VAX-11/7xx families
supported anyplace? How about the Remote Diagnosis Console for an
11/70? Or the BBN or MIT paging hardware for the KA10?)
p.s. When I was in Marlborough diagnostics, I heard of at least one
machine that had a SKIP instruction over a completely unused memory
location. The machine the program was written on had 1 bad core at that
location, so they never used that word of memory. (I didn't hear other
details.) So if you want to talk about customizations, there's an
example, and AFAIK they didn't throw it out of the family.
Does that help?
- Aron