System/1 Origins and Background

The ambition to design and build a CPU from scratch probably traces its way back to my first year reading Computer Science at the University of Bristol. After the first semester's programming project — basically something to keep those of us with programming experience busy whilst those without were given introductory lessons — the second semester brought two parallel modules; an introduction to software design, and an introduction to computer architecture.

The latter, taught (for the first half, at least) by the inspiring and sadly missed Barry Thomas, started with 'this is silicon, this is what we do to it to make a transistor, and this is how we build the basic logic gates from transistors' and went on from there to describe fundamental logic building blocks such as latches, flip-flops, adders, decoders and multiplexers, and then the main nuts and bolts of a computer design in the registers, ALU, and RAM. Once we had simple hardware under our collective belt, the course covered some basic instruction sets and had us write corresponding assemblers and emulators.

Unfortunately I found the assembler and emulator for the first simple architecture we were given fairly straightforward, and soon started messing around with the logic emulator software we had been using in labs instead. Fairly soon I ended up with a 'hardware' implementation of the emulator half of the assignment, based around a microcoded execution unit, which didn't make me hugely popular with some fellow students!

Fairly soon the workload on the CS course picked up, and apart from a few embarrassingly cack-handed experiments with 74-series chips and LEDs on a breadboard I soon found I had less time to mess around with even emulated hardware, especially after graduation lead me into the exciting world of working for a living. After a while, however, I started pondering whether I could actually complete a physical design; an idea fuelled by reading tales from the development of the original Macintosh, which had me briefly researching building a M68k-based single-board computer — but using an off-the-shelf microprocessor just to end up with a 'modern antique' seemed to be cheating somewhat.

In around 2006 or 2007 I picked up a PICkit 1 development kit cheaply and started playing with it, but didn't have any particular use for it until it suddenly occurred to me that a small microcontroller could be used to drive some shift registers (to provide a wider address and data bus than the 14-pin PIC I had on hand could support on its own pins) and pretend to be the CPU I'd emulated back at Bristol. Shortly afterwards the idea of implementing an entire CPU that processed data bit-serially rather than in parallel occurred to me, and the design of System/1 started to take shape in my head...

It took a few more years before I decided to actually try building the machine, and a few more years again before I started putting enough of my ideas down on paper to get an idea for how feasible it would be, but finally (having been inspired by Dave Jones's EEVblog to get back into hobby electronics in 2009, for the first time since my early teens) I've made a start.