Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
PDP-10/its: Incompatible Timesharing System (github.com/pdp-10)
121 points by protomyth on Jan 29, 2017 | hide | past | favorite | 50 comments


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.


> the TECO editor (a crazy beast).

Makes ed look almost benign...

https://en.wikipedia.org/wiki/TECO_%28text_editor%29


I remember running across a Turing machine emulator implemented in TECO in Minsky's home directory that I'd REALLY love to get ahold of.

https://news.ycombinator.com/item?id=10161159

hga 515 days ago | parent | favorite | on: The most obsolete infrastructure money could buy –...

Ask and yea shall receive:

    MSG: APL    1     
    DISTRIB:  *BBOARD
    EXPIRES: 03/17/81 23:08:54
    MINSKY@MIT-MC 03/11/81 23:08:54 Re: too-short programs

    APL is compact, I suppose.  So is TECO.  When I wrote the following
    Universal Turing Machine, which works, I actually understood it.

    [ I've interpolated the non-printing characters as displayed by (Gnu) EMACS, 
    escape is ^], ^^ is one character, as is \356: ]

    i1Aul qq+^^0:iqm^[29iiq\356y0L1 00L1 11L2 A1L1
    y0L1 0yR2 1AR2 AyR6 yyL3 00L0 1AL3 A1L4 yyL4 0yR5 11L7 A1L4
    yyR5 0yL3 1AR5 A1R5 yyR6 0AL3 1AR6 A1R6 y0R7 0yR6 11R7 A0R2
    ^[j<sR^[;-d-2ciql-^^^[ci"ed^^^[cii^[ciuq'^[>
    j<sL^[;-d-2ciql-^^^[ci"ed^^^[cii-2c^[ciuq'^[>jxblx1lx2lx3lx4lx5lx6lx7hk
    iyyAyyAyy^[32<i0^[>ji110101110000010011011^[ 1uq<htmbqq=>
I do not advise attempting to understand this code, which is almost as bad as that for the Universal Turing machine.

ADDED: or http://ancell-ent.com/share/minsky-TECO-turing-machine.txt

Please ack receipt of this and/or send me email (in my HN info); for others, note this is ITS TECO, which I was told was by far the most powerful version of it (fortunately, by the time I showed up learning it was no longer really necessary).


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


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.


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 !


It looks like a language that someone used to the APL family would have no problems with.


If I remember right the first (and maybe only) comment in the TECO source code was "Abandon all hope, ye who enter here".


I still have some muscle memory for TECO.


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

Tetris: http://web.onetel.com/~hibou/ITSter.txt

Conway's Life: http://web.onetel.com/~hibou/life.txt

ITS page on Ward's Wiki: 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) contains the history of its development. More information on ITS, and how to run it, can be found at http://its.victor.se/wiki/

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


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!


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.


The "PCLSRing" technique to essentially back out of an active syscall is worth studying: https://en.wikipedia.org/wiki/PCLSRing 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.


> 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


Actually, as I understand it, the BSDs will now PCLSR some calls.

Might be wrong though, so don't quote me.


The first article then goes on a synchronous vs async tangent. Is there some paper or textbook comparing the general syscall design between various OS families?


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/) is an invaluable resource.


SV is back online.

http://its.svensson.org/


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.


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.


I tried making my own: http://jonatron.me/ which has a part list. Also check out the PiDP-8 : http://obsolescence.wixsite.com/obsolescence/pidp-8 which is a kit. Also relevant is a Javascript PDP-11 simulator at: http://skn.noip.me/pdp11/pdp11.html


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


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


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


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."


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.'


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...

[2] https://archive.org/details/bitsavers_bbntipADA0eTerminalIMP...

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

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

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

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


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.


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

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


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.


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...


I'm still klotz, though I use unix now.


What's this I hear from the GamerGate folks about you being a woman bureaucrat, a broad who is the worst type of mean, nasty and petty, hiding your vindictiveness behind a facade of professional-sounding language (they do say Logo is just Lisp without parens), and also a snot nosed hectoring undergrad? You've been an inspiration to us all, and the computer industry need more nasty women like you!

I heard an alternative fact that Kent Pitman develop a New Implementation of Lisp in which NIL equals T, which inspired many other popular languages like PHP and JavaScript to adopt alternative definitions of equality, based on the insight that all objects are equal, but some objects are more equal than others.

And speaking of bright 12-year-olds, I heard that David Vinayak Wallace was the youngest kid to ever have his own office at the MIT-AI Lab, and as a small brown child he once schooled Jerry Pournelle for free [1]:

    Date: Sunday, 2 January 1983, 22:48-EST
    From: David Vinayak Wallace 
    Subject: The changing face of Micro-computing...

        Date: 31 December 1982 04:00-EST
        From: Jerry E. Pournelle 

    (I re-ordered some of your statements)

                The notion that "It's too late for the parents" is
        goofy.  Bill and Sibyl Grieb have packed classes at everywoman's
        Village on using computers; they teach CP/M and customization
        and all that.

                Patience: it took far longer for the "average citizen"
        to learn enough mechanics to be able to be comfortable using
        cars than it is taking for people to get used to computers.

    I think this example shows why it IS too late. You can always find a
    few exceptions to the rule; these exceptions are a tiny (>.5%) part
    of the actual computer user. I doesn't take mechanical knowledge to
    drive a car, it takes mechanical knowledge to modify or repair an
    automobile.  most people (me included) would rather buy a vanilla
    car and just have it work all the time. I change the oil (more than
    most people do), but have a mechanic do the real work.

        The problem with adult learners are the ones I had: no one seems
        to know how to explain things in English.  You have to learn a
        lot more than you really need to in order to be able to do much
        of anything.  Some of us, though, are trying to change that, and
        a few of us are not only doing something about it, but getting
        paid to.

        The High Priest mentality in which one accepts whatever a highly
        paid computer technician tells you, is dying away in industry
        already, and the micro world ain't going to let it get a foot
        hold...

    I'm biased, but I don't think this will really work. You can't
    discuss complex concepts without the proper language. I agree that
    there is a bit of High Priest mentality and that there is no good
    effort to teach the JARGON, but every "normal language" explanation
    of anything having to do with computers comes out muddled,
    long-winded, and ultimately, unclear..

    Some of us even do it for free.

    david
[1] https://www.cs.rutgers.edu/~cwm/NetStuff/Human-Nets/Volume6....


It's been 30 years, and the people are still obsessing about gerbils and Jerry Pournelle?!?


"I don't know, why do you wrap gerbils in duct tape?" http://donhopkins.com/home/catalog/images/jsol-rms-gerbil-li...


MIT-AI was always ITS. Must have been OZ.


OZ was always TOPS-20. Or Twenex, as they called it.

Actually the new KS10 AI may have been running TOPS-20 briefly before the ITS port was done.


Didn't even know they eventually replaced AI with a KS10--I had left MIT by 1980-ish (was sysadmin for MIT-EECS and the EE dept LispMs) and didn't keep up much with the goings-on there.


I was looking for Ron Schnell's original Maclisp verison of the DUNNET game. He said it might be on backup tapes from MIT-EECS. But I suspect such backups do not exist any more.


I will buy many beers if anyone can find me the original version. It was much different! Maybe better. Instead of finding yourself in a Vax/UNIX, you were inside a Dec-20 running Twenex. It used the COMND library, which simulated the COMND JRST. I wrote the elisp version trying to remember the "sort" of stuff I did with the original version, but even I would be surprised by what was actually in there...


This reminds me of an anecdote in Richard Stallman's biography French version, which seems to be missing from the English version (or isn't at the same place in the book).

Apparently, to avoid any security features being added to control file access, Stallman added a feature to store the name of the last user who modified a file. This consumed the last empty field available on file descriptors, thus preventing using it for access control...

The passage, in French :

Pour rendre quasi impossible une éventuelle refonte de l’ITS, Stallman utilisa le dernier champ vide de chaque descripteur de fichier pour y implémenter une fonction enregistrant le dernier utilisateur ayant modifié le fichier. Cette fonction nouvelle ne laissait plus de place pour stocker d’autres informations pour la sécurisation, et elle était si utile que personne ne pouvait sérieusement en proposer la suppression.


One more point -- although I believe your statement that ITS did not initially use passwords, I'm almost positive that the policy switched around 1982, and they did require passwords after that.


Now i am curious to get hold of some DEC terminals and see how many i can hook up to a desktop computer once i stuff it with serial port cards.


You don't stuff it with serial cards, you add serial concentrators like the HP-2345A to your network.

You can add dozens and dozens of ports that way, for cheap!


MIT-MC

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

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...


It runs Emacs, therefore it's useful.


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


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


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


What is this?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: