[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