[GTALUG] ancient computer history

D. Hugh Redelmeier hugh at mimosa.com
Tue Sep 18 19:11:50 EDT 2018


| From: Stewart Russell via talk <talk at gtalug.org>

| On Tue, Sep 18, 2018, 10:48 James Knott via talk, <talk at gtalug.org> wrote:
| 
| >  I also used to maintain a PDP-8i
| > computer.

I used PDP-8s and PDP-8i computers that I found access to at the U of
T in 1968 and 1969 (when I was sneaking in).  Let me be clear: as far
as I know, I wasn't breaking any rules because nobody thought to make
such rules.  It did mean that I was careful not to get in anyone's
way.  I actually wrote some code for some of the real users.

The PDP-8s was meant to transcribe paper tape to magnetic tape.  I
think it was for bubble-chamber experiments.  I don't think I ever saw
any users for it.

It had no disk drive and I didn't know how to use the tape drive.

If the physicists knew more about the PDP-8s, they should have been 
clamouring for access to run FOCAL-8 (kind of like BASIC) as a 
programmable calculator.  I don't think they had access to an interactive 
computer in those days.

The PDP-8i was meant to be part of a hybrid computer (analogue +
digital).  I never used the analogue part (what's an op amp?).

You can see that these were the embedded computers of the day.  There
wasn't a cheaper or more convenient (no airconditioning required) thing
that we'd call a computer.

| >   When browsing through the programming manual, I found DEC
| > actually recommending self modifying code, to get around the limitations
| > of the instruction set!

One of the best things about the PDP-8 were the comprehensive manuals
(one for each year).  I still have them somewhere.  They took you from
zero to programming for the real machine, all in a trade paperback
sized book.  They were widely available.

The PDP-8's instruction set was extremely simple.  I still remember
much of it.

| The basic PDP-8 didn't have a hardware stack, so you had to prepare
| subroutines by modifying the code's return address before you called it.

Close, but not exactly.

	JSR	X
would put the address of the next instruction after the TSR into
location X and then jump to X + 1, the next word.  An address fits in
a single 12-bit word.

The subroutine would return via
	JMP I X
That would jump to the address contained in X.

So all the book-keeping was done in that simple pair of instructions.

The normal way of passing a parameter was the accumulator.  Beyond
that, you'd put addresses after the call instruction.  That required a
bit of toing and froing.  Global variables were used heavily instead.

Recursion and re-entrancy?  Not so easy.  But remember the quote I posted 
about recursion.  It was still avant-garde in the 1960s.

Many earlier "big" computers had similar call instructions.  The first
calling sequence that I learned of that left the return address in a
general register was on the IBM System/360.  And the conventional ABI
didn't include a stack.  The PDP-10 had clean (new: PUSHJ/POPJ) and
dirty (backward compatible: JSR/JRST) linkage instructions.

Hardware was under control of oligopolies.  This held innovation back.
DEC was an insurgent.

Burroughs' architectures were brilliant and odd but didn't get much
traction.

| I'm building a PDP-8 compatible right now, based on the Harris HD-6120
| "PDP-8 on a chip" used in the DECMate desktops. I'd best brush up my octal,
| as it's a 12-bit machine.

Three hex digits, no?

But yes, the PDP-8 really is most natural in octal.  The primary
opcode is the first octal digit.


More information about the talk mailing list