RC2014 Orton 3C

The RC2014 Orton 3C is a 4MHz Z80 based computer with 32k RAM, Serial I/O at 9600 baud and programmed with a traditional toggle switch & LED front panel. Whilst the simplicity of a 3 chip computer. This is all achieved with just 3 chips; a Z80 CPU, 32k SRAM and a 74HCT04 hex inverter.

The design is right on the border of simplicity and genius, and is the work of the late Karen Orton, after who the RC2014 Orton 3C is named. Karen was a regular contributor to the vintage-radio.net forum and had a lot of designs published on there. Whilst many of them were clever designs based around the SP/MP processor, there were some Z80 designs too. Including this Minimal Z80 Computer, which the RC2014 Orton 3C is directly based on. Sadly Karen passed away in 2019 from cancer. Tim Gilbert was left with many of her creations, and with the job of keeping her memory alive – which is how I first discovered this wonderful machine. It is with Tims blessing that I am recreating it, and for every kit sold, £5 will be donated to Cancer Research UK.

Buy RC2014 Kits on z80kits.com

Don’t let the simplicity of a 3 chip computer deceive you in to thinking this is a beginners kit. It is very much the opposite. Firstly, there is no ROM, no operating system, no storage and no UART. To get it to do anything you have to toggle the code in through the front panel switches. Code should be entered from address 0x0000 and run from there.

To keep with the modular nature of the RC2014, the original design has been split out in to two PCBs. The first has all the LEDs and switches, as well as the 4MHz clock, resistors and all the clever stuff. The other PCB contains the CPU and the RAM. Both of these boards are connected via the RC2014 Bus. Ideally for this design the RC2014 Bus would be 41 pins. However, to keep things simple, either a 40+10 Enhanced Bus can be used, or a 40 pin Standard Bus plus a flying jumper cable for the /HALT LED. (see below for more on the /HALT LED)

The computer contains 32k of SRAM. This is connected to address lines A0 – A14 and appears twice in the address space; From 0x0000 – 0x7FFF and also from 0x8000 – 0xFFFF. If A15 is low, then the memory is read from 0x0000 – 0x7FFF. But if A15 is high, them memory is read from 0x8000 – 0xFFFF

As mentioned earlier, the RC2014 Orton 3C can do serial at 9600 baud. There is no UART. There isn’t even anything mapped to an I/O port. This possibly points toward the genius of this design. If the code jumps between the lower and upper mapping this will toggle the A15 line. This is fed via a transistor and becomes the Tx pin for the serial.

The /INT pin, again, via a transistor, is the Rx for the serial. By turning interrupts on and off, checking for status in between, it is possible to read incoming data. Karen has written a Serial Echo program that can be toggled in as a proof of concept. When running, the RC2014 Orton 3C will listen for incoming 9600 baud serial over the FTDI port and echo it back out again. This can be developed in to a simple boot-loader that in itself could load a more advanced loader for things like Microsoft BASIC or other complex programs. Of course, given the 3 chip limitation, it isn’t capable of hardware flow control , so pasting in data will drop a lot of characters, but it can easily keep up with human typing.

One of the other points to note about this design is the use of high power LEDs which use a trivially small amount of current to light. This puts almost no load on the CPU, and are still easily visible, even in a well lit room. Karen used 3mm white LEDs, however, this kit is supplied with 5mm green LEDs which work amazingly well and give a really nice aesthetic to the look of the kit.

Programming

Data is entered through the front panel switches and read from the LEDs. The top row of LEDs represent the 8 data bits in the current memory location. The switches below are used to set the data in the current memory location. The 8 LEDs below that represent the current memory location A0 – A7. Whilst the RC2014 Orton 3C is capable of addressing the entire Z80 memory space, the endurance of most users means that the first 256 bytes is normally sufficient. Above that you will either have to keep track of the higher address lines, or use the breakout connections for addresses A8-A15 to add a resistor and LED to each one.

At the bottom are 2 LEDs. The first to indicate power, and the other to indicate that the Z80 is in the /HALT state. The 4 switches there are used to control the computer. The most important of these is the Cycle switch (⟳). This momentary toggle switch is the action button, and will cause an action based on the other switches.

If the other 3 lower switches are up then pushing the Cycle switch will send a single pulse to take the Z80 out of /WAIT and trick it in to executing a NOP instruction, and therefore incrementing the Program Counter. This is how you cycle through memory one instruction at a time. The Data LEDs will show the current value of the RAM at the memory location shown on the Address LEDs.

If only the Reset switch is down then pushing the Cycle switch will issue a /RESET to the Z80, putting the Program Counter back to 0x0000. This will need to be done (often twice) when the computer is first powered up, and whenever you want to go back to either check your code or start to run it.

If only the Write switch is down then pushing the Cycle switch will deposit whatever data is set on the Data switches in to memory at the location indicated by the Address LEDs. The Data LEDs will change to reflect their new contents. Note that to move on to program the next address you will need to take it out of Write Mode and then Cycle to advance to the next memory location.

In order to run a program you will first need to set the Reset switch down and push the Cycle switch to reset the Program Counter to 0x0000. Then whilst holding the Cycle button down, set the Run button down. When you release the Cycle button your program will run.

There are two ways to stop your program. The first way is to flip the Run switch again. This will often result in the data in address 0x0000 being corrupted. The better way, at least for test programs, is to add a HALT command (0x76) to the end of the program. The Halt LED will illuminate when this has been executed. You can now flip the Run switch without any corruption. [Note that in an ideal world, you will write perfect code and it will execute the HALT command when complete, thus lighting the LED. Sometimes, if your code doesn’t run perfectly, it might not get to the HALT command, and won’t stop cleanly. In either scenario, after a couple of seconds you are probably going to be flipping the Run switch anyway. So whilst the LED is nice confirmation that things have ended gracefully, it is not critical to connect the jumper cable]

[Editors note. All of this reads like it it pretty complicated. For the first couple of programs you toggle in, it probably will be. However, it becomes very intuitive and almost second nature]

Software

A selection of introductory programs, including Karens original Serial Echo program can be found on Codeberg here https://codeberg.org/RC2014/RC2014_Orton_3C_Code

Expandability

Karens design for a minimal Z80 computer is absolutely brilliant, but it is somewhat limiting. The roller-coaster of joy toggling in your first program, to drudgery toggling in your 20th program, to second nature toggling in your 50th program can eventually run dry, particularly with such limited input and output options. For the purists, you may wish to stop reading here. However, this is where the adventure begins for a lot of people.

The CPU/RAM Module includes 3 diodes that are not part of Karens original design. Two of these form a NOR gate [This is not a chip, this keeping the 3 Chip fans happy] which allows an I/O module to be used. In order to use additional modules with this kit, however, some kind of backplane is needed. The Backplane 5 is ideal for this.

The Front Panel I/O Module (equivalent to the Digital I/O Module) is an excellent addition to this computer. Whist the was originally designed to use red LEDs with 1k resistors, it is available with matching green LEDs and 22k resistors. The Power LED is a duplicate of the Power LED on the RC2014 Orton 3C Front Panel, and the Reset switch will provide an instant reset instead of the two-switch combo move.

A laser cut cherry veneered plywood front panel is available to fit the Blue Box enclosure, and is perfect for housing the RC2014 Orton 3C, Backplane 5 and Front Panel I/O Module. Note that this panel is supplied without any finish applied, so it is recommended that you use wax, oil, shellac or varnish according to your preferences.

Possibly the biggest deviation from Karens design would be the 16k ROM Module. In keeping with the spirit of the original machine, things are kept as simple as possible, and the computer still needs instructions to be toggled in for it to do anything. The ROM Module uses address line A14 to activate it, in conjunction with a jumper and diode on the CPU/ROM Module that deactivates the RAM when A14 is active. This means that the ROM appears in the memory map from 0x4000 – 0x7FFF and also a copy in 0xC000 – 0xFFFF. This makes it perfect for small “helper” routines to be stored in ROM which your toggled in program in RAM can call.

Bill Of Materials

1 Orton 3C FP PCB
1 74HCT04
1 40 pin header
1 10 pin header
1 6 pin header
1 2 pin header
1 1 pin RA header
1 Jumper
1 14 pin narrow DIL socket
9 MTS-102 Toggle Switch
2 MTS-202 Toggle Switch
1 MTS-112 Momentary Switch
18 5mm Green LED high efficiency
18 5mm LED Bezel Black
1 2N7000
1 BC182L
2 10pf ceramic cap
2 22pf ceramic cap
1 47pf ceramic cap
1 100nf
10 1N4148
1 BAT43
8 4k7 resistor
2 1k resistor
1 1M resistor
5 3k3 resistor
6 10k resistor
1 1k5 resistor
19 22k resistor
1 M3 Nylon Nut
1 M3 Nylon Spacer
4 M3 Nylon 6mm
2 M3 Nylon Hex Spacer
1 M3 Nylon 20mm
1 4MHz Xtal

1 Orton 3C CPU-RAM PCB
1 40 pin wide DIL socket
1 28 pin wide DIL socket
1 40 Way SIL Socket
1 10 Way SIL Socket
1 40 pin RA header
1 1 pin RA header
1 Dupont cable 10cm
2 100nf
3 1N4148
1 10k resistor
1 2 pin header
1 Jumper
1 62256 RAM
1 Z80 CPU