www.jupiter-ace.co.uk

Previous Page > Jupiter Ace chip ID and location > The Z80A CPU.


The Z80A CPU chip


  The Z80A central processing unit (CPU) in the Jupiter Ace can be thought of as its 'heart'. Its an 8-bit cpu in a 40-pin DIL package. Its not very likely that your Ace will have an original Zilog Z80A cpu, but one of the Z80A clones like the image below, a an NEC-D780C. Below is a description of the functions of what Z80A pins do on the Jupiter Ace.




Z80A pinouts.
Pin Number(s) Function
A0 - A15 16-bit tri-state address bus.
D0 - D7 8-bit tri-state data bus.
M1 Output, active low. Indicates that the current machine cycle is an operation code fetch.
MREQ Output, tri state, active low. Indicates that the address bus holds a valid address (see also RFSH).
IORQ
Output, tri state, active low. Indicates that the address ( A0 - A15) bus holds a valid address for an I/O operation.
RD
Output, tri-state, active low. Indicates that the CPU wants to read data from memory or from an I/O device.
WR
Output, tri-state, active low. Indicates that the CPU data bus holds valid data to be written to memory or an I/O device.
RFSH
Output, active low. Indicates that the lower seven bits of the address bus contain a refresh address for dynamic memories. A concurrent MREQ signal should then be used to signal a refresh read to all dynamic memories in the system.
HALT
Output, active low. Indicates that the CPU has executed a HALT software instruction and is awaiting either a non-maskable or maskable interrupt (with the mask enabled) before normal operation can be resumed. (Memory refresh continues in the HALT state with the CPU executing a NOP instruction.)
INT
Input, active low. An interrupt request generated by external devices will be honoured at the end of the current instruction if the internal (software controlled) interrupt enable flip-flop (IFF) is enabled and if the BUSRQ signal is not active. When the CPU accepts the interrupt an acknowledge signal is generated (IORQ) at the beginning (Ml cycle) of the next instruction.
NMI
Input, negative edge triggered. The non-maskable interrupt line has a higher priority than INT and is always recognized at the end of the current instruction independent of the state of the IFF. NMI forces the CPU to restart at location 0066H. The PC contents are automatically saved on the stack to facilitate an orderly return to the program.
RESET
Input, active low. Forces the PC to zero and initialises the CPU such that the IFF is reset (interrupts disabled), registers I and R are set to OOH, and interrupt mode 0 is enabled. During reset periods, the address and data buses go to a high impedance state and all output signals become inactive.
BUSRQ
Input, active low. Used by external devices as a signal to the CPU when they wish to have control of the system buses. At the end of the current machine cycle in which the signal is received the CPU will set all tri-state lines to the high impedance state.
BUSAK
Output, active low. Used by the CPU to signal to external devices that the system buses are in the high impedance state and available for their use.
Φ Single-phase TTL clock input. Generally requires a 330 ohm pull-up resistor.


  The Z80A CPU contains 18 8-bit and four 16-bit registers, jointly constituting a total of 208 bits of read/write memory accessible to the programmer. The register configuration of the Z80A CPU is shown in below.

  Note that this shows two sets of six general purpose registers which may be used individually as 8-bit registers or in pairs as 16-bit registers. There are also two sets of accumulator and flag registers. The functions of the registers are summarized here;


Accumulators (A, A') Two independent 8-bit accumulator registers are provided.
Flags (F, F') The flag registers indicate the status of the accumulator selected.
General purpose registers (BC, DE, HL, B'C', D'E', H'L') Either of the two groups of registers can be selected using a single exchange (EXX) instruction.
Program counter (PC) Holds the 16-bit address of the current instruction being fetched from memory.
Stack pointer (SP) Holds the 16-bit address of the current top of the stack located in external read/write memory.
Index registers (IX, IY)
Two independent registers each capable of holding a 16-bit offset address used in the indexed addressing mode.
Interrupt vector (I)
One of the Z80A interrupt modes allows an indirect call to an address located anywhere in memory (i.e. not just zero page). The I register is used to hold the high order eight bits of this address.
Memory refresh (R)
The R register contains the output of a 7-bit refresh counter. The count is incremented after each instruction fetch. The contents of the R register are sent to the lower eight bits of the address bus during the refresh period.


Internal block diagram of the Z80A core.


This is what it all looks like.