Z80 Mini System

10/11/2013

The Z80 based mini-system board

The board has 32K of EPROM, 32K of RAM and runs at 4MHZIt has 3 8bit General I/O ports which includes a bit-banged serial port. With the addition of a USB-TTL serial adapter It can communicate to my PC. Using a terminal application on the PC I'm able to modify & view memory, list (dis-assemble) code and assemble code.
With the help of a couple of PC command line utilities I'm able to upload and download code to/from the board in the form of Intel hex files.
It even supports a tiny version of MS BASIC.

History:

 The project began on 10/11/2013 and I had an acceptable working 1.0 version on 11/22/2013

 Here's another example of a project that came into being simply because we had some parts that "might" make it work.  Having completed my EPROM programmer a few days before, I started wiring the board on 4pm Friday afternoon and had it blinking an LED at 2:30pm the next day after correcting only about 4 or 5 wiring errors.
By 10/13 I had a working serial interface running at 1200 baud which later was increased to 9600.

Resources and Tools:

Thankfully the Z80 was quite a popular CPU used in early TANDY computers, TI calculators and the 1st Nintendo Game Boy.
This made finding resources online easy. (see  http://www.z80.info )

I found Thomas N. Anderson's TASM assembler worked quite well.  Once a reliable serial interface was developed I could work within a Z80 Emulator ZEMU - Z80 Emulator by Joe Moore.  This freed me from needing to burn an EPROM with each code iteration. 

Once the HEX file upload feature was working I could also use SDCC 
(see http://sourceforge.net/apps/trac/sdcc) to compile  C source code that could be uploaded and run on the system.

6/2023 Update
Added a hardwired LED and speaker to this board (see updated schematic link below) and updated the monitor software to support them. Now there's a spiffy red LED that blinks every second while the system is waiting for input and a short beep is emitted from the speaker after reset.
Routines for blinking and beeping the new hardware are in the updated ROM code.
Also added a LINUX versions of the .hex file transfer utility.
For assembling Z80 code on my linux box I'm using zasm from:  https://k1.spdns.de/Develop/Projects/zasm/Distributions/

Since TASM won't run on Windows 10 I'm now using zmac  from: http://48k.ca/zmac.html 


Software:
The current code takes up about 16k of the ROM space which include the BASIC interpreter.

Here's a shot of the main menu on my terminal program.

Some more screenshots with examples of various functions: 

Dump 256 function

List function

Assemble, and Go  functions

Attachments Details:

EMK_Z80_SYSTEM001C.pdf        Z80 Board schematic (updated 6/21/2023)
Z80MON08.ASM                       Monitor Source Code
Z80BASIC.ASM                           BASIC Source Code
Z80pgmr.zip                            Source and binary for command line utility to upload a HEX file to the Z80 system
Z80save.zip                               Source and binary for command line utility to retrieve a HEX file from the Z80 system
Z80BLoad.zip                             Source and binary for command line utility to upload BASIC source text to the Z80 system
Z80pgmrx.zip                          Source and binary for the LINUX utility to upload a HEX file to the Z80 system