MILC logo

IndexVorigeVolgendeLeeg

Mogelijkheden van de Z800 family
Eric Esselink, 00-00-00


    

Mogelijkheden van de Z800 family :

- Enhanced Z80 instruction set that maintains object-code compability with
  Z80 micrprocessor.
- On-chip paged Memory Management Unit (MMU)   [1]
- Large memory address space: up to 16M bytes.
- On-chip, high-speed local or cache memory.   [2]
- 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.
- On-chip clock oscillator.
- 10-25 MHz. CPU processor clock.
- 64K I/O adresses			       [3]
- 10-bit refresh controller to refresh 1M bit dynamic memory's    
- 4 processoren types : Z8108, Z8116, Z8208 en Z8216
  Z8070 CO-PROCESSOR !!! (voor rekenkundige taken!!!).

Opmerkingen :
-------------

[1] The Z800 microprocessors have an on-chip Memory Management Unit (MMU)
    that enables the microprocessors to address up to 16M bytes.
    In addition to enabling the address space to be expanded, the MMU 
    performs other memory management functions previously handled by 
    dedicated off-chip memeory management devices.

[2] 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 a chache, the memory can be 
    programmed to be instruction only, data only, or both data and 
    instruction.

[1] 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.
    

Samengevat :

       |   Package	Data bus	   On-chip		Common
       | no. of pins  interface (bits)	peripherals	       features
-----------------------------------------------------------------------------
Z8108  |     40 	    8	 |   Four  16-bit  counter  |  Memory manager
       |			 |   -timers(internal only) |  chache memory
---------------------------------|			    | 
Z8116  |     40 	    16	 |			    | refresh-address
       |			 |			    |	 generator
-------------------------------------------------------------
Z8208  |     64 	    8	 | Four 16-bit counter-     | clock oscillator
       |			 | timers (one internal only|
---------------------------------| Four DMA-channels	    |
Z8216  |     64 	    16	 | One asynchronous serial  |
       |			 | port 		    |
-----------------------------------------------------------------------------


Mogelijkheden van de Z8108 (=zilog's 1ste Z800) :

- 8 bit
- freq. : 6 - 25 Mhz.
- 16 bit arithmetic capabality
- 40 pins (in de dil uitvoering)
- 8 address/data lijnen
- 11 address lijnen
- on-chip oscillator
- programmable dynamic memory refreshing
- expanded i/o adressing
- less stringent memory timing requirements
- at speed of 6 MHz => memory should be 250 ns.!!!
- programmable daisy-chain interrupt
- Z80 programs can be simply moved unchanged to the Z8108
- present registers :
  - dual 8-byte register banks : A-L an A'-L',
				 two 16 bit index register IX, IY and
				 and a dual 16-bit stack pointer and program  
				 counter.
    One stack pointer is dedicated to system programs (including interrupts 
    and traps !!!), the other to user programs. The Z8108 has in addition a 
    master status register that contains a number of flags to indicate the 
    processor's current status. Also included are an interrupt and trap 
    -vector table and I/O page registers (WAUW !!!).

Programs on the Z8108 will be excuted in either the system or the user mode.
System programs have access to all registers and instructions, but user 
programs are denied access certain of these resources in order to provide a 
more secure enviroment-for example, one in which programs can be reserved in
protected memory. The user mode is regarded as a subset of the Z80 
instruction set, because some Z80 instructions such as halt are privileged in 
the Z8108 and can only be executed when the unit is in system mode.
Z80 programs will operate completely and correctly on a Z8108 since the 
processor assumes the system mode on power-up or reset.
The Z8108's added instructions include some formalizations of undocumented 
Z80 instructions (such as accessing the index registers one byte at a time), 
in order to make the entire register set more orthogonal. Four new addressing 
modes increase the flexibility of the existing instructions and make code 
generation for high-level languages much easier. In addition, the Z8108 has a
Test and Set instruction to provide synchronization for multiple processors,
and both 8-bit and 16-bit multplication and division instructions to 
increase througput in computation-intensive applications.

The on-chip oscillator-clock generator of the Z8108 simplifies system design 
by eliminating the need for an external MOS clock generator-driver. A crystal 
can be connected directly to the processor, or an external TTL-compatible 
clock signal can be provided. From this signal, the processor generates an 
internal clock, its frequency being one-half that of the input.

The Z8108 has a 512-Kbyte physical address space. The 19-bits of physical 
address are produced by 12 or 13 bits from the logical adress and 6 or 7 bits 
from the page descriptor registers.

Simple Z80 programs running on a Z8108 need not worry about memory 
management, since the Z8108 pwoers up in pass-through modem, which means that 
the logical address is passed directly to the physical address lines without 
translations.

The three interrupt service modes of the Z80 have been expanded in the Z8108 
by addition of a fourth mode and by addition of internal interrupts or traps 
using this mechanism. The four interrupts are modes 0 to 3, with 0, 1, and 2 
operating in the same way as in the Z80. Mode 3 uses the interrupt and trap 
vector table to point to an array of new program status values.

Following power-up or a reset, the Z8108 will behave like a Z80 (or an 8080).
This means that memory management is disabled, the system/user flag is set to 
system, the system stack pointer is enabled, the I/O page register is 
cleared, and the interrupt response is set to mode 0. All the Z80's 
instructions run identically on the Z8108. The Z8108, however, operates two 
to eight times faster !!!.

Met het volgende programmaatje kun je bepalen of de Z80 mode aanstaat, of dat
de Z800 mode is geactiveerd! (of zo om te bepalen of de R800 een Z800 
familie-lid is !!!).

;This instruction sequence expolits the difference.In one opcode between the 
;Z80 and the Z800 family to allow a user program to decide which processor 
;its running on.  The flags are set thus :
;
; inputs - none
; outputs - sign flag set according to CPU:
;	      S = 1 (M) if Z80
;	      S = 0 (P) if Z800
; uses - A and F only.
;
; The key instruction is in the one undefined shift group on the Z80 that
; actually performs a "logical shift left and insert 1" operation,
; with the same flag operation as the other shift/rotate instructions.
; This has been replaced on the Z800 with the Test and Set instruction that
; test the sign of the operand, setting the sign flag accordingly, then 
; setting the operand to all 1's. Thus with the proper choice of operand
; value, the sign flag resulting from instruction becomes a Z80/Z800 flag.
;
	LD	A,40H	    ;This is the proper operand.
	DEFB	OCBH,037    ;This is the key instruction.
			    ;A Z80 wil change the operand to 81H (shift left
			    ; ,insert 1) setting the sign flag on the result.
			    ;A Z800 will test the orignal sign (0) and clear
			    ;the sign flag,then set A to all 1's
	JP	M,Z80	    ;Now test the flag and jump.
	   or
	JP	P,Z800			 
	

U zult begrijpen dat bovenstaande belangrijk is, immers als het programmaatje 
werkt op een Turbo-R dan is bewezen dat de R800 een famlie lid is van de
Z800.
Er zijn goede redenen om aan te nemen dat de R800 een Z800 is, en wel om de 
volgende redenen: - De R800 kan gewoon Z80 instructies aan.
		  - De R800 kan "omschakelen" naar Turbo-R.
		  - De R800 kan maximaal 512K bytes aan (direct)
		  - Wel vreemd is dat de R800 op 28,6 Mhz. draait,want 
		    volgens de zilog boeken kan de Z800 maximaal 25 Mhz. aan.
		    (tenzij gewoon wat boven het maximum gaan zitten, net 
		     zoals met de 7 Mhz. kaart voor de 6Mhz. Z80B).
		  - Ook het aantal pennen is wat aan de hoge kant (100, 
		    terwijl dat er 40 of 64 hadden moeten zijn), maar dat 
		    kan verklaard worden door het feit dat er andere IC 
		    (PCM?) bij de Z800 zijn gevoegd (dan heb je ook meer 
		    pennen nodig).

Maar al met al blijft het spekuleren totdat iemand met een Turbo-R mijn
programmaatje heeft uitgeprobeerd, dan weten we zeker van wel of niet.
Volgens Zilog (de fabrikant van de Z800 familie) heeft de Z8216 de kracht van 
een mini-computer!
Mocht het trouwens zo zijn, dat de R800 GEEN Z800 is dan valt er over na te
denken om de Z80 te vervangen door een Z8108, immers via een kleine board kun 
je dan direct de Z8108 in de voet van de Z80 steken.Waarna je wel even een
maximum snelheid van 25 MHz. ter beschikking staat (of de ram-ic dat ook 
uithouden is de vraag, maar het kan in ieder geval). Ook ben je niet meer
afhankelijk van de klok van de video-porcessor, want de klok-generator heeft
de Z8108 al aan boord (net zoals een hoop andere dingen).

Ik hoop iedereen hier een beetje informatie te hebben gegeven (of een idee
om een MSX-2(+) om te bouwen naar een Turbo-R(of MSX-3, want zo mag je het 
wel noemen)).

Groetjes, 



	    Eric Esselink,	Chief Engineer -A.T.S-

    

Index

Vorige

Volgende