Good Minicomputer Architectures for Study

Over in the parent thread @EdS and others suggested that there were probably no specifically targeted textbooks for the early micro / home computing pioneers like Gary Kildall to study the way later generations would study (e.g.) Tannenbaum’s OS:DI. Instead they would have drawn from “across the tracks,” as it were, from the parallel world of minicomputers and big iron.

I grew up in the '80s playing a lot of ATARI and NES games, so it wasn’t a shock when I discovered that people are still doing cool things with 8-bit processors. I have basically no exposure to the minicomputer and mainframe worlds, though, so I’m wondering where to turn my attention next.

I’m thinking this should depend on two things:

First, the quality of available literature; it should focus on low-level system programming without relying on pre-supplied libraries, be well-written, and so on.

Second, the design of the system; It should be relatively elegant (I’ve read the Mythical Man Month; I probably don’t want to study OS/360 except as a cautionary tale…:wink: ), and the concepts should be relatively portable or general (I mean that, to pick a silly example, studying protected mode task switching on the 386 probably wouldn’t contribute much to designing an 8-bit BIOS).

@elb already suggested the PDP-11 and recommended a book that, as he put it: “starts from the premise that you have a PDP-11 and an assembler and some work to do, and walks through bespoke assembly language implementations of interesting computations on raw hardware.” That was such a perfect description of the kind of literature I was hoping to find that I wanted to quote it again.

I know that the PDP-11 has memory protection, which my CoCo doesn’t (it’s a CoCo 2). I know many 8-bit CPUs don’t support re-entrant code, but the 6809 I have does do that. I’m having a little trouble putting this clearly, but I think what I want to ask is, what sort of useful mappings should I look for from minicomputer to micro, and what sort of dangerous ones do I need to watch out for?

1 Like

The Coco 2, really needs a lot of work to develop or write software on.
I tried once. OS/9 is needed for anything but BASIC in ROM.
Micro-computers (PDP 8/ PDP 1) tended to be designed for simple programs, like controling a machine tool, or running BASIC, with paper tape as the main I/O device,
The PDP 11, is more a main frame design, with real operating systems.
Both are good architectures to study, with the PDP 8 more likey to be found as real
hardware. I have a 20 bit design that is Micro-computer Archtecture.
20 bits is a good compromize for word length, and hardware complexity
and PCB board size.
BCPL is virtual machine is also a good study,as what NOT to do.
All machines at this time did not have ample addressing space, or RAM
to provide what main-frame’s could do, with cross assemblers and compilers.

1 Like

This might be true, but beware - the PDP-11 is a large family, and it evolved quite a bit from the initial offerings. So you might have to pick one particular model or configuration, to make clear statements. I’m not an expert though (just a distant admirer.)

I know you can run up a PDP-11 (of some kind) using SIMH, and choose to run baremetal programs or one of a number of operating systems. You could very likely work through a book with SIMH beside you, in much the same way someone in the 70s with a PDP-11 might be able to.

My suspicion is that the PDP-8 family might be a closer match to the various 8 bit micros, although there will not be a direct equivalence. And again, SIMH and a variety of operating systems await you.

Edit: another distinction is whether you are developing on the machine itself, or on a more powerful machine. Even back in the day, cross-development was a possibility. Ben implies, correctly I think, that native development on an 8 bit micro is quite uncomfortable. However, it is perfectly possible - almost every game, language and utility was written that way. (Not all, of course. Let’s say most.)

1 Like

My first-hand experience with real PDP-8 hardware ended nearly 40 years ago, but I have dabbled with emulators in this century, and I can testify that while the operating systems may be somewhat similar in functionality, the PDP-8’s assembly language is brutally primitive. Forget about built-in support for re-entrancy, since it doesn’t even have built-in support for a system stack!

1 Like

That is a good point. The cartridge I have that provides floppy emulation can be configured to let the CPU read directly from compact flash, as though it were a ROM. My current tentative plan is to do the first steps in hand-assembled machine language that I can write to the CF card from a modern machine. This might be excruciating, but I want to do at least a bit of it, partly because of the historical precedent, and also just to get a better feel for the 6809. I’ve done some hand-assembling for the 8086 using DOS DEBUG, and if nothing else it quickly burns out the inclination to think of assembly language as logically symbolic as opposed to mechanical. :slight_smile:

1 Like

You absolutely can! It’s relatively easy to do, as well, although SIMH has a bit of a learning curve.

In fact, for microcomputers, it was very common! I know that Microsoft BASIC and MS-DOS were both developed under TOPS-20 on a PDP-10. I don’t know about CP/M; I know that it was written in PL/M and 8080 assembler, but I don’t know where the development was hosted.

1 Like

Hm. As the worlds 2nd last BCPL person…

BCPL is a programming language. It’s a RISC version of C (at least that’s how I described it recently). The output of the compiler has evolved over the years but it’s always been targetted to a virtual machine - OCODE and INTCODE were early output formats, SIAL is a format designed to be easy for native machine translation and Cintcode (Compact INTermediate Code) is the current default - which I use. It’s a very compact bytecode.

And there is one CPU (ok, it’s a microprocessor rather than a “mini”) which has an interesting parallel to Cintcode in it’s instruction set and that’s the Inmos Transputer. I suspect this is no coincidence as when you start to delve into the history, you start to see familiar names appearing…



Fig Forth threaded code, is what I consider a good virtual machine. Intcode while clever
is a bit messy with address generation, and I need to think how to encode that on my machine.