Z80 Documentation

The Undocumented Z80 Documented

This document was originally written by Sean Young but as of February 2005 I've been maintaining it. It strives to describe every documented and (officially/previously) undocumented features of the Zilog Z80 CPU, as found in MSX computers (and many others).

Most recent changes:

18th September 2005 (version 0.91)
Corrected a textual typo in the R register and memory refresh section, thanks to David Aubespin. Corrected the contradiction in the DAA section saying the NF flag was both affected and unchanged :) thanks to Dan Meir. Added an error in official documetation about that way Interrupt Mode 2 works, thanks to Aaldert Dekker.

15th Juni 2005 (version 0.9)
Corrected improper notation of JP x,nn mnemonics in opcode list, thanks to Laurens Holst. Corrected a mistake in the INI, INIR, IND, INDR section and documented a mistake in official Z80 documentation concerning Interrupt Mode 2, thanks to Boris Donko. Thanks to Aaldert Dekker for his ideas, for verifying many assumptions and writing instruction exercisers for various instruction groups.

18th May 2005 (version 0.8)
Added an alphabetical list of instructions for easy reference and corrected an error in the 16-bit arithmetic section, SBC HL,nn sets the N-flag just like other subtraction instructions, thanks to Fredrik Olssen for pointing that out.

4th April 2005 (version 0.7)
I (Jan) will be maintaining this document from this version on. I restyled the document to fix the page numbering issues, corrected an error in the I/O Block Instructions section, added graphics for the RLD and RRD instructions and corrected the spelling in several places.

The document is available in pdf and it's original latex source:

Other Documentation

Technical Info

Much that is relevant, although not always accurate, as descibed in detail in the document above is listed in Zilog's own Z80 Family CPU User Manual.

For a lot of good explaining of the internal functioning of the Z80, with lot's of cool diagrams take a look at this document by Rodnay Zaks.

If you're interested in executing Z80 code at more modern speeds, you might be interested in Zilog's Z80380 also known as the Z380, a 32-bit processor that is still backwards compatible to the original Z80.

A good resource for documentation on emulation and technical documentation was Sean Young's page, most of his docs can now be found at ftp.funet.fi and Wikipedia.


Please mail any comments to me