c p u ville logo
Donn Stewart
13917 Deviar Dr
Centreville, VA 20120
dstew@cpuville.com

Designing, Building, and Selling Obsolete Computers -- for Educational Purposes -- since 2004

c p u ville logo menu icon

Code for Z80 kits and projects


Code for the Single-board Z80 computer or the Original computer the disk and memory expansion

ROM code with routines to operate the disk

ROM v. 8 assembly language file
ROM v. 8 assembly list file
ROM v. 8 binary file

Memory test program for single-board computer with v.8 ROM

Memory test assembly language file
Memory test list file
Memory test binary file

Version 15 ROM for Single-board computers with the bus display.

ROM v. 15 assembly language file
ROM v. 15 assembly list file
ROM v. 15 binary file

Memory configuration GAL files

Code for installing and running CP/M


Code for the Original Z80 computer with the serial interface

Character echo test program

Character echo test assembly language file
Character echo test list file
Character echo test binary file

This is a program you can use to test the serial port connection. This program can be entered byte-by-byte into RAM using the Program_loader, which is at ROM location 0x0046. The program is only 30 bytes long, and is fairly easy to enter with the Program_loader. Once it is loaded in RAM and executed, it initializes the serial port and waits for input. Then, if all goes well, the characters you type on the PCs keyboard will be sent to the Z80 by the serial port, and the Z80 computer will echo them back to the display. The characters will also be displayed on the Z80 computer's port 0 LEDs

Boot loader (for Original computer ROM v.6 and lower)

Boot loader assembly language file
Boot loader list file
Boot loader binary file

This is another tiny program that can be entered into the Z80 computer's memory using the ROM Program_loader. Once boot_loader is entered and executed, the Z80 initializes the serial port UART and waits for input from the PC. You start the binary transfer from the PC, and the Z80 computer will receive 256 bytes of code and place them in its memory starting at location 0900h. Then, the boot_loader jumps to that location to execute the code that was entered. If you don't overwrite it, the boot loader will remain in memory at 0x0800, and will start again after the computer is reset, if you put 0x0800 on the input port switches. This allows you to write, assemble, run, and debug small Z80 assembly language programs easily using binary transfers throught the serial port. The v.7 ROM has a full monitor program that allows binary loading of programs of any length.

The Tiny BASIC interpreter for the Original computer


Z80 computer kit ROM archive

Here are links to older ROM files. New ROM versions sometimes change program entry points. If you have an older ROM version you can find it here, and find the correct entry points. Note ROM v.8 only works with the disk and memory expansion or with the Single-board computer.

ROM v. 8 assembly language file
ROM v. 8 assembly list file
ROM v. 8 binary file

ROM v. 7 assembly language file
ROM v. 7 assembly list file
ROM v. 7 binary file

ROM v. 6 assembly language file
ROM v. 6 assembly list file
ROM v. 6 binary file

ROM v. 5 assembly language file
ROM v. 5 assembly list file
ROM v. 5 binary file

ROM v. 4 assembly language file
ROM v. 4 assembly list file
ROM v. 4 binary file

ROM v. 3 assembly language file
ROM v. 3 assembly list file
ROM v. 3 binary file

ROM v. 2 assembly language file
ROM v. 2 assembly list file
ROM v. 2 binary file


Z80 wire-wrap microcomputer project

EPROM code

Assembly language file
List file

The code here shows some useful routines to put in the EPROM. The first instruction allows the user to skip to a part of the EPROM that has good code. This technique allows the programmer to enter new code in a higher memory location if a mistake is made (easy to do if you are entering data into the EPROM bit-by-bit). You can simple write zeros over the JP instruction and enter another one that points to the good code, without erasing the EPROM. The target of this initial jump is a routine that allows the user to identify an entry point by placing the address on the input port switches. The simple port reflector and counter programs are for testing the basic integrity of the system. The program loader allows the user to experiment with any small program by entering it into RAM bit-by-bit using the input ports.

Integer factor program

Assembly language file
List file

This program finds the highest factor of an integer. The integer is entered on the input port, and the highest factor is found and displayed on the output port. The integer factor routine was the first program ever run on a stored program computer (the Manchester Mark I "Baby" ).

Addition Program

Assembly language file
List file

This is a simple addition program that can be entered into RAM using the program loader routine.