Date: Thursday, 16 May 1985  07:29-MDT
From: Jeff Skot
Re:   Z800 preliminary specs

There is much talk about the Z800.  I thought that I'd inject some
facts straight from Zilog to substanciate the excitement.

The following is taken from the
"Z800 MPU Family Preliminary Product Specification" September 1983
00-2259-01
from    Zilog, Inc
       1315 Dell Ave
       Campbell, California 95008

       (408) 370-8000
       TWX 910-338-7621

FEATURES:
enhanced Z80 instruction set that maintains object-code compatability
       with Z80 microprocessor
on-chip paged Memory Management Unit (MMU)
large memory address space: 512K and 16M byte versions
On-chip, high speed local or cache memory
high performance 16 bit Z-BUS interface or 8-bit Z80-compatible bus interface
four on-chip 16 bit counter/timers
four on-chip DMA channels
On-chip full duplex UART
10-25 MHz CPU processor clock

chip #  # pins  data path       address space   on-chip peripherals
Z8108   40      8 bits          512 K           no
Z8116   40      16 bits         512 K           no
Z8208   64      8 bits          16 M            yes (there are enough pins
Z8216   64      1 bits          16 M            yes  left on the package)

Central to the Z800 microprocessor is an enhanced version of the Z80 CPU.
To assure system integrity, the Z800 microprocessor can operate in either user
or system mode, allowing protection of system resources from user tasks
and programs.  System mode operation is supported by the addition of the
system Stack Pointer to the working register set.

I/O address space has been expanded by the addition of an I/O page register
used to select pages of I/O addresses.  The 8 bit I/O Page register can
select one of 256 possible pages of I/O addresses to be active at one
time, allowing a total of 64K I/O addresses to be accessed.
[ The I/O instructions are still using 8 bit addresses so this
register is appended to form a 16 bit I/O address ]

There are 256 bytes of on-chip memory present on all members of the Z800
family.  This memory can be configured as a high speed cache or as a
fixed address local memory.  When configured as cache, the memory can be
programmed to be instruction only, data only, or both data and instructions.
The cache memory allows programs to run significantly faster by reducing
the number of external bus accesses.  Operation and update of the cache
is performed automatically and is completely transparent to the user.
When used as a local memory, the addresses are programmable, allowing
"RAMless" systems to be used.

All members of the Z800 family contain an on-chip clock oscillator.  Also
present is a refresh controller that provides 10 bit refresh addresses for
dynamic memories.

The 64 pin versions of the Z800 MPU contain additional on-chip peripherals
to provide system design flexibility.  To support high-bandwidth data
transmission, four DMA channels are incorporated on-chip.  Each DMA
channel operates using fill 24 bit source and destination addresses with
a 16 bit count.  The channels can be programmed to operate in single
transaction, burst, or continuous mode.  System event counting and timing
requirements are met with the help of the four 16 bit counter/timers.
The countdown/timer functions can be externally controlled with gate and
trigger inputs, and can be programmed as retriggerable or nonretriggerable.
Also, a full duplex UART, capable of handling a variety of data and
character formats, is present to facilitate asynchronous serial communication.

An additional feature of the 16 bit bus interface is the ability to support
"nibble-mode" dynamic RAMs.  Using this feature (known as burst-mode),
the bus bandwidth of memory read transactions is essentially doubled.
Burst mode transactions have the further benefit of allowing the cache
to operate more efficiently by guaranteeing a high probability that the
contents of the associated memory will be present in the cache.

The Z800 CPU architecture supports four distinct address spaces ...
CPU register space
CPU control and status register space
Memory address space
I/O address space

Status and control registers:
There are ten status and control registers available to the programmer
in the Z800 MPU.  Table 1 shows the addresses occupied by the
registers in the status and control register addressing space:
control register name          address (hex)
====================           ===========
Bus timing and Control         control 02
Bus timing and initialization  control FF
Cache control                  control 12
Interrupt Status               control 16
Interrupt/Trap Vector Table    control 06
I/O Page Register              control 08
Local Address Register         control 14
Master Status (MSR)            control 00
Stack Limit                    control 04
Trap Control                   control 10

Interrupt/Trap Vector Table:
The format of the Interrupt/Trap Vector Table consists of pairs of
Master Status register and Program Counter words, one pair for each seperate
on-chip interrupt or trap source.  For each external interrupt, there is a
separate Master Status register word and Program Counter word (for use if
the input is not vectored).  If the external interrupt is vectored, a vector
table consisting of one Program Counter word for each of the 128 possible
vectors that can be returned for each input line is used instead of the
dedicated Program Counter word; thus for vectored interrupts, there is only
one Master Status register for each interrupt type.

       INTERRUPT/TRAP VECTOR TABLE
address         contents
=======         ========
00      unused
04      NMI Vector
08      Interrupt Line A Vector (End of Process)
0C      Interrupt Line B Vector
10      Interrupt Line C Vector
14      C-T0
18      C-T1
1C      C-T2
20      C-T3
24      DMA0 Vector
28      DMA1 Vector
2C      DMA2 Vector
30      DMA3 Vector
34      UART Receiver Vector
38      UART Transmitter Vector
3C      Single-Step Trap Vector
40      Breakpoint-on-Halt Trap Vector
44      Division Exception Trap Vector
48      Stack Overflow Warning Trap Vector
4C      Page Fault Trap Vector
50      System Call Trap Vector
54      Priviledged Instruction Trap Vector
58      EPU <- Memory Trap Vector
5C      Memory <- EPU Trap Vector
60      A <- EPU Trap Vector
64      EPU Internal Operation Trap Vector
68 - 6C reserved
70-16E  128 Program Counters for MNI and Interrupt line A Vectors
       (MSR from 04 and 08, respectively)
170-26E 128 Program Counters for Interrupt Line B Vectors
       (MSR from 0C)
270-36E 128 Program Counters for Interrupt Line C Vectors
       (MSR from 10)


***** my own observations *****

Despite the system/user modes, they still have 'primary' and 'auxillary'
sets of registers.  The only register duplicated for system/user
is the SP (Stack Pointer).  A whole other set of registers for system
would've been nice.  The only way to switch register banks is with
EX (exchange Accumulator/flag with alternate bank) and
EXX (exchange byte/word registers with alternate bank).  I think
this limits the use of the registers since it is easy to forget which
is in use (there is no way to see which is in use or say 'use primary',
only 'use other').  EX and EXX are NOT priviledged instructions so you
cannot reserve their use for the system mode.

Priviledged instructions consist of the CPU controls, I/O and memory
control.

It would be nice if this ever came to pass, but Zilog is busy with
their Z80,000 32 bit processor so this takes a back seat.  Sigh.

                       Jeff 'armed to the teeth in knowledge' Skot
                       at midtown Somerset, New Jersey
                       { ihnp4 | mcnc | cbosgb} abnji ! jeff