Freeware Z80 microprocessor IDE

This page is about my first microprocessor that I have used for years and that I knew from the inside out, the Z80 processor. In 1972 when I became interested in computers, there was nothing on the market for the hobbyist beside some books that I read. Only a few years later the magazine Elektuur came with an SC/MP processor board but that, at that time, was not unaffordable for me. I did gain a lot of theoretical knowledge by reading everything I could. In 1979, when I was twenty years old, I bought my first real computer, the Tandy TRS-80 model I level II that used the Z80 processor. In no time I was able to program assembler and write complex assembler programs for the Z80 processor. After that all my computers had a Z80 processor like the Sinclair Spectrum and later the MSX. After my IT education I was a licensed Pascal and Cobol programmer, but my first job was hardware and software for embedded Z80 systems (cash register and machine control systems) in assembly and PL/Z. I started working with Micro Technology (a MSX hardware supplier) and again was programming the Z80, but now in C and assembly. A few years later we switched to 8031 processors, who became my second love and also for this processor I have written a lot of code in assembler and C. I have used the Z80 processor so long and so often that I called this my first love in processor land. After many years I have picked up the Z80 again and you can find information on this page about old and new Z80 projects and designs. The Z80 was a very fine design and its funny that this processor is still used, like in the Nintendo Gameboy but also in the Texas Instrument scientific calculators.
Regards, Hein Pragt.

Z80 workbensch editor / emulator / debugger

To be able to program for the z80 you need an assembler or compiler. I personally still like to write in Z80 assembler but I could no longer find tools for Windows 10. There were still some programs to download but most of them worked at DOS level. After some searching I decided that it was time for a new hobby project, building a complete integrated Z80 development environment. I found a pretty good assembler and good portable C code from an emulator and the rest I had somewhere in my code library. The result is Z80 workbench, a portable x64 Windows program that includes an editor, assembler, disassembler, emulator, single step debugger, Intel hex read / write function a terminal window, an MPF-1 compatible seven segment display with 8 LEDs and keyboard support.


Download the zip file and unzip it at the place where you want to install it on your hard drive. Then create a shortcut to the program to the desktop and the program is ready for use. It is a so-called portable program which means that it does not use external sources or libraries and does not use the registry. After removing the directory from this program, it has also disappeared completely from your system.

First time use

To practice there is an example4.asm file in the example directory, which you can load after which it will be in the shown in the middle edit window. Now you can convert this into machine code by means of the assemble button, this will appear on the left of the screen and be put into the virtual memory of the emulator. The last (or first) .org statement will also be put in the program counter and by simply pressing the run button you can execute the program and follow it on the screen. This will not be very fast because every instruction will perform a screen update of all registers. If you want the program to run faster, you can disable the update of the registry block by means of the update checkbox. You can now modify the program, reassemble it and run it again.

The basic2 is an example of the basic assembler file from Grant Searle, I only added a modified BIOS file at the end and an .org 0000h at the end to set the start adresss.

By means of the step button you can execute the program instruction by instruction and check the output and the registers. You can also enter the break address, the emulator will then stop at a run command at this address and display the registers of that moment. When 0000 is entered in the break field it will be ignored.

You can save the modified code as an asm file again but also save it as a hex file so that you can load the binary code in a circuit or ep(rom) for a real Z80 circuit. You can also read an Intel-Hex file, which will then be loaded into the internal emulator memory. You can also run tis code when you put the correct start address in the program counter. You can also disassemble this internal emulator memory code after which the source code will appears in the edit screen in the middle. This can then be changed and written back into the emulator memory by means of assemble button.

I/O map

The emulator has a standard number of I/O ports for input from the keyboard and output to the terminal screen or the seven segment displays / LEDs. In example4 there is an example of both.

  • In port 1: Returns the character of the keyboard in A register, when there is no sign a 0 character will be returned.
  • In port 2: Return the status of the keyboard, 0 no keystroke is available, unequal to 0 means a keystroke is available. The character must then be read on port 1.
  • Out port 1: Data for terminal or seven segment display. When Out port 2 is a 0, the data will go to the terminal. If port 2 is unequal to zero, the data will go to the seven segment display.
  • Out port 2: Selection terminal (0) or seven segment display. When a segment select bit (0..5) is 1, the display data will be send to each seven segment display that has its bit set to 1. It is therefore possible to address each display individually as well as multiple displays at the same time. To turn everything off, first set 0xff to port two and then a 0 to port 1. To switch back to the terminal, you have to write a 0 to port 2 again. (In contrast to the MPF-1, the data of the display is latched.)
  • Out port 3: This port is a latch to the eight LEDs where each bit controls an LED.

Credits: Credits go to Jorge Giner Cordero for letting me use and distribute his Z80 assembler, and Lin Ke-Fong for letting me use his portable C emulator code.


This is the first version 1.01 that I make available for download. This is a zip file containing a portable x64 Windows exe program, one example directory and an assembler directory.


Z80 links, tips and documents

Here is a list of sites, designs and information regarding the Z80 processor.

Reacties op het onderwerp: Z80

32 - Techniek »  -  Z80 »
2019-04-07 21:06:00
Hier kunt u reageren op de Z80 pagina en Z80-workbench.
Here you can reply to the Z80 page and Z80-workbench.
Reactie van een bezoeker van de site!
Q & A Z80 page
Er zijn: 2 reacties!
2019-04-07 21:06:00
Ik gebruik met veel plezier deze workbench.
Paar kleine puntjes die voor mij lastig zijn:
1. Ik gebruik ZASM voor mijn Z80's en de syntax is net anders als uz80as. Omdat ook de directives anders zijn kan ik niet met 1 source werken. Is het mogelijk ook ZASM te ondersteunen?
2. De verschillende sub-windows in de UI zijn niet te resizen. Op de huidige grotere schermen zijn de code windows te smal en de terminal/hex-viewer te breed. Ook het lettertype vind ik zelf nogal klein en de code-window heeft geen mono-spaced font.
3. De code-editor werkt niet zo fijn en heeft wat kleine bugjes (soms Ctrl-A ipv A). Een file-based koppeling zou fijner zijn dan kun je je eigen editor kiezen. (Zodra je Assemble klikt, file opnieuw laden?)
4. Het zou helemaal mooi zijn als de porten configureerbaar zijn, zodat je poort 0,1 en 2 kunt mappen naar eigen poorten :-)

Verder fijne tool!

Hartelijk dank
Reactie van een bezoeker van de site!
2019-04-09 20:52:00
Fijn om te horen, ik zal de punten meenemen als ik een nieuwe versie ga maken.
Vriendelijke groet, Hein Pragt

Last update: 27-06-2018

Disclaimer: Hoewel de heer Pragt de informatie beschikbaar op deze site met grote zorg samenstelt, sluit hij alle aansprakelijkheid uit met betrekking tot de informatie die via deze site wordt aangeboden. Op de artikelen van de heer Pragt rust auteursrecht, overname van tekst en afbeeldingen is uitsluitend toegestaan na voorafgaande schriftelijke toestemming. Voor vragen hierover kunt u contact opnemen met: (email: is ingeschreven bij de KvK onder nummer: 73839426.  Lees hier de privacyverklaring van deze site. Voor informatie over adverteren op deze site kunt u contact opnemen met: (email: