My RC2014 - Z80 Homebrew Computers

Introduction

This page describes my experience with RC2014external link 8-bit computer, based on famous Zilogexternal link Z80 processor.

Delivered

I ordered RC2014 Pro kit on Tindie external link and received bunch of PCB's and components ...

Assembling

... then I spent two afternoons and nights with soldering. Everything is perfectly documented and if you do assembling and soldering closely it works with any troubleshoting.

Assembling

RC2014 Pro consist from 7 boards:

Aditional modules

Digital I/O board

There is 'must have' module: Digital I/Oexternal link board, that contains 8 buttons and 8 LED's. It's perfect for learning basic I/O operations.

Z80 PIO, Z80 CTC

I have three SC103external link Z80 PIO modules and one SC102external link with Z80 CTC from Small Computer Centralexternal link.

PIO's are connected to LED's using ULN2803A Darlingtons. It's perfect for learning how shift and rotation instructions worksexternal link.

I wrote the program that periodically fires interrupts from Z80 CTC. This program fires two independent interrupt routines - from channels #0 🡺 #1 and #2 🡺 #3. Those routines use RRCexternal link / RLCexternal link / RRexternal link / RLexternal link instructions to make rotation effectsexternal link. For correct function is necessary to connect IEO signal (pin #7) on SIO/2 module to bus pin #38 and put jumper on CTC board that connect this line to IEI pin on CTC. This establishes Interrupt Daisy-Chainexternal link (page #9).

WiFi module

Another interesting toy is WiFi moduleexternal link. It's connected to channel B of SIO/2 module through enhanced bus. It allows connect to second channel remotely using Telnet session.

This videoexternal link shows controlling two power relays over WiFi using JAVA Telnet client. Here is my program that's testing buttons on I/O board and sends commands to SIO channel B, which is connected to WiFi module. On another PC is running Java telnet client, that's receiving those commands and switching ON/OFF my two power relays in my IOT solution. Also is possible read IOT sensors values and display it back on RC2014 console.

IOT sensors values

Z80 DMA

I built Z80 DMA module on Prototype PCBexternal link.

For testing DMA I wrote program that sends programming sequence to Write Registers and starts memory-to-memory transfer.

I have also tested memory-to-I/O transfer by sending ASCII arts from DMA 🡺 SIO/2 🡺 WiFi modules to remote telnet session. Video here.

SC108 – Z80 CPU ROM, and RAM module

When I used up all the BackPlane slots, I decided to buy SC108external link module. I removed original CPU, ROM and RAM modules and gained two free slots.

SC108 – Z80 CPU ROM, and RAM module

Running CP/M 2.2

I use puttyexternal link for connecting to CP/M terminal. On images you can see session setting.

MBASIC

On this archiveexternal link is possible to download Microsoft BASIC Interpreter v5.21 for CP/M. To load any COM file is necessary use Binary to CP/M Packageexternal link It convert MBASIC.COM file to text and then it's possible to paste it to putty terminal (by mouse Right-click over window) and store file to CP/M disc using download.com command.

Developing software in assembler

For developing software for RC2014 I use different ways. I try to describe it. I've tried three assemblers:

Editing ASM, AS and C sources

For editing sources I use Notepad++external link on PC or ZDE 1.6 editorexternal link on CP/M.

Developing

TASM Development environment

In source directory I have following files:

Compiling: I run script like this: tasm -t80 -b hello.asm ./BIN/hello.com ./LST/hello.lst. If everything is OK, I can see result and compiled file is in BIN directory:

Compiling

ZAS Development environment

Transfering files from PC to RC2014

To store binary file to RC2014 using terminal, it needs convert it to text like this:

Converting

Open packaged file. You can see, that text contains three parts:

I usually modify first line like A:DOWNLOAD.COM X:filename.ext (where X: is a target drive), copy file to clipboard (Ctrl+A Ctrl+V) and make right mouse click on putty terminal. DOWNLOAD.COM get file content from terminal and stores it to disc. It's work like a charm.

HI-TECH C Compiler 3.09 for CP/M

On this pageexternal link is info about C compiler for CP/M.

Building and running AES-256 demo

In subdirectory examples/aes256 there is very interesting demo. I compiled it by following command:

I:c -V H:demo.c H:aes256.c

And here is screenshot that shows torturing Z80 CPU with this demanding computation:

Running AES256 demo
Sending file to remote PC

HI-TECH C Compiler 3.09 with emulator

On this GIT repositoryexternal link is HI-TECH-C-V3.09 with CP/M emulator. So it's easy to compile C sources on PC and then run COM's on emulator. As usually I use Windows packagerexternal link by Grant Searle to move COM's to my RC2014.

Compiling C source on PC

Using inline assembler in C sources

I have simple C source that mix assembler code using #asm and #endasm compiler directives.

It can be compiled on PC using emulator like cpm_orig c -V hello.c, but can't be run, because there are OUT instructions - unsuported by emulator.

On native CP/M (like on RC2014) it can be compiled and it runsexternal link without problems: I:c -V H:hello.c.

Borland Turbo Pascal

On this archiveexternal link is possible download Borland Turbo Pascal 3.01a external link for CP/M-80. Installation is same as MBASIC, I used FilePackage and modified text file to have pascal in drive P:.

Turbo editor

Borland Turbo Modula

On this archiveexternal link is possible download Borland Turbo Modula-2external link for CP/M-80. Installation is same as MBASIC, I used FilePackage and modified text file to have modula in drive M:.

Turbo Modula-2

Games

On this pageexternal link is possible to download games for CP/M. For CatChum (like "Pac-Man") it's necessary to slow down CPU speed to not be eaten in one second.

Playing Catchum game

Conclusion

RC2014 is amazing project. I had a lot of fun while building it and exploring possibilities of retrocomputing. That brought me back 30 years to 8 bit era when I built my first computer.

RC2014 Pro fully boarded

Finished RC2014 Pro. There is: Clock + SC108 [CPU-RAM-ROM] + DMA + CF + SIO + 3*PIO + CTC + WiFi + I/O.

RC2014 Pro fully boarded

RC2014 - Little Brother

Later I decided to build second small one - on BackPlane-5external link, CPUexternal link, CFexternal link, 512k ROM 512k RAMexternal link RomWBWexternal link, SIO/2external link, Digital IOexternal link. CPU module is gained from RC2014 Pro, where is SC108 module now.

RC2014 Little Brother

Links

Original Zilog documents

Mario Blunks tutorial set

Ken Shirriff's blog

This blog contains interesting informations about Z80 CPU internals.

Learning algorithms

My own things

Valid XHTML 1.0!