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-StatusROM-Status, um den sich Speicher und Peripherie: Die ULA Die Bildausgabe: Die ULAdie ULA kümmert, und die ROM-Auswahl (Selektion). Der ROM-Konfiguration: ROM-Status Anschluss eines Zusatz-ROM: ROM-StatusROM-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.
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-SelektionROM-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.
Der ROM-Konfiguration: ROM-Status Anschluss eines Zusatz-ROM: ROM-StatusROM-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-StatusROM-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.
Im normalen Betrieb enthält das BC-Register Die CPU Z80: Der zweite Registersatz ROM-Konfiguration: der zweite Registersatzdes 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 Z80Z80 ständig den passenden Wert, um mit OUT (C),C den aktuellen ROM-Konfiguration: ROM-Status Anschluss eines Zusatz-ROM: ROM-StatusROM-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-StatusROM-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-StatusROM-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 INTERRUPTB'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 INTERRUPTB'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 Registersatzdes 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 INTERRUPTB'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 INTERRUPTB'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.
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 Z80Z80 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 JUMPBLOCKLOW 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-StatusROM-Status und eventuell auch die ROM-Konfiguration: ROM-Selektion Anschluss eines Zusatz-ROM: ROM-SelektionROM-Selektion so einstellen, wie es das Grundlagen: UnterprogrammeUnterprogramm benötigt.
Das Grundlagen: UnterprogrammeUnterprogramm 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 Registersatzden 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 Z80Z80 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 Registersatzden 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 !!!'
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: BasicBasic- | | 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.|
+-------------+ +-------------+
|