Thursday, February 12, 2009

Computer History: The DEC PDP 11/70

Last week my friend Wesley Twittered about his first computer. It got me thinking about one of the first computers I used, so I replied to him about the DEC PDP 11/70. I also recalled a skill I developed at that time to convert octal (base 8) to binary in my head. More on that later. Here is what the control panel looked like for many PDP systems.

Photo credit: Wikipedia

The PDP family of computers were known as mini-computers to distinguish them from mainframes that ran in the data center. The workhorse PDPs ran in offices, on factory floors, and a privileged few were coddled in data centers too.

Getting this computer running was not as easy as pushing a button on a modern PC. You had to use the switches on the front panel to load an address, deposit a value, and then hit the start switch on the far right. Once it was booted, you could also tell what operating system was running by looking at the motion of the data lights when the CPU was idle. It it was running RSTS/E the lights made a marquee from left to right, and for RSX the lights started at both ends and met in the middle.

The address and deposited value were 7 digit values in octal (base 8) that you would find taped up on the front of the computer. The switches are in color coded groups of three, and you had to set the value using the 21 digit binary equivalent of the octal numbers. You can see the switch array at the bottom of the picture, numbered 0 to 20 from right to left. Programmers and hardware designers count starting a zero. Go figure.

Now I'm sure you all know how to convert octal to binary. You don't? Alright, here is a hint; each octal value can be represented by three binary digits. The binary digits have positional values of 4, 2, and 1. So 5 octal is 101 in binary. Here is a quick coversion table:
0 = 000
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111
Now that you are equipped, what is 7742036 octal as a binary value? Quick now! Got it? The answer is 111 111 100 000 011 110.

Anyone who can convert octal to binary in your head raise your hand. Or post a comment since we are a diminishing breed and should probably meet.

If you'd like to see and experience some computer history for yourself, you should visit the Computer History Museum in Mountain View, CA. My personal experience of the museum was at its original location at Digital Equipment Corporation, where I worked at the time, and their facility on Museum Wharf in Boston. I'm looking forward to paying them a visit at their new West coast home.

4 comments:

  1. I got to be the main admin on a PDP-11/70 with the front panel switches and core memory. But as i recall, we also had newer models of 11/70 without switches that boot from a floppy disk (8") and had 4 MB RAM. And, there were a couple PDP 11/44's with 1, 2 and 2.25 MB RAM. 2 MB of RAM was quite a bit for a 16 bit machine, and we supported 35 simultaneous users per machine under Unix. Such a machine would essentially never swap. Well, processes were 64 KB. Split instruction and data processes could be 128 KB. With overlays, you could get to 192 KB. But all the instruction part was shared between processes using the program. And only a few programs had overlays.

    When i was in high school, my uncle gave my dad a Japanese abacus (called a soroban). He worked for a living and didn't have time to deal with it, so gave it to me. There were two books on how to use it. It didn't occur to me at the time that my uncle was a polymath, having built fiberglass canoes, hand guns, did astronomy, botany, and so on along with his engineering day job. I'd no idea it might lead somewhere. I thought of it as a curiosity, like slide rules were becoming in 1975. I already had a scientific calculator.

    I went through the books, doing all the exercises. Add, subtract, multiply and divide, square root, cube root. Exercises went up to 4 digits of precision. At about the 3 month mark, having finished everything, i went back to this one chapter. I always recall it saying this: "You've been doing arithmetic on the soroban for awhile, now try it without the soroban. Picture one in your mind, and move the beads." It says nothing of the sort. It introduces the idea, and tries to give you hints on how to hold the image of more than one rod (digit) at a time - using your fingers and toes. I ignored all that. I had great visual memory and found it easy to picture the soroban. I went through both books, doing all of the exercises again as mental arithmetic. If i needed another rod, i'd create a new one from nothing. When i finished all the exercises, two things became clear. First, mental arithmetic is easily twice or three times faster than physically moving the beads. Second, i did two books of exercises without making a single mistake. With pencil and paper, i'd expect a mistake or two per page. Even with a calculator, i'd expect to hit a wrong button at least a few times for this many calculations. And, the physical soroban arithmetic was faster than paper by a large factor as well.

    Well, 4 digit mental arithmetic is pretty amazing, but how far could it go? I generated random 5 digit numbers and multiplied them getting 10 digit answers. I verified with my calculator. No problem. I generated 9 digit numbers and did multiplies getting 18 digit answers and divides getting 9 significant digits of answer. No problem. A 9 digit number could be divided by a 9 digit number in about a minute. But this still didn't show any sign of limitations. How could this be stress tested?

    I was taking calculus. I'd just learned Taylor series expansions for trig functions. That's just the thing. In radians, sin(x) = x - x^3/3! + x^5/5! - x^7/7! ... I picked a random angle in degrees, converted to radians, and held 10 significant digits. 35 minutes later i wrote down the answer, and checked it with my calculator. It was correct.

    Later, i figured out what i must have done. Since 17! is 3,556,8742,809,600 - and for speed, i computed x^2 once and reused it, i must have carried some 80 digits in my head as temporaries. And, if you figure out how much addition and subtraction is done in the multiplies and divides, it turns out to be 6 digit adds per second. And i still hadn't stressed anything. If i needed yet another 20 digit abacus, it appeared out of nowhere, and stayed readable for as long as i needed it.

    So a little thing like converting octal to decimal in my head was nothing. That's just a little division.

    Sadly, i didn't practice. Word on the street is that if you continue to practice, you can retain the skill forever. But my visual memory isn't what it used to be, and i only get hints of how it was. I've made a few attempts to get it back, but my estimate is that for three months i worked on this 3 hours a day. I don't have infinite patience anymore either. It isn't happening in 20 minutes a day.

    Was i the best in the world at this? No, and by quite a bit. Can anyone learn to perform 10 digit mental arithmetic? I think not, but maybe half can. Can anyone learn to use the physical soroban? Yes. Will everyone benefit from doing this? Absolutely. For one thing, a big part of fear of math is fear of failure. So a reliable technique for doing arithmetic can erase fear of math.

    ReplyDelete
  2. Ah those Switch Registers!
    We, Field Service types would fly the fingers on it, figuring in our heads and writing on the spot the little "Mickey Mouse" programs that would help to diagnose the beast.
    Unfortunatly the switch registers disappeared after 1977. They were even removed from the old 11/70's to be replaced by Remote consoles for Remote diagnostics.

    Of course, the first step was to replace the tiny light bulbs that had failed since the last maintenance. Using a computer console with dead light bulbs could cause strange effects. (Later we received special LEDS to replace these old bulbs.)

    Not all PDP's had a bootstrap. You could boot a RK05 on a PDP11 by entering the following instructions:
    000000 Load address
    012737 Deposit = 01 Move Instruction
    27 Source = next address
    37 Destination = next add
    000005 Read command for the disk controller
    777404 Control and command register
    000001 Wait
    After starting at 0 the contents of the first blocks would fillup the memory.
    After a second start at address zero, the PDP would boot normally.

    PDP11's were a piece of cake. Much more funnier, booting a PDP08 from a TTY
    (a paper-tape reader on a TeleType)
    First, you manually load a program of about 40 instructions...
    Then: you check it better twice as any single mistake in your program would surely destroy your work.
    You then insert a special tape called an Absolute Loader on the paper tape reader and you start!

    If you didn't make any mistake, the absolute loader would be in memory, a slightly better program than the one you manually entered (better error control).

    Now, you could insert the real stand alone-program in the reader, start the PDP again and wait about twenty minutes until the 16K (12bits words) program was loaded, provided no parity error occured in the process...

    But of course, once the program was loaded, most of the owners would never need to reload it again. It would stay forever in those pretty core memories....

    Yes the world changes, but the fun will never end.

    Raymond Pigeon

    ReplyDelete
  3. The programming bug bit me when I was in high school, and I haven't stopped working with computers since. Alas, the first computer wasn't from DEC, but was an IBM 1620, a discrete transistor machine, which is likely outclassed by a microwave oven these days. Using the computer required a trip to a local junior college for a weekend lab—back in the late 1960s. The language was a subset of FORTRAN II with programs punched up on 026 keypunch machines.

    In the fall of 1970, I started using the massive IBM 360/91 at UCLA, with gosh, 4 megabytes of core memory. Languages includes FORTRAN IV, PL/I (and various versions), APL, MIXAL, LISP, ALGOL (to which I was partial), and others. I saw a few PDP 8s on campus, but never used one.

    My DIGITAL life began with employment in the mid 1970s, on a PDP 11/34 with RSTS/E and notorious Ampex 80 megabyte, removable hard drives (DM980). (Those nasty DM980s are worth a rant of their own. The washing machine-sized drives would rattle their own circuit boards lose as they ran. ) From there, I worked on a variety of 11s, VAXes, Alphas and now Itaniums. The OSes were RSTS, RSX, RT11. I never used a Unix on an 11, ironic since Unix learned to walk on the 11.

    The languages were BASIC, Macro, BASIC PLUS, C, C++, Pascal, an ounce of BLISS, and lots of DCL variations. Work today is in C++ on Alphas and Itaniums. I access these machines from Apple platforms (still G4-based). Sadly, nothing compares to a good LK keyboard.

    A good 11 has my favorite instruction set, but the memory space limitation is stone age. I had always wished this machine were based on a 20 bit word, 10 bit byte and 5 bit nibble. Well, I've wished that of all computers (going on to 40 and 80 bits these days), but this increase was much more significant on the 11. On the 11 it moves us from 64K address space to 1M—before resorting to memory mapping. You can always say, with 1M you'd want 20, but that first increase is very important with respect to what you can do in the pre-GUI, character-based world.

    Though I like the various OSes I used on the 11s and their descendants, and prefer VMS to Unix hands down, I have never been particularly enamored by any. RT11 maybe the cutest: dot prompt, foreground/background tasks, pip to copy programs—so what inspired CPM? And while we're at it, the Motorol 68K chip set seemed a bit like a big-endian version of the 11 complete with instructions that its arguments. But, as we know with Intel, it pays to copy the best.

    Yet, I am not so nostalgic to want to go back to 11s or VAXes. My interests lie ahead, and in seeing that VMS moves forward. There in seems to be the rub. Most users are simply concerned that VMS will continue to exist. That takes the spark and spunk out of moving it ahead.

    ReplyDelete
  4. It's nice to see another PDP-11 person out there. I'm an avid PDP collector and preservationist; I have perhaps twenty PDP-11s at home, including a PDP-11/70. (see my web pages at http://www.neurotica.com/) I started out on a PDP-11/34a in the early 1980s and quickly moved to a PDP-11/73.

    These days I write software on big Sun UltraSPARC machines with dozens of processors and hundreds of gigabytes of memory. Times certainly have changed, but I still keep my PDPs around and have a great deal of fun with them...and I expect I always will.

    -Dave McGuire, mcguire@neurotica.com

    ReplyDelete

Since anyone can comment, all responses are moderated.