19 comments

[ 4.8 ms ] story [ 35.3 ms ] thread
TOPS-20, we hardly knew ye.
This was before TOPS-20 and DEC borrowed a lot of ideas from TENEX into TOPS-20 while maintaining backwards compatibility with TOPS-10.

I had arrived at USC just after they had converted USC-ECLC to TENEX and connected it via the LA IMP to USC-ISI. I think it was host #32 on the ARPANET but I don't trust my memory well enough to swear to it :-).

Such a fun architecture the DEC-10, I'm glad you can run both TOPS and TENEX on simh, there are still good things to be learned there.

Don't think that's quite right, TOPS-20 was actually a fork of the Tenex code and so was pretty similar. Not sure what the relationship with TOPS-10 was.
My beard is not grey enough to have actually participated in this, but this is what I gathered as hobbyist:

TENEX started out as modification of TOPS-10 code base, afaik due to expanding needs leading BBN to create both TENEX and custom pager addon to PDP-10. Some time later DEC acquired TENEX code, cut it down some, modified some, and released it with support for the official DEC pager included in later PDP-10 models

I don’t think any of it came from TOPS-10. Tenex was essentially a port of the Berkeley Project Genie SDS940 OS to the PDP-10+demand paging from a custom (non-DEC) MMU.
After refreshing my memory a bit, indeed it was not forked from TOPS-10, but instead had what was essentially a syscall emulation layer for TOPS-10 binaries, something that ended up also present in some other PDP-10 OSes I think
That is what I remember. Basically this allowed it to run binaries built for TOPS-10.

At USC we ran TOPS-10 on the student machines and TENEX, and then later, TOPS-20, in the engineering computer lab. The TOPS-20 migration allowed us to run some accounting package from the student side on the staff side. That helped mitigate some of the impact on response time on the student side which was really poor with a couple hundred students logged in at the same time.

I may be the only one here old enough to have worked on Tenex... around 1978 or so, I dropped out of MIT and went to work at BBN and did some extensions to Tenex / TOPS-20, including as I remember some device drivers for the IBM-style tape drives that were still in use.
Do you regret dropping on out of MIT all these years later? (Honest question, not trolling)
Not really, I was more interested in hacking than coursework, so that's what I did. But I dropped back in some years later when the Media Lab started up, finished up my BS and got a couple of grad degrees.
if I'm not confusing it with some other OS, I think there was an emulated TOPS system online not so long ago
AFAIK there are no public access TENEX systems - nor emulated, I think nobody yet implemented the necessary BBN pager and I don't know if anyone recovered tapes with OS.

There are, however, publicly accessible TOPS-20 systems, including one at SDF which should be soon available moved onto recent~ish made physical PDP-10 system (a TOAD-2 PDP-10-on-a-Chip)

Cornwell implemented the BBN pager in his KA10 emulator, and it's in use running WAITS 7.x.

Plenty of files from TENEX tapes are here: https://github.com/PDP-10/tenex

Oh wow, I missed announcements on that. Can't wait to add WAITS to my collection then.
The shell was superior to any *nix shell, because the interface with programs was sane. Rather than the shell expanding *.foo into a zillion individual strings, the shell and the program agree that there's a file(s) parameter, and the program dynamically asks for the first, then next, then next, etc. matching file. So, you don't need to recompile your kernel every year or two to increase the maximum command line length.

And that was just the beginning of it. Programs could tell the shell what all their options were, so while you were typing a command, you could hit "?" and get something like a brief "man" page of options available at that point. Plus command completion worked all along the way, so not only would file names be completed when you hit <esc>, but also flags and parameters and such.

Given how baked-in the argc/argv interface is in *nix, there's no hope we'll ever be able to experience this again. How wonderful it was to be able to say the equivalent of "cp *.c (TO) *.old" and have it do what you obviously want. (The "(TO)" was a "noise-word" automatically inserted by the shell as part of the copy command's auto-completion.)

That's hilarious. I came up with something similar while brainstorming. Nothing new under the sun indeed.