Quite some time ago, in October 2011, I built a simple Z80 based
computer with an IDE interface, embedded Forth interpreter etc.
This machine is described in more detail
here. Since the overall system occupies
a 10 inch enclosure and is completely wire-wrapped it is not as
portable as I wished it was. Thus I decided to reimplement it and
design a real printed circuit board using
EAGLE - the free version of this
CAD system allows one to design boards of up to 100 mm times 80 mm
in size which is exactly the size I envisioned for this new Z80 system.
This small size required some sacrifices - most notably there is longer
an IDE-subsystem and the only IO-port is a serial line with which the
Z80 board can be connected to a terminal or even better a host computer.
This small computer is extremely simple to build, the printed circuit
boards can be manufactured based on the
EAGLE files enclosed below and
using the builtin Forth interpreter is really fun.

The overall system is shown on the left. From left to right the bottom
row of ICs contains a 16C550 UART (serial line interface), a Z80B
processor running at a whopping 6 MHz, 32 kB of RAM (62256) and 32 kB
EPROM (27C512) containing the monitor and the Forth interpreter.
Above the RAM and ROM are the two TTL quartz oscillators for the UART
(1.8432 MHz) and the CPU (6 MHz) and, on the far right, a 74LS32 for
address decoding. The remaining parts are a MAX232 line driver for the
serial line (next to the six small electrolytic capacitors) and a
74HCT14 which is mainly used for the reset circuitry (any 74xx14 should
do fine here).

On the upper left, the power supply connector can be seen (a simple
floppy disk like jack) with the tiny yellow reset switch just below.
The ribbon cable connected on the upper right is the serial line.

The schematic of this board is shown on the right (click on the image
to get a larger and readable version). In the center, the Z80 CPU can
be seen. The reset circuit, which consists of an 10 uF electrolytic
capacitor which is loaded via a 10k resistor and feeds two Schmitt
trigger inverter gates of the 74HCT14, can be seen on the left of the
drawing. When the reset switch is depressed, the capacitor is discharged
and a suitable reset pulse is supplied to the CPU (active low) and the
UART (active high).

The 16 bit address space of the CPU is divided into two 32 kB areas
by means of A15. The lower 32 kB from $0000 to $7FFF are occupied by
ROM (27C512 EPROM) while the upper 32 kB from $8000 to $FFFF are RAM
area.

The UART 16C550 with its associated level converter MAX232 can be seen
in the lower right corner of the schematic.

Based on this schematic a printed circuit board was created using
EAGLE's autorouter (as you can see
I was lazy and did not take any special care of power supply lines
since there are so few components which need no special precautions).

There are many companies which can create a board based on the
Z80_mini.brd file which can be found in this
ZIP-file. My board was made by
Jackaltac and I am very
satisfied by the result. (No, I am not affiliated with this company
nor do I intend to make any advertising - it is just that I have
made some good experiences with their services.)

The overall system requires a 5 V power supply at about 120 mA with
the parts specified above and running at 6 MHz.

A computer without software is useless, so I needed at least a simple
EPROM based monitor for this computer to work with it at all. This
monitor is based on the monitor of the predecessor
Z80-system, the Tiny Z80 system mentioned
above.

Writing a monitor turned out to be really fun and what once started
with the goal of something capable of loading and running programs
from Hex files became a monitor with embedded Forth interpreter
(I ported Brad Rodriguez'
CAMEL Forth)
and many other useful features. (The monitor intended for the
Tiny Z80 system contains routines for an
IDE interface - these routines are also included in the monitor for
the Z80_mini described here, but can not be used due to the missing
hardware!)

I use the
zasm
assembler to assembly the monitor sources and produce an Intel-Hex file
suitable for an EPROM programmer. The complete sources of the monitor
can be found here. This ZIP-archive
contains a README.txt file with additional information on how to build
a monitor EPROM image file. If you just want to program a 27C512 EPROM
with version 0.14a of the monitor (which is the latest version as of
28-JUN-2013) you can download a suitable Intel-Hex file
here. (If you have no EPROM programmer
you can send me a mail - see below - and ask me to program it for you
given that
you send me an empty 27(C)512 EPROM and the necessary postage and
packaging to return it to you.)

The command "language" is quite simple: All commands are grouped in
so-called "command groups". Each such group is selected by a single
letter and contains commands which are select by a second single
letter. So there is no need to press "ENTER" as in conventional shells
or type long commands. If a command requires parameters it prompts
the user to enter all required values. There is one command group
containing only one command, so that a single letter instead of two
as written above is sufficient to execute this command which is the
HELP-command:

It should be noted again that all commands regarding disk and file IO
will not work and will most likely crash the system since there is
no IDE controller. I was too lazy to surgically remove all of the
IDE support which is quite scattered within the monitor. :-)

The following example shows the use of a command which requires
a start and an end address to work - a disassembler listing
covering the memory area from $0000 to $0050 is generated (the
disassembler has been developed by John Kerr):

To call the disassembler command only two keys have to be pressed:
"M" to select the "M"emory-command-group and "A" to select the
dis"A"ssembler.

Just in case you are as curious as I am and you like reading other
people's code as much as I do, version 0.14a of the monitor is listed
in the following (just in case Deft is reading this: There is plenty
of room for improvement. :-) There are way too many push/pop instructions
etc. But after all it was and still is a pet-project. :-) ):