Das Schneider CPC Systembuch

Das Betriebssystem des Schneider CPC

Die Speicherkonfiguration im Schneider CPC

ROM-Konfiguration

Der zweite und dritte, bei allen Schneider CPCs vorhandene Gesichtspunkt der Speicherkonfiguration betrifft die Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROMs.

Die Die Speicherkonfiguration im Schneider CPC: ROM-KonfigurationROM-Konfiguration unterteilt sich in den ROM-Konfiguration: ROM-Status
Anschluss eines Zusatz-ROM: ROM-Status
ROM-Status
, um den sich Speicher und Peripherie: Die ULA
Die Bildausgabe: Die ULA
die ULA
kümmert, und die ROM-Auswahl (Selektion). Der ROM-Konfiguration: ROM-Status
Anschluss eines Zusatz-ROM: ROM-Status
ROM-Status
legt dabei fest, ob unten das Betriebssystems-ROM und/oder oben irgend ein Die Fließkomma-Routinen: Sonstigessonstiges Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM eingeblendet werden soll.

ROM-Selektion

Welches Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM aber oben tatsächlich eingeblendet wird, hängt von der ROM-Konfiguration: ROM-Selektion
Anschluss eines Zusatz-ROM: ROM-Selektion
ROM-Selektion
ab. Hierfür ist kein spezieller Baustein im Computer zuständig. Vielmehr muss sich jede Erweiterung, die am Die Anschlüsse am Schneider CPC: Der Expansion-Port (Systembus)Expansion-Port des CPC angeschlossen wird, um die Selektion selbst kümmern. Dafür ist im Betriebssystem eine spezielle Speicher und Peripherie: Reservierte und frei verfügbare I/O-AdressenI/O-Adresse vorgesehen:

OUT &DFFF, select
oder binär:
OUT &X110111??.????????, select

Auch hier wird wieder nur unvollständig dekodiert. Eine Real: NullNull auf Adress-Leitung A13 bei einem OUT-Befehl muss das Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM mit der Nummer, die auf den Datenleitungen ausgegeben wird, selektieren. Alle anderen Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROMs müssen abgeschaltet werden. Das Signal Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROMEN am Die Anschlüsse am Schneider CPC: Der Expansion-Port (Systembus)Expansion-Port, das direkt 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
erzeugt wird, darf nur noch beim selektierten Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM dazu führen, dass dieses eingeblendet wird.

ROM-Status

Der ROM-Konfiguration: ROM-Status
Anschluss eines Zusatz-ROM: ROM-Status
ROM-Status
(der sich in den Signalen Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROMEN und Erläuterung zu den Anschlüssen 40 bis 45: 44 - RAMRD (0)RAMRD 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
bzw. am Die Anschlüsse am Schneider CPC: Der Expansion-Port (Systembus)Expansion-Port außert) wird in Registern 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
programmiert. Das geschieht mit einem OUT-Befehl auf der ULA-Adresse, bei dem die Datenbits D6 und D7 beiden auf '0' gesetzt sind:

OUT &7FFF,&X000roumm

Die 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:
Bits
Der Zeichensatz des Schneider CPC: &D0 = 208D0 und D1 'mm' bestimmen dabei gleichzeitig den Bildschirm-Modus und ein gesetztes 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
D4 'r' setzt einen Monitorzeilen-Zähler zurück, über den die Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupts gesteuert werden. D4 sollte deshalb immer auf Real: NullNull gesetzt werden.

Die Datenbits D2 'u' und D3 'o' schließlich bestimmen den ROM-Konfiguration: ROM-Status
Anschluss eines Zusatz-ROM: ROM-Status
ROM-Status
: Ein gesetztes 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
'u' blendet das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM mit dem Betriebssystem aus und ein gesetztes 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
'o' macht das Selbe mit dem oberen Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM. Schreib- und Lesezugriffe in diesem Bereich gehen dann jeweils an die entsprechenden Speicherzellen im RAM.

Ist Hardware-Basteleien: Das 8. Bitdas Bit D2 'u' beziehungsweise Bid D3 'o' nicht gesetzt, also Real: NullNull, so wird bei Lesezugriffen das entsprechende Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM aktiviert. Schreibzugriffe gehen leider auch weiterhin an das eingebaute RAM.

der zweite Registersatz

Im normalen Betrieb enthält das BC-Register Die CPU Z80: Der zweite Registersatz
ROM-Konfiguration: der zweite Registersatz
des zweiten Registersatzes
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
ständig den passenden Wert, um mit OUT (C),C den aktuellen ROM-Konfiguration: ROM-Status
Anschluss eines Zusatz-ROM: ROM-Status
ROM-Status
herzustellen.

Das wird vor allem von der Interrupt-Routine benötigt, die ja zum größten Teil im Betriebssystem, also im unteren Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM untergebracht ist. 300 mal in jeder Sekunde muss deshalb das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM eingeblendet werden, unabhängig davon, welcher ROM-Konfiguration: ROM-Status
Anschluss eines Zusatz-ROM: ROM-Status
ROM-Status
gerade durch das Hauptprogramm eingestellt ist. Nach Abschluss des Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupts muss dann wieder der alte ROM-Konfiguration: ROM-Status
Anschluss eines Zusatz-ROM: ROM-Status
ROM-Status
hergestellt werden, damit das Hauptprogramm nicht im Nirwana landet. Dies lässt sich mit dem Wert aus dem 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
besonders schnell erledigen.

Da die Interrupt-Routine diesen Wert 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
benötigt und auch die anderen Doppelregister des zweiten Register-Satzes verändern kann, darf dieser vom Hauptprogramm normalerweise nicht benutzt werden. Auch das Operationen: BD5B / 349A / 349A: FLO SUBA'F'-Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
wird von der Interrupt-Routine benutzt, um externe Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupts zu erkennen. Normalerweise muss hier das CY-Flag zurückgesetzt sein.

Eine einfache Möglichkeit, die Zweit-Register doch kurzzeitig zu verwenden, ist diese:

; Benutzung Die CPU Z80: Der zweite Registersatz
ROM-Konfiguration: der zweite Registersatz
des zweiten Registersatzes
in einem Assembler-Programm ; ---------------------------------------------------------------- BEISP: DI ; Den Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt verbieten und EXX ; 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' retten (falls es benutzt wird). PUSH BC ; ; Das Mcode-Programm --> Man darf fast keine Betriebssystem-Routine ; und keinesfalls einen ROM-Konfiguration: RestartsRestart benutzen !!! ; POP BC EXX ; 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' restaurieren, AND Operationen: BD5B / 349A / 349A: FLO SUBA ; CY' zurücksetzen (falls benutzt) und EX AF,AF' EI ; einen Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt wieder zulassen.

Ist die Die Z80: Ausführungszeiten für die einzelnen Befehle der Z80Ausführungszeit des Programmes von DI bis EI kürzer als 125 Mikrosekunden (Befehls-Ausführungszeiten im AnhangAnhang!), so kann man sicher sein, dass kein Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt übergangen wurde. Wenn nicht, so kann der Zähler des Betriebssystems nun nachgehen, was meist aber nicht weiter schlimm ist.

Restarts

Nun ist es im Allgemeinen viel zu aufwendig, sich ständig selbst mit dieser ganzen Bank-Schalterei zu beschaeftigen. Deshalb hat man bei Amstrad die Restart-Befehle 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
benutzt, um neue, erweiterte Kommandos bereitzustellen, die dem Programmierer hier die Arbeit abnehmen.

Diese ROM-Konfiguration: RestartsRestarts sind im AnhangAnhang im Kapitel 'THE Überblick: LOW KERNEL JUMPBLOCK
Die Firmware des Schneider CPC: LOW KERNEL JUMPBLOCK
LOW KERNEL JUMPBLOCK
' genau beschrieben. Die wichtigsten dienen aber dazu, einen Z80-CALL- oder -JUMP-Befehl zu ersetzen. Der Vorteil vor den normalen Z80-Befehlen ist dabei, dass diese ROM-Konfiguration: RestartsRestarts vor Aufruf eines Grundlagen: UnterprogrammeUnterprogramms ROM-Konfiguration: ROM-Status
Anschluss eines Zusatz-ROM: ROM-Status
ROM-Status
und eventuell auch die ROM-Konfiguration: ROM-Selektion
Anschluss eines Zusatz-ROM: ROM-Selektion
ROM-Selektion
so einstellen, wie es das Grundlagen: UnterprogrammeUnterprogramm benötigt.

Das Unterprogramm kann dann ganz normal mit 'RET' abschließen, kehrt aber nicht direkt zum rufenden Programm zurück. Vielmehr haben die Restart-Routinen hier vorgesorgt, dass vorher die alte Die Speicherkonfiguration im Schneider CPC: ROM-KonfigurationROM-Konfiguration wieder hergestellt wird.

Dadurch kann man Grundlagen: UnterprogrammeUnterprogramme in anderen Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROMs aufrufen, ohne sich selbst um die Bank-Einstellungen kümmern zu müssen. Speziell die Vektoren im zentralen Sprungbereich, Die Sprungleisten: Der Main Firmware Jumpblockdem 'MAIN FIRMWARE JUMPBLOCK', sind alle mit solchen ROM-Konfiguration: RestartsRestarts gebildet. Diese blenden vor Aufruf einer Firmware-Routine das untere Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM ein und nachher wieder aus, so dass ein Hauptprogramm im RAM (oder in einem oberen Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM) überhaupt nicht bemerkt, dass zwischenzeitlich das Betriebssystems-ROM eingeblendet wurde.

Da die ROM-Konfiguration: RestartsRestarts den normalen Z80-Befehlen 'Maschinencode über HIMEM: CALLCALL' und 'JP' so ähnlich wie möglich werden sollten, dürfen sie auch keine Die Tonausgabe: Das Kontrollregister (Reg. 7)
Die Tonausgabe: Die möglichen Hüllkurvenformen (Reg. 13)
Register
verändern. Das wird hauptsächlich dadurch erreicht, dass die Restart-Routinen Die CPU Z80: Der zweite Registersatz
ROM-Konfiguration: der zweite Registersatz
den zweiten Registersatz
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
für eigene Berechnungen benutzen. In dieser Zeit darf aber kein Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt dazwischenfunken, da dieser ja ebenfalls auf Die CPU Z80: Der zweite Registersatz
ROM-Konfiguration: der zweite Registersatz
den zweiten Registersatz
zugreifen will. Deshalb verbieten alle ROM-Konfiguration: RestartsRestarts kurzzeitig den Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt mit 'DI' und lassen ihn nachher mit 'EI' wieder zu.

'Alle ROM-Konfiguration: RestartsRestarts schalten den Alle noch folgenden Anschlüsse fallen unter die Rubrik STEUER- oder auch CONTROLBUS:: INT - InterruptInterrupt wieder ein !!!'

Speicher-Aufbau der Schneider CPCs

Die folgende Grafik veranschaulicht noch einmal die gesamte Speicherkonfiguration der CPCs, wobei die zusätzlichen RAM-Blocks des CPC 6128 so eingezeichnet sind, wie sie durch den Bank-Manager eingeblendet werden.

+-------------+ +-------------+ +-------------+ +-------------+
|normalerweise| | Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM: Einleitung: BASIC
Anhang: Basic
Basic
- | | Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM: Die Abteilungen des Betriebssystems: AmsdosAmsdos | | weitere | ...... |Video-RAM n3 | | Interpreter | | Einleitung: CP/MCP/M, Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
Logo
| | Zusatz-ROMs | +-------------+ +-------------+ +-------------+ +-------------+ &C000 +-------------+ |normales RAM | | Die Speicherkonfiguration im Schneider CPC: BlockBlock n2 | +-------------+ &8000 +-------------+ +-------------+ +-------------+ +-------------+ +-------------+ |normales RAM | | zus. RAM | | zus. RAM | | zus. RAM | | zus. RAM | | Die Speicherkonfiguration im Schneider CPC: BlockBlock n1 | | Die Speicherkonfiguration im Schneider CPC: BlockBlock z0 | | Die Speicherkonfiguration im Schneider CPC: BlockBlock z1 | | Die Speicherkonfiguration im Schneider CPC: BlockBlock z2 | | Die Speicherkonfiguration im Schneider CPC: BlockBlock z3 | +-------------+ +-------------+ +-------------+ +-------------+ +-------------+ &4000 +-------------+ +-------------+ |normales RAM | | Erläuterung zu den Anschlüssen 40 bis 45: 42 - ROMEN (0)ROM mit dem | | Die Speicherkonfiguration im Schneider CPC: BlockBlock n0 | | Betriebssys.| +-------------+ +-------------+

Valid HTML   Valid CSS