PDP-1 "Hacking Instruction Sets"

34 views
Skip to first unread message

Paul Birkel

unread,
Aug 23, 2026, 5:08:09 AMAug 23
to [PiDP-1]
 https://news.ycombinator.com/item?id=28604707 includes the statements "Sophisticated customers hacking the instruction sets of their machines goes back pretty much to the beginning.  The earliest I personally know of is Prof Jack Dennis hacking MIT's PDP-1 to support timesharing, sometime in 1961."  Can anyone elaborate on this?

Bill E

unread,
Aug 23, 2026, 6:45:18 AMAug 23
to [PiDP-1]
This without a doubt is referring to the PDP-1X. Mods started in 1961 and a LOT was hacked in the hardware. I'd say it's hard to even call it a PDP-1. I know an index register, a memory-mapping register, some kind of cycle timer, and more were added. I sure wish we had index registers now, but that's a hack too far for the pidp-1. I've kept my 'cpu' mods to a subset of the -1D instructions, those weren't a huge stretch, just some useful extensions. Well, except for the rather strange ring instructions for the BBN system which were for user tty buffering and quick accessing, implementing a ring buffer.
Bill

Bill E

unread,
Aug 23, 2026, 6:52:59 AMAug 23
to [PiDP-1]
Here's another example of the hack level. This is actually pretty cool, but again I consider it out of bounds:
"The processor’s I/O logic was rewired to accommodate a 36-conductor coaxial I/O bus. Rather than hard-wiring devices directly into the CPU, this new capability allowed the PDP-1-X to treat peripherals like modular add-ons. The hardware could dynamically address, assign, and pass data to up to 64 separate I/O modules (such as high-speed drum memory, graphical displays, and the custom microtape file system) without needing to halt the processor or rewrite the underlying kernel."
Bill

Aron Insinga

unread,
Aug 23, 2026, 9:36:56 PMAug 23
to pid...@googlegroups.com
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

Norbert Landsteiner

unread,
Aug 24, 2026, 12:34:28 AMAug 24
to [PiDP-1]

For a bit of context, BBN obtained the PDP-1B prototype (the cream colored 4-cabinets machine with the detached desk console seen in the March 1961 PDP-1 brochure) in Fall 1960 and subsequently hired Marvin Minsky and John McCarthy as consulting AI researches on the PDP-1. While officially hired by J.C.R. Licklider, this was very much on advise by Ed Fredkin. In the course of this collaboration Ed Fredkin came up with the idea of a zero-latency context swapping design for a drum to be used for time sharing. (The principal idea behind this is that memory read on core memory is destructive, so we need to write this information back on every read operation. But there's nothing that tells us that the information written back must be exactly the same one that was originally read. Rather, we may swap this behind the scenes, say by reading information from another drum track, and also storing the original information on yet another one. As each track would be the of 4K length, the same size as the memory, this could be perfectly in sync.) Fredkin's idea for this "fast drum" was appreciated and funds were secured quickly and in a rather non-bureaucratic manner. (Compare "A Culture of Innovation – Insider Accounts of Computing and Life at BBN", pp. 53–55.)
There were 2 such drums made, one for BBN and one for McCarty's timesharing system at MIT. The engineering design came from a new-hire at DEC, a young engineer by the name of Gordon Bell. As the drum(s) were delivered, Fredkin went on to modify the PDP-1B into a timesharing system, while MIT took a bit longer to eventually come up with their own design.
As far as we know, the PDP-1 donated to MIT by DEC became operational in November 1961 (the invitation for this event is for Sep. 6, 1961), with the screen being installed only in the last days of December (Dec. 29, according to the log.) The machine was eventually upgraded to incorporate the automatic multiply/divide (Type 10, introducing the "mul" and "div" instruction in place of the shift-step instructions "mus" and "dis"), which seems to have been around the end of the year of 1962. The report on the timesharing modifications (https://www.bitsavers.org/pdf/mit/rle_pdp1/ESL-R-140_PDP1_TS_Jun62.pdf) is from June 1962, based on a thesis submitted in May 1962, referring to Jack Dennis for counsel and guidance. This is written partly in future tense ("consoles will consist of…"), which makes me think that this reflects the planning for the system, but not necessarily also the execution. (It's only in 1963 that we see programs with modifications for timesharing, like "Spacewar 4.0-TS".) It could also be that work on this was progressing steadily over time, with substantial parts being already in place by mid-1962. (I really don't know, I'm rather guessing by the few documents available.)

Personally, I think, this may be a bit early to speak of any PDP-1X, since the machine was mostly still a stock PDP-1C (now including the Type 10, which had become standard equipment, since, and the timesharing modifications.) I also think that 1961, as cited in that HN comment, may be a bit too early for the timesharing modifications on the RLE machine.

Best,
Norbert


PS: Also, thanks for reading that train spotting article (or, rather the PDP-1 Spotting follow-up)! :-)
Reply all
Reply to author
Forward
0 new messages