Z80: Difference between revisions

From Sinclair Wiki
Jump to navigation Jump to search
(Add category)
(Add notable uses, compatibility with 8080, compatible CPUS and rearrange sections)
Line 5: Line 5:
== Instruction Set ==
== Instruction Set ==
{{Main|Z80 Programming#Instruction Set}}
{{Main|Z80 Programming#Instruction Set}}
The instruction set of the Z80 in an extension of that of the Intel 8080.  An entirely different set of assembly nmemonics is used.  8080 compatibility allowed the Z80 to be used in many CP/M systems, and this compatibility allowed CP/M to run on the ZX Spectrum +3, and a CP/M compatible system, Pro-DOS, to run on the SAM Coupé.
Zilog have released numerous clones of the Z80.  In addition, there are numerous processors such as the R800 and T80 that are largely compatible with the Z80's instruction set.


== OUT (C),0 / OUT (C),255 Instruction ==
== OUT (C),0 / OUT (C),255 Instruction ==
Line 58: Line 62:
== Replacements ==
== Replacements ==
Z80 chips are still available new, due largely to their continued popularity for embedded systems.  Component suppliers such as Farnell and Rapid usually have them in stock.
Z80 chips are still available new, due largely to their continued popularity for embedded systems.  Component suppliers such as Farnell and Rapid usually have them in stock.
{{CC-BY-SA-techwiki|Z80|Z80}}
== See also ==
* [[X80]], a proposed floating point unit following the Spectrum calculator stack instruction set.


== Test programs ==
== Test programs ==
Line 69: Line 68:


Patrik Rak has written a [http://zxds.raxoft.cz/taps/misc/z80test.zip Z80 instruction tester], as [http://www.worldofspectrum.org/forums/showthread.php?t=41834 announced here].
Patrik Rak has written a [http://zxds.raxoft.cz/taps/misc/z80test.zip Z80 instruction tester], as [http://www.worldofspectrum.org/forums/showthread.php?t=41834 announced here].
== Notable uses ==
The SAM Coupé, a computer with a large degree of compatibility with the ZX Spectrum 48K, makes use of a Z80B, running at 6 MHz.
The Z80 was also used in the MSX and Amstrad CPC range, which eases the task of porting software between the Spectrum and those systems in many cases.
== See also ==
* [[X80]], a proposed floating point unit following the Spectrum calculator stack instruction set.


== External links ==
== External links ==
Line 76: Line 84:
* Sean Young's [http://www.myquest.nl/z80undocumented/ ''The Undocumented Z80 Documented'']: undocumented features
* Sean Young's [http://www.myquest.nl/z80undocumented/ ''The Undocumented Z80 Documented'']: undocumented features
* [http://zx.pk.ru/attachment.php?attachmentid=2989 memptr_eng.txt]: the undocumented flags after BIT n,(HL)
* [http://zx.pk.ru/attachment.php?attachmentid=2989 memptr_eng.txt]: the undocumented flags after BIT n,(HL)
{{CC-BY-SA-techwiki|Z80|Z80}}


[[Category:Hardware]]
[[Category:Hardware]]

Revision as of 23:49, 2 April 2014

  • This article is about the CPU chip used in the Spectrum. For the emulator snapshot format see Z80 format

The Zilog Z80A is the CPU used in the ZX80, ZX81 and all ZX Spectrum models, as well as most Spectrum clones and several other 8-bit micros. In the Spectrum, the Z80 is clocked at around 3.5MHz (for precise values see individual model pages).

Instruction Set


The instruction set of the Z80 in an extension of that of the Intel 8080. An entirely different set of assembly nmemonics is used. 8080 compatibility allowed the Z80 to be used in many CP/M systems, and this compatibility allowed CP/M to run on the ZX Spectrum +3, and a CP/M compatible system, Pro-DOS, to run on the SAM Coupé.

Zilog have released numerous clones of the Z80. In addition, there are numerous processors such as the R800 and T80 that are largely compatible with the Z80's instruction set.

OUT (C),0 / OUT (C),255 Instruction

In 1996, Simon Cooke noted in a Usenet posting that the undocumented instruction usually referred to as 'OUT (C),0' behaves instead as 'OUT (C),255' on CMOS Z80s.

Later, in 2004, Colin Piggot rediscovered this with his own SAM Coupé, when running a demo for SCPDU 6, coincidentally written by Simon Cooke. With the CMOS Z80, a white background colour was set over part of the screen in the demo. This was described in SAM Revival Issue 9 (March/April 2004).

In 2008, this was once again rediscovered by the MSX community.

LD A,I and LD A,R in NMOS Z80s

The NMOS Z80s suffer a problem whereby LD A,I and LD A,R record the state of IFF2 after it has been reset if an interrupt is delivered during that instruction. This behaviour, along with workarounds for this for use in interrupt handlers are documented in the Z80 Family Questions and Answers section of the Zilog Product Specifications Databook.

Bits 3 and 5 of the F Register

Woody confirmed that bits 3 and 5 of the flags are copied on all BIT instructions on both a Zilog Z80 and an NEC clone (stated on the link above as being "unverified").

Stuart Brady discovered that how bits 3 and 5 of the flags are set after the SCF and CCF instructions actually depends on the variant of Z80 in use. On a Zilog Z80, bits 3 and 5 of the flags were set by ORing their previous values with that of A. On an NEC clone, bit 3 was unaffected, while bit 5 appears to be set by ANDing the previous value with something unknown. Previously, Ian Greenway tested this and found that bits 3 and 5 seemed simply to be copied from A, although it is not known which CPU these tests were run on. For more details, see here, here and a more recent investigation here.

Patrik Rak however later discovered that the way how the flags 5 and 3 are affected after SCF/CCF actually depends on the previous instruction completed. In case of genuine Zilog CPU, if an instruction modifies the flags, the immediately following SCF/CCF does move of bits 5 and 3 from A to F, whereas if an instruction doesn't modify the flags (and after interrupt), the SCF/CCF does OR of bits 5 and 3 from A to F. In case of NEC and other clones, it is similar, except that instead of OR it does AND with some unknown value, making the result unreliable.

Bus

The Z80 has a 16-bit address bus and an 8-bit data bus. The control bus pins (all of which are active low) are:

Pin Description
/MREQ Memory Request
/IORQ I/O Request
/RD Read
/WR Write
/RFSH DRAM Refresh
/M1 Opcode Fetch Cycle
/HALT CPU Halted
/WAIT CPU Wait
/INT Maskable Interrupt
/NMI Non-Maskable Interrupt
/BUSRQ Bus (DMA) request
/BUSACK Bus (DMA) acknowledgement

Replacements

Z80 chips are still available new, due largely to their continued popularity for embedded systems. Component suppliers such as Farnell and Rapid usually have them in stock.

Test programs

A basic Flags test program for emulators is available here. Note that the program makes heavy use of ROM data during the tests and so should only be used with an unpatched copy of the original 48K ROM to obtain correct results.

Patrik Rak has written a Z80 instruction tester, as announced here.

Notable uses

The SAM Coupé, a computer with a large degree of compatibility with the ZX Spectrum 48K, makes use of a Z80B, running at 6 MHz.

The Z80 was also used in the MSX and Amstrad CPC range, which eases the task of porting software between the Spectrum and those systems in many cases.

See also

  • X80, a proposed floating point unit following the Spectrum calculator stack instruction set.

External links

Article license information

This article uses material from the "Z80" article on the ZX Spectrum technical information wiki at Fandom (formerly Wikia) and is released under the Creative Commons Attribution-Share Alike License.