
| From: Stewart Russell via talk <talk@gtalug.org> | On Tue, Sep 18, 2018, 10:48 James Knott via talk, <talk@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.