Das Schneider CPC Systembuch

Das Innenleben der CPC-Rechner

Die CPU Z80

Besonderheiten der Z80 im Schneider CPC

Eine leichte, kreative Abwandlungen vom normalen Einsatz der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
Z80
in einem Mikrocomputer-System wurde ja schon erwähnt: Die CPU Z80: Das Refresh-RegisterDas Refresh-Register. Aber das ist noch gar nichts gegenüber einigen anderen Tricks, die man sich im Schneider CPC hat einfallen lassen.

Auf eine andere Eigenheit, die verschiedenen Speicherbaenke, wurde auch schon eingegangen:

Bank-Switching

Ein echtes Handicap für 8-Bit-Mikroprozessoren ist ihr vergleichsweise geringer Adress-Umfang. Mit 16 Adressleitungen kann man eben nur 2^16, also 65536 verschiedene Speicherplätze zu je 8 Datenbreite: Bits
Port B - Input: &F5xx: Bit 0:
Port B - Input: &F5xx: Bit 4:
Port B - Input: &F5xx: Bit 5:
Port B - Input: &F5xx: Bit 6:
Port B - Input: &F5xx: Bit 7:
Port C - Output: &F6xx: Bit 4:
Port C - Output: &F6xx: Bit 5:
Bit
adressieren. Und damit müssen Betriebssystem, Basic-Interpreter, Basic-Programm, Daten- und Bildschirmspeicher auskommen. Und da der Schneider CPC als 'Auch-Spiele-Computer' prinzipiell einen grafik-orientierten Bildschirmspeicher hat, geht alleine dafür schon ein Viertel des adressierbaren Speichers weg.

Hätte man sich bei Amstrad nicht fürs Speicher-Banking entschieden, hätte man ganz massive Abstriche an Einleitung: BASIC
Anhang: Basic
Basic
und Betriebssystem machen müssen, sonst würden dem Anwender nur noch knappe 16000 Datentypen: Bytes
Datenbreite: Bytes
Bytes
für eigene Programme und Daten zur Verfügung stehen!

Die Hardware ist so konzipiert, dass man einzelne Speicherbereiche auf Eis legen kann. Auch wenn Anhang: Die Z80die Z80 die passende Adresse ausgibt, fühlen sie sich nicht mehr angesprochen. Hierdurch kann man dann mehrere Speicherzellen mit den selben Adressen ansprechen. Im Schneider CPC umfassen alle diese Die Speicherkonfiguration im Schneider CPC: BlockBlocks grundsätzlich ein ganzes Speicherviertel, eine Bank-Auswahl bezieht sich also immer nur auf die obersten beiden Adressbits A14 und A15.

Der Gesamtspeicher des Schneider CPC ist dabei wie folgt unterteilt:

&FFFF
+----------------+ +-----------------+ +-----------------+ +- - - - - - - - -
! Bildschirm-    ! ! internes Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM    ! !Erweiterungs-ROMs! ! weitere
! Speicher       ! !Basic-Interpreter! ! (Die Abteilungen des Betriebssystems: AmsdosAMSDOS etc.)   ! ! Erweiterungs-ROMs
+----------------+ +-----------------+ +-----------------+ +- - - - - - - - -
+----------------+
! zentrales RAM  !
!                !
+----------------+
+----------------+ +-----------------+ +----------+ +----------+ +----------+
! zentrales RAM  ! !Zusätzliches RAM ! ! Zus. RAM ! ! Zus. RAM ! ! Zus. RAM !
!                ! ! (nur CPC 6128)  ! ! CPC 6128 ! ! CPC 6128 ! ! CPC 6128 !
+----------------+ +-----------------+ +----------+ +----------+ +----------+
+----------------+ +-----------------+
! unteres RAM    ! !  internes Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM   !
!                ! ! Betriebssystem  !
+----------------+ +-----------------+
&0000

Dabei werden alle Erweiterungs-ROMs, die man am Die Anschlüsse am Schneider CPC: Der Expansion-Port (Systembus)Systembus des Schneider CPC hinten ansteckt, immer im oberen Speicher-Viertel eingeblendet. Eine genauere Untersuchung des Speichers im CPC folgt bei der Behandlung der Die ICs im Überblick: Die ULA 40007, 40008 oder 40010
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die ULA 40007 und 40008 (CPC 464 und 664)
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die ULA 40010 (CPC 6128)
ULA
und des PAL-Bausteins.

Das Umschalten der Speicherbaenke (Neudeutsch: Bankswitching) gestaltet sich aber nicht ganz einfach. So kann ein Programm, das sich in einer bestimmten Speicherbank befindet, diese Die Speicherkonfiguration im Schneider CPC: BankBank nicht selbst ausblenden (beispielsweise, wenn eine Routine im Betriebssystem aus dem unteren RAM lesen will). Sie würde sich ja selbst das Programm unter den Fuessen wegziehen.

Restart-Vektoren im Schneider CPC

Aus diesem Grund hat man nun beim Schneider CPC die Besonderheiten der Z80 im Schneider CPC: Restart-Vektoren im Schneider CPCRestart-Vektoren etwas zweckentfremdet. Mit ihnen werden jetzt neue Befehle simuliert, die Anhang: Die Z80die Z80 nicht kennt. Diese Befehle dienen hauptsächlich dazu, eine Aktion durchzuführen, die Anhang: Die Z80die Z80 zwar im Prinzip beherrscht, wenn da nur nicht die bloeden Speicherbaenke wären!

Der ROM-Konfiguration: RestartsRestart 1 (LOW MAIN FIRMWARE JUMPBLOCK: JUMPER
Die Firmware des Schneider CPC: JUMPER
JUMP
) führt einen Sprung ins untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM aus. Dazu wird das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM eingeblendet und die Adresse für die gewünschte Routine geholt und angesprungen. Diese Adresse wird dabei 'Adressierungsarten der Z80: Unmittelbarunmittelbar' angegeben. In einen Assembler eingegeben, sieht das dann etwa so aus:

Speicheraufteilung durch ein Vordergrund-Programm: RST 3
LOW KERNEL JUMPBLOCK: 0000 - RST 0: LOW RESET ENTRY
LOW KERNEL JUMPBLOCK: 0008 - RST 1: LOW LOW JUMP
LOW KERNEL JUMPBLOCK: 0010 - RST 2: LOW SIDE CALL
LOW KERNEL JUMPBLOCK: 0018 - RST 3: LOW FAR CALL
LOW KERNEL JUMPBLOCK: 0020 - RST 4: LOW RAM LAM
LOW KERNEL JUMPBLOCK: 0028 - RST 5: LOW FIRM JUMP
LOW KERNEL JUMPBLOCK: 0030 - RST 6: LOW USER RESTART
LOW KERNEL JUMPBLOCK: 0038 - RST 7: LOW INTERRUPT ENTRY
RST
1 DEFW adresse

Der ROM-Konfiguration: RestartsRestart 1 simuliert dabei den Z80-Befehl 'JP_adresse', nur dass vorher das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM eingeblendet wird. Der ROM-Konfiguration: RestartsRestart trifft sogar noch Vorbereitungen, dass nach dem 'RET' der so gerufenen Routine die alte Speicherkonfiguration wieder so hergestellt wird, wie sie es vor dem Aufruf war. Man kann also mit diesem neuen Befehl aus dem unteren RAM eine Routine im unteren Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM aufrufen, was sonst nicht ohne Umweg über's zentrale RAM möglich wäre (Das ist es natürlich auch so nicht. Die Behandlungsroutine für den LOW KERNEL JUMPBLOCK: 0008 - RST 1: LOW LOW JUMPRST_1 liegt deshalb auch im zentralen RAM).

Ähnlich funktionieren auch die ROM-Konfiguration: RestartsRestarts 2, 3 und 5, wobei jedoch 2 und 3 einen Die CPU Z80: Unterprogramm-AufrufeUnterprogramm-Aufruf ersetzen.

Eine weitere Die Fließkomma-Routinen: FunktionenFunktion ist mit dem LOW KERNEL JUMPBLOCK: 0020 - RST 4: LOW RAM LAMRST_4 implementiert: Dieser ersetzt den Z80-Befehl 'LD Operationen: BD5B / 349A / 349A: FLO SUBA,(HL)', wobei immer aus dem RAM gelesen wird. Die umgekehrte Die Fließkomma-Routinen: FunktionenFunktion 'LD (HL),Operationen: BD5B / 349A / 349A: FLO SUBA' ist nicht nötig, da alle Speicher-Schreibbefehle immer ans eingebaute RAM gehen, unabhängig davon, ob an der entsprechenden Stelle gerade ein Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM eingeblendet ist oder nicht.

Das ist andererseits jedoch recht unglücklich, da man den CPC aus diesem Grund nicht so ohne weiteres um ein paar RAM-Baenke erweitern kann. Diese würden ja, wie die Erweiterungs-ROMs, im oberen Speicherviertel eingeblendet. Man kann sie zwar durchaus beschreiben und wieder auslesen, die Schreibbefehle gingen aber automatisch auch ans eingebaute RAM, und da befindet sich normalerweise der Bildschirm.

Da die ROM-Konfiguration: RestartsRestarts unabhängig von der aktuellen Speicherkonfiguration erreichbar sein müssen, ist der unterste Bereich des Kernel-ROMs bis Adresse 63 in's RAM kopiert. Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM und RAM sind hier also identisch.

Non Maskable Interrupt

Obwohl dieser Eingang am Die Anschlüsse am Schneider CPC: Der Expansion-Port (Systembus)Systembus durchgeführt ist, kann man den Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: NMI - non maskable interrupt
Besonderheiten der Z80 im Schneider CPC: Non Maskable Interrupt
NMI
im Schneider CPC normalerweise nicht nutzen. Der Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: NMI - non maskable interrupt
Besonderheiten der Z80 im Schneider CPC: Non Maskable Interrupt
NMI
wird nicht benutzt, da es einige Routinen gibt, bei denen ein Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt das Timing empfindlich stören würde. Solche Stellen sind beispielsweise die Kassetten- und Disketten-Schreib-und -Lese-Operationen und die Programmierung des Sound-Chips.

Wer ihn dennoch benutzen will, muss sich eine eigene Behandlungsroutine im RAM schreiben. Dann muss er aber auch sicherstellen, dass das untere Kernel-ROM nie eingeblendet wird, weil man die Änderung ja schlecht auch im Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM vornehmen kann. Etwas genauer ausgedrückt: Man muss sich das Betriebssystem komplett neu schreiben und im RAM ablegen. Alternativ dazu besteht nur die Möglichkeit, das neue Betriebssystem in ein Die Anschlussbelegungen der wichtigsten ICs im CPC: Die EPROMs 27128 und 27256EPROM zu brennen und mit dem Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM im Computer auszutauschen oder, mit einer entsprechenden Schaltungslogik, hinten am Die Anschlüsse am Schneider CPC: Der Expansion-Port (Systembus)Systembus anzustecken (das geht, man kann von außen auch das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM ausblenden).

normaler Interrupt

Anhang: Die Z80Die Z80 wird im Schneider CPC im Die CPU Z80: Die verschiedenen Interrupt-Modi der Z80
Die verschiedenen Interrupt-Modi der Z80: IM0 - Interrupt-Modus 0
Die verschiedenen Interrupt-Modi der Z80: IM1 - Interrupt-Modus 1
Die verschiedenen Interrupt-Modi der Z80: IM2 - Interrupt-Modus 2
Interrupt-Modus
1 betrieben. Aus diesem Grund führt sie mit jedem Interruptsignal (300 mal pro Sekunde) einen ROM-Konfiguration: RestartsRestart 7 durch. An der entsprechenden Adresse 56 (im Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM und im RAM identisch!) steht jedoch nur ein Sprung zu der eigentlichen Routine im ungebankten, zentralen RAM.

Hier wird mittels eines Tricks der normale, intern von der Die ICs im Überblick: Die ULA 40007, 40008 oder 40010
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die ULA 40007 und 40008 (CPC 464 und 664)
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die ULA 40010 (CPC 6128)
ULA
erzeugte Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt von externen Interrupt-Anforderungen von Geräten am Die Anschlüsse am Schneider CPC: Der Expansion-Port (Systembus)Systembus unterschieden. Dieser Trick ist verantwortlich dafür, dass man das AF-Registerpaar aus Die CPU Z80: Der zweite Registersatz
ROM-Konfiguration: der zweite Registersatz
dem zweiten Registersatz
normalerweise nicht benutzen kann.

Externe Interruptquellen dürfen ihr Interruptsignal erst zurücknehmen, wenn ihre zugehörige Treibersoftware sie dazu explizit auffordert. Der interne Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt wird dagegen sofort zurückgenommen, sobald die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
die Interrupt-Behandlung aufgenommen hat. Das wird in der normalen Interrupt-Routine getestet, indem in der Routine selbst eine Interrupt-Behandlung wieder zugelassen wird. Steht das Interrupt-Signal noch an, ist es ein externer Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt, und in der Interrupt-Routine erfolgt eine weitere Unterbrechung, die dann die Behandlungs-Routine für den externen Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt aufruft.

Dieser Trick macht nun allerdings den eifrigen Entwicklern von Zusatz-Hardware das Leben schwer: Die Standard-Peripherie-Bausteine für Anhang: Die Z80die Z80 haben nämlich alle das selbe Verhalten wie der interne Ticker-Interrupt.

Anschließend werden in der Interrupt-Routine die Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
BC, DE und HL gegen ihre Pendants im zweiten Registersatz vertauscht. Im LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
'C'-Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
ist dabei immer der passende Wert gespeichert, um mit einem 'OUT (C),C' die momentane Speicherkonfiguration wieder herzustellen. Das wird in der Interrupt-Routine ausgenutzt, da diese auch das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM einblenden muss, um hier einige Routinen abzuarbeiten.

Busverbindung im (Mikro-)Sekundentakt

Die größte Eigenart, zu die man Anhang: Die Z80die Z80 im Schneider CPC gezwungen hat, ist aber die Verwendung des WAIT-Einganges der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
. Normalerweise gibt dieser Eingang langsamen Speichern (vor allem irgendwelchen Uralt-Eproms) und langsamen Peripherie-Geräten die Möglichkeit, die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
auf ihr gemaechliches Tempo herunterzubremsen. Solange sie ihre Daten noch nicht bereit haben, legen sie diesen Eingang einfach auf Null-Potential, wodurch die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
einfach mitten im Befehl so lange Wartetakte einlegt, bis der WAIT-Eingang wieder positiv wird.

Im CPC erfüllt er diese Aufgabe zwar auch noch, und er ist auch zum Systembus-Stecker durchgeführt. Die Hauptaufgabe dieses Einganges ist es jedoch, der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
nur genau einmal in jeder Mikrosekunde einen Zugriff auf die Speicher-ICs zu erlauben. Die Speicher-Schreib- und -Lade-Zyklen der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
Z80
können ja (solange vom WAIT-Eingang kein Gebrauch gemacht wird) 3 oder 4 Takteperioden lang sein. Zusätzlich greift Anhang: Die Z80die Z80 im Befehlshole-Zyklus (M1) sogar zweimal zu: Einmal, um ein Befehlsbyte aus dem Speicher zu holen und direkt danach die Refresh-Adresse für die dynamischen RAMs.

Im Schneider CPC ist das nun alles gaaanz anders:

Die Adressen zu den eingebauten dynamischen RAMs sind über Multiplexer geführt, mit denen sie zwischen den Adressleitungen von der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
und vom Video-Controller umgeschaltet werden können. Dieses Umschalten übernimmt das Gate Datenspeicherung und Datenstrukturen: ArraysArray. Da der Video-Controller pro Mikrosekunde zwei Datentypen: Bytes
Datenbreite: Bytes
Bytes
aus dem Bildwiederholspeicher benötigt und dabei unbedingten Vorrang vor der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
hat (die Punkte im Monitorbild sollen ja nicht hin- und hertanzen) gibt er den Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takt
an: Zwei Datentypen: Bytes
Datenbreite: Bytes
Bytes
für den Die ICs im Überblick: Der CRTC HD 6845
Die Anschlussbelegungen der wichtigsten ICs im CPC: Der CRTC HD 6845
Die Bildausgabe: Der CRTC HD 6845
CRTC
und dann, ganz kurz, auch eins für die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
. Um der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
Z80
dabei diesen Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takt
aufzuzwingen, wird sie mittels WAIT-Eingang synchronisiert: Drei Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takte
lang wird dieser Eingang vom Gate Datenspeicherung und Datenstrukturen: ArraysArray auf Null-Potential gezogen, nur jeden vierten Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takt
darf die Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
CPU
wieder lospreschen. Da der Eingangstakt für Anhang: Die Z80die Z80 genau vier MHz beträgt, dauern 3+1=4 Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takte
genau eine Mikrosekunde.

Nun leidet die Verarbeitungsgeschwindigkeit der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
Z80
zum Glück nicht allzu arg unter diesen Bedingungen: Viele Buszugriffe (Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: M1 - Machine Cycle OneM1 und Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: IORQ - Input/Output requestIORQ) dauern ja eh vier Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takte
, und werden gar nicht beeinflusst. Anhang: Die Z80Die Z80 testet den WAIT-Eingang ja nur einmal pro Buszugriff. War ein Zyklus genau 4 Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takte
lang, fällt der nächste Wait-Test genau wieder in die Lücke. Die restlichen 3-Takt-Zugriffe werden lediglich um einen weiteren Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Takt
Erklärung der Anschlussbelegung: Takt
Erklärung zu den verwendeten Bezeichnungen: Takt
Takt
gestreckt. Grob überschlagen ergibt sich für Anhang: Die Z80die Z80 dadurch eine effektive Taktfrequenz von 3,3 MHz, was heißen soll, dass sie ihre Programme noch etwa so schnell wie ein ungebremster Verwandter mit 3,3 MHz abarbeitet.

Bei zeitkritischen Aufgaben (Kassetten-Lade- und -Schreib-Operationen beispielsweise) muss man aber wissen, wie lang die einzelnen Befehle nun wirklich für ihre Abarbeitung benötigen. Dafür sind dann die Tabellen in der einschlägigen Literatur zur Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
Z80
nicht mehr zu gebrauchen. Im AnhangAnhang dieses Buches sind deshalb die beim Schneider CPC gültigen Zeiten zusammengestellt.

Peripherie-Adressierung

Die letzte, ungewöhnliche Behandlung, die sich Anhang: Die Z80die Z80 im Schneider CPC gefallen lassen musste, wurde auch bereits erwähnt: Normalerweise adressiert Anhang: Die Z80die Z80 die Peripherie-Bausteine nur mit der unteren Hälfte des Adressbusses. Bei den meisten I/O-Befehlen ist jedoch auch bekannt, was dabei auf der oberen Hälfte ausgegeben wird. So wird beispielsweise bei

OUT (nn),Operationen: BD5B / 349A / 349A:  FLO SUBA   und   IN Operationen: BD5B / 349A / 349A:  FLO SUBA,(nn)

nicht nur die angegebene Adresse nn auf Erklärung der Anschlussbelegung: A0 bis A7A0 bis A7 ausgegeben, sondern auch das Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
Operationen: BD5B / 349A / 349A: FLO SUBA auf der oberen Adresshälfte.

Viel interessanter ist es jedoch noch bei den I/O-Befehlen, die das C-Register als Portadresse benutzen:

OUT (C),Die Tonausgabe: Die möglichen Hüllkurvenformen  (Reg. 13)reg   und IN Die Tonausgabe: Die möglichen Hüllkurvenformen  (Reg. 13)reg,(C)

Hierbei wird ein beliebiges Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
über den I/O-Port BC eingelesen bzw. ausgegeben. Also: Das C-Register liegt, wie angegeben, auf Erklärung der Anschlussbelegung: A0 bis A7A0 bis A7 an, und das B-Register auf Erklärung der Anschlussbelegung: A8
Der Zeichensatz des Schneider CPC: &A8 = 168
A8
bis A15.

Im Schneider CPC wird nun ausschließlich mit diesen beiden Befehlen gearbeitet. Dabei interessiert noch nicht einmal, dass das C-Register auf der unteren Adresshälfte liegt, benutzt wird (mit einer Einschränkung) ausschließlich das obere Datentypen: Bytes
Datenbreite: Bytes
Byte
! Wenn man also im CPC-Betriebssystem ständig auf den Befehl 'OUT (C),C' trifft, muss man sich vor Augen Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: Halthalten, dass der benutzte Effekt eher einem (nicht existierenden) Befehl 'OUT (LOW KERNEL JUMPBLOCK: 000B: LOW KL LOW PCHL
LOW KERNEL JUMPBLOCK: 001B: LOW KL FAR PCHL
LOW KERNEL JUMPBLOCK: 003B: LOW EXT INTERRUPT
B
),C' entspricht.

Wieso man bei Amstrad auf diese Idee verfallen ist, ist nicht ganz klar. Sicher ist zumindest, dass man so eine volle 16-Bit-Adresse auch für die I/O-Programmierung schaffen wollte. Es ist nämlich eine ausgesprochen praktische Unart, bei der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
Z80
die Portadressen nicht vollständig auszudecodieren. Jedes Adress-Bit wird einfach einem bestimmten Peripherie-Baustein zugeordnet. Normalerweise sind bei einem I/O-Zugriff alle Adressbits auf 1 gesetzt. Nur Hardware-Basteleien: Das 8. Bitdas Bit für den Baustein, den man ansprechen will, wird auf 0 gesetzt. Dadurch spart man sich eine ganze Menge an Decodier-Logik: Man braucht ja nur noch das IORQ-Signal und das entsprechende Adressbit zu verknüpfen, und erhält direkt ein Chip-Select-Signal für das IC.

Interessant wird es aber, wenn man sich die verwendeten Adressbits anschaut: Alle (!) im CPC verwendeten Bausteine werden mit Adressleitungen aus dem oberen Datentypen: Bytes
Datenbreite: Bytes
Byte
angesprochen. Das untere Adressbyte ist (bis auf eine Ausnahme) immer völlig ohne Belang. Da hätte man ebensogut auch beim unteren Adressbyte, und damit beim Standard-Verhalten der Die ICs im Überblick: Die CPU Z80
Das Innenleben der CPC-Rechner: Die CPU Z80
Die Anschlussbelegungen der wichtigsten ICs im CPC: Die CPU Z80
Z80
bleiben können. So hat man sich aber unter Anderem die Möglichkeit von Block-I/O-Transfers verbaut: Die benutzen nämlich das C-Register als Portadresse und das B-Register als Zähler. Und dass man dann mit dem B-Register nichts auf den oberen Adressleitungen anfangen kann, ist nur zu offensichtlich.

Es gibt bei der Besonderheiten der Z80 im Schneider CPC: Peripherie-AdressierungPeripherie-Adressierung allerdings eine Ausnahme, bei der auch das untere Adressbyte ausgewertet wird: Die Adressleitung A10 selektiert den Die Anschlüsse am Schneider CPC: Der Expansion-Port (Systembus)Expansion-Port. Da man hier ja ziemlich viel anschließen kann, wird über das untere Datentypen: Bytes
Datenbreite: Bytes
Byte
zusätzlich die Auswahl des angesprochenen Gerätes vorgenommen. Das hätte aber genausogut umgekehrt sein können: Auswahl mit einer Leitung aus der unteren Hälfte und ausnahmsweise eine Zusatzauswahl mit dem oberen Adressbyte.

Das ist zwar ein Schönheitsfehler in diesem ansonsten recht gut durchdachten Gerät, mithin aber einer von denen, mit denen man noch am leichtesten leben kann. Befehlssatz der Z80 sortiert nach Funktionen: Block-I/O-BefehleBlock-I/O-Befehle werden ohnehin nur recht selten benötigt. Viel störender sind da schon Hardware-Basteleien: Das 8. Bitdas 8. Bit am Die Anschlüsse am Schneider CPC: Der Drucker-PortDruckeranschluss oder die verwehrte externe RAM-Erweiterung.

Valid HTML   Valid CSS