Wednesday, August 08, 2007

 

My first computer : 1974, DEC PDP11/40

The first computer I worked with was a Digital Equipment Corporation (DEC) PDP 11/40.

I was send off on a 2 week course to learn all about it at DEC offices in Reading, England (pron. 'Redding').

PDP 11 computers had no screen. They had a line printer which included a keyboard and paper tape output. The computer also had paper tape reader and punch. You could buy an expensive one line display if necessary. The computer electronics were mounted on a 'wire-wrap' board.

This computer had a magnetic core memory. Each little ferrite ring had 3 wires through it in a matrix. Two were the x and y address and one was used to read or reset all the little magnets to the same state (clear the memory). Each ring stored 1 bit. If you bumped one of these computers, some broken ferrite rings would drop out, and the very expensive memory was useless.


The read process put currents through the X and Y wires, and a pulse through the read wire. If the ferrite ring was magnetised, it would generate a small pulse into the wires, (1), or if not, (0). Another pulse was used to set it back to whatever state it was in.

It was a 16-bit computer, so 4K of memory required 256 rows of 16 ferrite rings, making 4096 bits.

Silicon memory chips and read-only memory had not been invented when the PDP 11 series computers came on the market, so how to make it go?



The startup program was called the 'bootstrap loader', and was about 30 instructions that caused the computer to initialise and look to the paper tape reader for the next job. There were 16 keys across the front panel, plus more keys for step through, reset and load. The bootstrap loader was keyed in using Octal (numbers to base 8). The keys were in groups of 3, representing 1,2,4. To load 5 you would lift 1 and 4. To load 6 you would lift 2 and 4, and so on. A typical instruction line was like 0 2 7 1 3 5. Each of those represents 3 keys except the first one which was one key. 027135 would result in the 16 bits being set to 0,010,111,100,110,101. Get it? Easy eh?

When the start button was hit, the computer would run those few lines of code and expect a paper tape to be inserted. The paper tape was about 2cm across and full of holes representing data bits, which would load the main program. 10 or 20 metres of paper tape would end up on the floor.



To write a program, you typed in all the instructions, moving data between the 8 registers and memory locations. A device like a paper tape reader or writer was referred to simply as a memory location.

Instructions looked like this:
CLR R2 (clear register 2)
MOV A,B (move from one place to another)
ADD A,B (add)
FMUL A,B (floating point multiplication)
BEQ X (branch if equal to X where X is an offset, and takes the program to another command)

Here is a running example:
        .TITLE  HELLO WORLD
.MCALL .TTYOUT,.EXIT
HELLO:: MOV #MSG,R1 ;STARTING ADDRESS OF STRING
1$: MOVB (R1)+,R0 ;FETCH NEXT CHARACTER
BEQ DONE ;IF ZERO, EXIT LOOP
.TTYOUT ;OTHERWISE PRINT IT
BR 1$ ;REPEAT LOOP
DONE: .EXIT

MSG: .ASCIZ /Hello, world!/

.END HELLO

Interrupts were available, to caused the program to jump to another section. Your paper tape program would be loaded into a linker, that output an intermediate tape for the compiler, which output the final program tape. Time to run and debug.

What did we use this for? Cooper-Bessemer and British Gas bought the computer for a joint development project at Cambridge, England, where the computer would take over all functions of a relay control panel, and start up and run a 15,000 horsepower Rolls-Royce Avon gas turbine driving a natural gas compressor. A programmer (not me) wrote the software to check oil pressures, start the oil pumps and starter motor, check temperatures and speeds as well as a fuel control calculation loop to control the gas turbine. I designed optically isolated input and output electronics to isolate the computer from any spikes from the external equipment, and the interface panel that allowed the gas turbine to be driven by either the relay panel or the computer. It worked!

Wikipedia has a good page on this computer.

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?