
PDP-10/its: Incompatible Timesharing System - protomyth
https://github.com/PDP-10/its
======
aap_
For those wondering what ITS is. It's an operating system that was developed
at MIT for the PDP-6 and later PDP-10 starting in the mid 60s. The last ITS
system was shut down in 1990. A very cool thing about ITS is that DDT, the
debugger, is the user interface to the OS. You can load files, examine and
change memory of your current job (and also DDT itself!), and of course also
start programs. ITS is also where EMACS was written on. It started out as a
set of macros for the TECO editor (a crazy beast).

EDIT: The linked repo currently builds an ITS runnable on a KS10 (emulated by
simh and klh10). Eventaully we want to get it running on an emulated KA10 too.
Getting it to run on a PDP-6 would probably only be possible if we get an
older version of the source from somewhere (MIT might still have it). Another
goal would be to get the 10-11 interface (a connection between a PDP-10 and
-11) working so that we can try emulating the Knight TV system.

~~~
digi_owl
> the TECO editor (a crazy beast).

Makes ed look almost benign...

[https://en.wikipedia.org/wiki/TECO_%28text_editor%29](https://en.wikipedia.org/wiki/TECO_%28text_editor%29)

~~~
Groxx
Those example programs... holy cow. After that, I don't know if I'll ever feel
bad about my code being unreadable.

~~~
mveety
Actually it's not as bad as it looks at first glance. At least on OpenVMS, you
normally use it like sed, and its not much worse than writing some regex,
normally.

Granted, writing a text editor in regex sounds awful.

~~~
Groxx
Yeah, the actual _editing_ looks fine. The programs though.

    
    
        0uz                             ! clear repeat flag !
        <j 0aua l                       ! load 1st char into register A !
        <0aub                           ! load 1st char of next line into B !
        qa-qb"g xa k -l ga -1uz '       ! if A>B, switch lines and set flag !
        qbua                            ! load B into A !
        l .-z;>                         ! loop back if another line in buffer !
        qz;>                            ! repeat if a switch was made last pass !

------
DonaldFisk
I wrote a couple of programs for ITS after it was resurrected.

Tetris:
[http://web.onetel.com/~hibou/ITSter.txt](http://web.onetel.com/~hibou/ITSter.txt)

Conway's Life:
[http://web.onetel.com/~hibou/life.txt](http://web.onetel.com/~hibou/life.txt)

ITS page on Ward's Wiki:
[http://wiki.c2.com/?IncompatibleTimeSharingSystem](http://wiki.c2.com/?IncompatibleTimeSharingSystem)

(Incidentally the correction to the wiki article in file names is wrong: file
names were _two_ words, each of six characters.)

Steven Levy's Hackers
([http://www.stevenlevy.com/index.php/books/hackers](http://www.stevenlevy.com/index.php/books/hackers))
contains the history of its development. More information on ITS, and how to
run it, can be found at
[http://its.victor.se/wiki/](http://its.victor.se/wiki/)

And coolest of all, someone's got a PDP-10 running ITS on a FPGA:
[http://fpgaretrocomputing.org/pdp10x/](http://fpgaretrocomputing.org/pdp10x/)

------
ChuckMcM
Wow, what a walk down memory lane. Remarkable that my fingers remember things
my brain doesn't :-). I first interacted with Richard Stallman on the MIT ITS
system (I was a tourist) and was complaining/arguing about some compiler
feature with him, and the guy next to me in the lab nudged me and said "You
realize he wrote the compiler right?", talk about being embarrassed!

------
pjc50
What are/were the unique or distinctive features of ITS? It's mentioned in a
couple of places in the "jargon file", but otherwise it's a part of computing
history I'm not familiar with.

~~~
panic
The "PCLSRing" technique to essentially back out of an active syscall is worth
studying:
[https://en.wikipedia.org/wiki/PCLSRing](https://en.wikipedia.org/wiki/PCLSRing)
[http://fare.tunes.org/tmp/emergent/pclsr.htm](http://fare.tunes.org/tmp/emergent/pclsr.htm).
It's much better than the UNIX approach of returning early with an error or
incomplete data.

~~~
waqf
> _much better than_

Funny to say that, when the comparison between these two approaches was the
subject of the original "Worse is Better" article:
[http://dreamsongs.com/RiseOfWorseIsBetter.html](http://dreamsongs.com/RiseOfWorseIsBetter.html)

------
qwertyuiop924
There are still a few (emulated) ITS systems running online. In particular,
there's UP, which you can SUPDUP into from your home machine, and even get an
account on, if you ask nicely.

Also, if you're interested in fiddling with ITS, and weren't around in The
Good Old Days (as I was not), Björn Victor's ITS wiki
([http://its.victor.se/wiki/](http://its.victor.se/wiki/)) is an invaluable
resource.

~~~
larsbrinkhoff
SV is back online.

[http://its.svensson.org/](http://its.svensson.org/)

------
gravypod
This is a little bit off topic but are there any "build your own" PDP-11 kits?
Like single board systems using clone PDP-11 chips that would be fun to put
together and write code for.

~~~
jasomill
Relating this back to the topic of OS history, it's interesting to note that
PDP-11 was the original BSD UNIX platform, and that 2.11BSD for PDP-11 still
receives occasional patches (the most recent one I can find is from March of
last year).

And as a former "home" MicroPDP-11/83 owner, I can attest that it was indeed
fun to put together and write code for.

With that said, while probably not what you have in mind when you speak of
"single-board systems", the DEC Professional 3xx (325, 350, 380) is a desktop
PC built around a single-board PDP-11 CPU. And most (all?) MicroPDP-11 systems
are built around a Q-Bus CPU board, and, excluding bulky options like multi-
port serial patch panels, open-reel tape drives, and large (around 150 lbs.
and 6U for my 456MB RA81) hard drives, aren't much bigger than a modern full-
tower or >1U rack server, though they require considerably more electrical
power (generally not too much for a dedicated 120V 15-20A household circuit,
however, unless kitted out with, e.g., more than one of the aforementioned
RA81 disks).

Both are "single-board systems" in the sense that the CPU, and in some cases
RAM, is contained on a single board, though you'll need one or more I/O boards
to do anything useful with them. Which, depending on your idea of fun, you
could, I suppose, build yourself — there was, after all, a time when PDP-11
CPUs weren't an unusual choice in larger embedded systems.

------
mrbill
Looking at the "List of Known ITS Systems", one of them is listed with the
owner as Dave McGuire.

Dave's a friend of mine, and it lives at his Large Scale Systems Museum.

There's a pic here:
[http://q7.neurotica.com/LSSM/IMG_4905.JPG](http://q7.neurotica.com/LSSM/IMG_4905.JPG)

------
julian_t
And should you wish to play with this, you can run your own ITS instance using
SIMH[1]

[1]
[https://www.cosmic.com/u/mirian/its/itsbuild.html](https://www.cosmic.com/u/mirian/its/itsbuild.html)

~~~
aap_
Or, you know, just build from this github repo.

------
rashkov
ITS was an early operating system that could handle multiple users logged onto
the same machine at the same time -- think of how multiple people can SSH into
the same Linux machine. It came out of MIT's AI lab which is where a lot of
early hackers were doing their thing. Here's an excerpt from Stephen Levy's
book Hackers: heroes of the computer revolution. It is a great read and I
highly recommend it:

"It underlined something that Greenblatt, Gosper, and the rest considered
essential the magic that could come only from programs using all of the
computer. The hackers worked on the PDP-6, one by one, as if it were their own
personal computer. They would often run display programs which ran in "real
time" and required the computer to constantly refresh the screen; timesharing
would make the display hacks run slower. And the hackers had gotten used to
little frills that came from complete control of the PDP-6, like being able to
track a program by the flashing lights (indicating which registers in the
machine were firing). Those perks would be gone with time-sharing.

At heart, though, the time-sharing issue was an esthetic question. The very
idea that you could not control the entire machine was disturbing. Even if the
time-sharing system allowed the machine to respond to you in exactly the same
way as it did in single-user mode, you would just know that it wasn't all
yours. It would be like trying to make love to your wife, knowing she was
simultaneously making love to six other people!

...

There was an even more striking embodiment of the Hacker Ethic within ITS.
Unlike almost any other time-sharing system, ITS did not use passwords. It was
designed, in fact, to allow hackers maximum access to any user's file. The old
practice of having paper tapes in a drawer, a collective program library where
you'd have people use and improve your programs, was embedded in ITS; each
user could open a set of personal files, stored on a disk. The open
architecture of ITS encouraged users to look through these files, see what
neat hacks other people were working on, look for bugs in the programs, and
fix them. If you wanted a routine to calculate sine functions, for instance,
you might look in Gosper's files and find his ten-instruction sine hack. You
could go through the programs of the master hackers, looking for ideas,
admiring the code. The idea was that computer programs belonged not to
individuals, but to the world of users.

ITS also preserved the feeling of community that the hackers had when there
was only one user on the machine, and people could crowd around him to watch
him code. Through clever cross-bar switching, not only could any user on ITS
type a command to find out who else was on the system, but he could actually
switch himself to the terminal of any user he wanted to monitor. You could
even hack in conjunction with another user for instance, Knight could log in,
find out that Gosper was on one of the other ports, and call up his program
then he could write lines of code in the program Gosper was hacking.

...

The faith that the ITS had in users was best shown in its handling of the
problem of intentional system crashes. Formerly, a hacker rite of passage
would be breaking into a time-sharing system and causing such digital mayhem
maybe by overwhelming the registers with looping calculations that the system
would "crash." Go completely dead. After a while a hacker would grow out of
that destructive mode, but it happened often enough to be a considerable
problem for people who had to work on the system. The more safeguards the
system had against this, the bigger the challenge would be for some random
hacker to bring the thing to its knees. Multics, for instance, required a
truly non-trivial hack before it bombed. So there'd always be macho
programmers proving themselves by crashing Multics.

ITS, in contrast, had a command whose specific function was crashing the
system. All you had to do was type KILL SYSTEM, and the PDP-6 would grind to a
halt. The idea was to take all the fun away from crashing the system by making
it trivial to do that. On rare occasions, some loser would look at the
available commands and say, "Wonder what KILL does?" and bring the system
down, but by and large ITS proved that the best security was no security at
all.

...ITS was the strongest expression yet of the Hacker Ethic. Many thought that
it should be a national standard for time-sharing systems everywhere. Let
every computer system in the land spread the gospel, eliminating the odious
concept of passwords, urging the unrestricted hands-on practice of system
debugging, and demonstrating the synergistic power that comes from shared
software, where programs belong not to the author but to all users of the
machine.

In 1968, major computer institutions held a meeting at the University of Utah
to come up with a standard time-sharing system to be used on DEC'S latest
machine, the PDP-10. The Ten would be very similar to the PDP-6, and one of
the two operating systems under consideration was the hackers' Incompatible
Time-sharing System. The other was TENEX, a system written by Bolt Beranek and
Newman that had not yet been implemented. Greenblatt and Knight represented
MIT at the conference, and they presented an odd picture two hackers trying to
persuade the assembled bureaucracies of a dozen large institutions to commit
millions of dollars of their equipment to a system that, for starters, had no
built-in security.

They failed."

~~~
jslabovitz
Around 1982, I had an account on MIT-MC, an ITS computer. I was not an MIT
student -- rather, a curious teenage hacker from DC. I'd found a text file
with 'interesting modem numbers,' and one of those was to a DoD TAC
(basically, a dial-in). I recall the text file had a note saying how to
connect (via NCP, not TCP/IP) to MIT-MC.

I connected, and remember playing around (as we did) at the login prompt. I
probably tried to login as 'guest' or something, and the result was basically,
'There's no user by that name. Do you want an account?' Of course, I said yes
-- and shortly received my own account.

Stallman may have been sponsoring logins for folks like myself; he definitely
was a little later when I got an account on MIT-AI (or was it MIT-OZ?), which
was by that point a TOPS-20 machine.

ITS was a very bizarre system, really with its own social culture. Even in
1982, it felt strangely archaic. The debugger-as-shell was definitely an
interesting concept.

Once I accidentally deleted a file. I felt awful, and emailed one of the
admins, assuming they'd kick me off. He was like, 'Ah, no worries. We'll just
restore it from tape.'

~~~
DonHopkins
NBS TIP: 301-948-3850

I dialed it enough times that I still remember it. Much thanks to Bruce of
"Bruce's NorthStar" BBS in Virginia for that phone number. [1]

MIT-MC: @L 236

MIT-AI: @L 134

MIT-DM: @L 70

MIT-ML: @L 198

Anyone remember how to do a TIP-to-TIP link, as documented on page 5-4 of the
"Users Guide to the Terminal IMP" [2], by connecting an input and output
socket of one TIP to an input and output socket of another TIP, through an
unsuspecting host, so you could chat back and forth directly between two TIP
dial-ups, without actually logging into the host?

It went something like @HOST #, @SEND TO SOCKET #, @RECEIVE FROM SOCKET #,
@PROTOCOL BOTH, making sure the sockets were different parity so as not to
violate the Anita Bryant clause with homosocketuality. [3]

You could also add the octal device port number of any other TIP user on your
same TIP after the @ and before the command, to execute those commands on
their session. (See page 5-7, "Setting Another Terminal's Parameters".) BBN
wrote such great documentation and would mail copies of it for free to anyone
who asked (that's how I got mine), you couldn't even call it security by
obscurity!

The "ARPANET" episode of "The Americans" really missed the boat about how easy
it was to break into the ARPANET. I didn't even have to kill anyone! [3] [4]
Makes me wonder about the part about squeezing your anus... [5]

What was your uname?

-A2DEH

[1]
[https://games.slashdot.org/comments.pl?sid=242967&cid=196819...](https://games.slashdot.org/comments.pl?sid=242967&cid=19681997)

[2]
[https://archive.org/details/bitsavers_bbntipADA0eTerminalIMP...](https://archive.org/details/bitsavers_bbntipADA0eTerminalIMPAug75_2157363)

[3]
[https://news.ycombinator.com/item?id=12422813](https://news.ycombinator.com/item?id=12422813)

[4]
[https://en.wikipedia.org/wiki/Arpanet_(The_Americans)](https://en.wikipedia.org/wiki/Arpanet_\(The_Americans\))

[5]
[https://www.youtube.com/watch?v=hVth6T3gMa0](https://www.youtube.com/watch?v=hVth6T3gMa0)

[6]
[https://www.youtube.com/watch?v=s3OMSMq9zPA](https://www.youtube.com/watch?v=s3OMSMq9zPA)

~~~
jslabovitz
I was HNIJ@MIT-MC (and later, rms.g.hnij@mit-oz). I used to be able to google
for those addresses and pull up my now-embarrassing questions I posted on
various mailing lists as a teenager.

~~~
DonHopkins
Oh yes, I remember you and your eminently googlable uname!

I'm just glad that nobody can google the message I sent to the LISP@AI mailing
list asking how to set the value of a variable. Soooooo embarrassing!

I'm sure KMP's eyes rolled up to the back of his head, but then he took the
time to help me out with TEACH-LISP (which Jerry Pournelle was ignorant enough
to cite in a not-friendly light when he condemned LISP in his Byte column
Cretin Manor [1]).

"The man has learned nothing from his presence on MC and sets a bad example of
what people might potentially accomplish there. I'd rather recycle his account
for some bright 12-yr-old..." -KMP

"One thing that is known about ARPA: you can be heaved off it for supporting
the policies of the Department of Defense. Of course that was intended to
anger me. If you have an ARPA account, please tell CSTACY that he was
successful; now let us see if my Pentagon friends can upset him. Or perhaps
some reporter friends. Or both., Or even the House Armed Services Committee."
-POURNE

Speaking of googling for unames, it's amusing how POURNE's right wing nut bag
GamerGate supporters defended him by complaining about KLOTZ's name and
presumed gender [2]:

"The first thing I noticed was that the nasty message to Dr. Pournelle came
from a woman bureaucrat. Those broads are the worst type of mean, nasty and
petty, hiding their vindictiveness behind a facade of professional-sounding
language. Love Jerry's response! Seppuku, ha!"

In reply one of them attempted to dox and defame the people on USER-A and
their infamous careers and naming conventions:

"Actually, if you mean "Leigh L Klotz" that's not a woman. I did a little
research on the names there. A Leigh L. Klotz Jr. - male - graduated from MIT
in 1989 and went on to work at Xerox PARC and is active on the W3C. Unless
there was a Klotz Sr. professoring at MIT (I can't find a record of such),
then Dr. Pournelle was being hectored by a snot-nosed undergrad.

David Vinayak Wallace I don't have an age or graduation date for, but he went
on to co-found Cygnus Support (later merged into Red Hat) in 1989, the same
year Klotz graduated. When Wallace got married, he hyphenated his name and now
goes by David Henkel-Wallace.

Kent Pitman has made a career out of LISP, and responds to Pournelle's
criticism of his pet language with typical gamma rage. Like Klotz, he's made
committees a big part of his life.

Having worked with the W3C in the past, I have very little respect for anyone
who maintains a long-standing releationship with that body. It is a perfect
warren of passive-aggressive rabbits."

"Klotz"? Seriously?

"Take note of Aspinall as well.

For our hodge-podge of a language and culture, it kind of sucks that we don't
have the kind of family names that readily describe family values or
characteristics in the plain language like, say, Russian does. It makes for a
better sense of irony and justice when telling the story. Treasure the times
when the power of fate brings them together in English, like here for
instance."

[1]
[http://www.stormtiger.org/bob/humor/pournell/story.html](http://www.stormtiger.org/bob/humor/pournell/story.html)

[2] [http://voxday.blogspot.md/2014/12/some-things-never-
change.h...](http://voxday.blogspot.md/2014/12/some-things-never-change.html)

~~~
lispm
Klotz is a word in German. It means something block. A Klotz is usually a big
block or also often a block which makes some kind problems: 'Die JVM ist wie
ein Klotz am Bein.' -> 'The JVM is like block tied to your leg.' A Klotz can
also be a slightly too big building. 'Das ist aber ein Klotz!' There is also
the verb 'klotzen', which usually means doing something with a lot of effort
or when the result is large. 'ranklotzen' then means working hard.

~~~
DonHopkins
And as I learned when I typed the word "KLOTZ" into Terrapin Logo on the Apple
][ [1] :

    
    
        KLOTZ IS A LOGO PRIMITIVE! (BEEP BEEP BEEP)
    

[1]
[https://www.reddit.com/r/programming/comments/1pt77c/who_rem...](https://www.reddit.com/r/programming/comments/1pt77c/who_remembers_the_logo_programming_language/#cd6gprv)

------
DonHopkins
MIT-MC

[http://donhopkins.com/home/catalog/images/mc-
console.jpg](http://donhopkins.com/home/catalog/images/mc-console.jpg)

A CADR Lisp Machine spews its guts, on the 9th floor MIT AI Lab at Tech
Square.

[http://donhopkins.com/home/catalog/images/cadr.jpg](http://donhopkins.com/home/catalog/images/cadr.jpg)

The expression on Richard's face is saying, "I don't know, why do you wrap
gerbils in duct tape?"

[http://donhopkins.com/home/catalog/images/jsol-rms-gerbil-
li...](http://donhopkins.com/home/catalog/images/jsol-rms-gerbil-liz-mg.jpg)

------
rbanffy
It runs Emacs, therefore it's useful.

~~~
digi_owl
Huh, didn't know RMS frequented HN...

~~~
grzm
Please strive to post more substantive comments. Petty tiresome digs at
editors are tiresome.

------
DonHopkins
"If you're not working with 36 bits, you're working with a full DEC." -Doug
Humphrey

------
loktarogar
What is this?

