A real, usable computer should have an LED, a button, a terminal and some mass storage. A good, old-style computer should also provide for hardware-level debugging – single-stepping through bus cycles, memory and I/O display and editing and memory loading independently from CPU (remember those panels with lamps and switches?).

SDC_One is a software-defined computer based on a real, classic CPU. Other than the CPU, the rest of SDC_One – memory, peripherals and glue logic, is implemented with a single Cortex-M4 based microcontroller. The goal of the project was to build a computer which could be used for teaching the basics of computer’s operation, hence it provides extensive hardware-level monitoring by single-stepping through bus transfers and instructions, hardware breakpoints, data injection during bus transfers, etc. The peripheral set implemented in SDC_One, including a simple GPIO, console interface and mass storage (diskette emulated in the MCU’s Flash) makes it possible to run a real vintage OS, like CP/M.

The computer connects to a PC with a USB cable, providing the power supply and presenting two virtual serial ports to the PC; one is used as hardware monitor interface, the other as target computer’s console. A .HEX file may be loaded to the target’s memory by dropping it onto the hardware monitor terminal window.

SDC_One consists of an STM Nucleo-L476 board and the daughterboard sitting on top of it, hosting the target CPU. The daughterboard contains only the CPU, an USB connector and some passive components, so the equivalent computer may be easily built with a breadboard instead of a daughterboard PCB.

Currently there are five variants of SDC_One, using 8085, Z80CPU, MC68008, 65C02 or W65C815 and 8080. The target has at least 64 KiB RAM and 64 KiB of ROM and achieves the execution speed of about 400000 bus transfers per second. Z80 and 8085 variants run CPM/80, and MC68008 – CP/M-68k.

MC68008 and WDC68C816 versions with STM32L476 have 80 KiB RAM and STM32L496 version has 256 KiB RAM.