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


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.


Z80 computer kit ROM archive

Here are links to older and current 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.

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


Code for the 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 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


Code for the Z80 computer with 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

Code for installing and running CP/M