64K-RAM-Modul
Um CP/M mit maximalem Speicher (und der originalen Software) nutzen zu können, wird ein spezielles 64K-Schalt-RAM-Modul benötigt. Dieses kann über OUT-Befehle auch den ansonsten vom ROM-Modul bzw. internen BASIC genutzten Speicherbereich von C000-E7FF mit nutzen.
Das 64K-RAM-Modul enthält RAM-Speicher von 4000h-E7FFh, der Bereich von 4000h-7FFFh ist doppelt vorhanden. Diese 2. Bank, der „Schatten-RAM“ wird vom CP/M-BIOS genutzt. Hier wir ein Großteil des BIOS abgelegt, außerdem befindet sich in diesem Bereich der Floppy-Disk-Puffer. Damit ist der im Hauptspeicherbereich liegende Teil des BIOS bedeutend kleiner und so steht viel mehr Speicher für CP/M zur Verfügung (d.h. ein größerer TPA-Bereich).
Das Modul wird über I/O-Adressen abgesteuert:
- Schreibzugriff auf Port 04h: Vordergrund-RAM aktiv (Bank 1)
- Schreibzugriff auf Port 05h: Hintergrund-RAM aktiv (Bank 2, Shadow-RAM)
- Schreibzugriff auf Port 06h: Abschaltung RAM-Bereich C000H-E7FFh (RAM ist nur beschreibbar (W/O))
- Schreibzugriff auf Port 07h: Zuschaltung RAM-Bereich C000H-E7FFh (RAM ist les- und schreibbar (R/W))
Nach Reset ist Bank 1 aktiv, der hohe RAM im Bereich C000H-E7FFh ist unsichtbar (hier ist das Boot-ROM-Modul aktiv)
Hinweis: Sowohl von Rossendorf als auch von Robotron werden die im Modul vorhandenen 32k-Grund-RAM erst im Zusammenhang mit der RAM-Umschaltung aktiviert, d.h. der weggeschaltete RAM-Bereich geht von 4000H-E7FFh! Damit ist ein originales 64K-RAM-Modul leider nicht als RAM-Modul-Ersatz für den normalen OS-Betrieb mit BASIC nutzbar. Die Nach- und Umbauten vermeiden dies, so dass diese 64K-RAM-Module nach dem Einschalten des KCs 2 16K-RAM-Module vollständig ersetzen.
Robotron
64K-RAM-Modul 1.6640.01080
Schreibzugriff auf Port 04h: Vordergrund-RAM aktiv (Bank 1)
Schreibzugriff auf Port 05h: Hintergrund-RAM aktiv (Bank 2, Shadow-RAM)
Schreibzugriff auf Port 06h: Abschaltung RAM-Bereich 4000H-E7FFh (RAM ist nur beschreibbar (W/O))
Schreibzugriff auf Port 07h: Zuschaltung RAM-Bereich 4000H-E7FFh (RAM ist les- und schreibbar (R/W))
Nach Reset ist Bank 1 aktiv, der hohe RAM im Bereich 4000H-E7FFh ist unsichtbar (hier ist das Boot-ROM-Modul aktiv)
Rossendorf
64K-DRAM-Modul 5285.0015
Das Modul wird über I/O-Adressen abgesteuert:
Schreibzugriff auf Port 04h: Vordergrund-RAM aktiv (Bank 1)
Schreibzugriff auf Port 05h: Hintergrund-RAM aktiv (Bank 2, Shadow-RAM)
Schreibzugriff auf Port 06h: Abschaltung RAM-Bereich 4000H-E7FFh (RAM ist nur beschreibbar (W/O))
Schreibzugriff auf Port 07h: Zuschaltung RAM-Bereich 4000H-E7FFh (RAM ist les- und schreibbar (R/W))
Nach Reset ist Bank 1 aktiv, der hohe RAM im Bereich 4000H-E7FFh ist unsichtbar (hier ist das Boot-ROM-Modul aktiv)
Nachbau U. Zander
http://www.sax.de/~zander/projekte/z9ram1b.html
Neuauflage des 64K-RAM-Modul von Robotron:
U. Zander hat eine Platine des 64K-RAM-Modul nachfertigen lassen.
Die Platine wurde nicht an modernere Bauelemente angepaßt. Die einzige Erweiterung ist die Anzeige der aktuellen RAM-Konfiguration durch LEDs.
Sowohl von Rossendorf als auch von Robotron wurden die im Modul vorhandenen 32k-Grund-RAM erst im Zusammenhang mit der RAM-Umschaltung aktiviert. Im neuen 64K-RAM-Modul ist dieser Nachteil behoben.
Außerdem gibt es von U. Zander eine Umbauanleitung eines 16k-Moduls zum 64k-Modul:
http://www.sax.de/~zander/z9001/ex/ram64e.html
Schreibzugriff auf Port 04h: Vordergrund-RAM aktiv (Bank 1)
Schreibzugriff auf Port 05h: Hintergrund-RAM aktiv (Bank 2, Shadow-RAM)
Schreibzugriff auf Port 06h: Abschaltung RAM-Bereich C000H-E7FFh (RAM ist nur beschreibbar (W/O))
Schreibzugriff auf Port 07h: Zuschaltung RAM-Bereich C000H-E7FFh (RAM ist les- und schreibbar (R/W))
Nach Reset ist Bank 1 aktiv, der hohe RAM im Bereich C000H-E7FFh ist unsichtbar (hier ist das Boot-ROM-Modul aktiv)
64K-SRAM-Modul U. Zander
http://www.sax.de/~zander/projekte/sram64.html
Das 64K-SRAM-Modul ist eine Eigenentwicklung von U. Zander. Es enthält:
- 128K RAM, davon jeweils 58K in zwei Bänken nutzbar
- ROM-Bank, 128K bis 1MB ROM, in 16 bis 128 Bänken nutzbar analog TU-ROM-Bank
- CMOS-RTC Echtzeituhr nach O. Matthäi (nicht kompatibel zur GIDE-RTC).
Anzeige:
rote LED Hi-RAM C000-E7FF aktiv grüne LED RAM 8000-BFFF aktiv gelbe LED Shadow-RAM 4000-7FFF aktiv 7-Segment-Anzeige aktive ROM-Bank-Nummer Dezimalpunkt der Zehnerstelle ROM-Bank ist aktiv Dezimalpunkt der Einerstelle 2. RAM-Bereich ist aktiv
Bedeutung der Schalter, wenn geschlossen/on (Achtung: Nummerierung der Schalter ist anders als die der Steckbrücken!):
X2 (5) /ROMDI für KC87 (on) X3 (4) Gesamt-RAM 48K (on) X4 (3) ROM abgeschaltet (off) X5 (2) RTC abgeschaltet (off) X6 (1) ADR19 für EPROM 27C040 und 27C080 (M28F101 -> On)
Ein 128K-Flash-Eprom M28F101 funktioniert, 29C020 und 29C040 leider nicht. Hier müsste man Pin 1/Pin31 ändern (A18,A19).
die CMOS-Uhr ist leider nicht kompatibel zur GIDE-RTC.
Für die Zusammenarbeit mit dem Mega-Modul muss auch auf diesem Modul die Verbindung zwischen X1:27B–27B getrennt und ein Draht von D8 (unterer DL074) Pin 6 an X1:27B gelegt werden. Alternativ gibt es eine Variante der Mega-Flash-Software, die auf diesem Modul läuft und das Mega-Flash-Modul überflüssig macht.
I/O-Adresse | Bedeutung |
---|---|
04H | Setzen RAM-Bank 0 (Vordergrund-RAM), Adressbereich 4000H bis 7FFFH |
05H | Setzen RAM-Bank 1 (Hintergrund-RAM), Adressbereich 4000H bis 7FFFH |
06H | RAM ist W/O, Adressbereich C000H bis E7FFH |
07H | RAM ist R/W, Adressbereich C000H bis E7FFH |
60H-6FH | RTC (CMOS-Uhr) |
74H | Modul-Disable, arbeitet wie ein Flipflop |
75H | Setzen der ROM-Bank, 0 bis max. 7FH (128 Bänke) |
76H | Einschalten des 1. 64K-RAM, Grundzustand |
77H | Einschalten des 2. 64K-RAM |
78H | Weiterschalten der ROM-Bank beim Suchen, 0 bis max. 7FH (128 Bänke) |
Beim Steuern der Zustände mit OUT-Befehlen werden bis auf OUT 75H keine Werte übergeben. OUT 75H wird zur Steuerung der ROM-Bänke benutzt.
Der SRAM-Bereich (2x 16K von 4000H bis 7FFFH und 26K von 8000H bis E7FFH) steht doppelt zur Verfügung und kann bei Bedarf umgeschaltet werden.
RAM-Bereich 4000H bis BFFFH (32K):
Der Bereich 4000H bis 7FFFH ist doppelt belegt und steht z.B. als Vordergrund-RAM und als Hintergrund-RAM zur Verwendung unter dem Rossendorfer CP/M zur Verfügung. OUT 4 schaltet den Vordergrund-RAM ein, das ist auch der Grundzustand nach RESET. OUT 5 schaltet den Hintergrund-RAM sichtbar.
RAM-Bereich C000H bis E7FFH (10K):
Die ROM-Bank benutzt 10K und 6K große Bänke. Ist die ROM-Bank nur 6K groß, sind die verbleibenden 4K des Hi-RAM sichtbar.
Um den 128K-SRAM-Schaltkreis optimal auszulasten, kann mit OUT 77H ein zweiter, gleich großer RAM von 4000H bis E7FFH genutzt werden (1. und 2. RAM-Bank). Rückgeschaltet wird mit OUT 76H (= Zustand nach RESET).
Kombi-Modul U. Zander
Auch das Kombi-Modul bietet 64K Rossendorf-kompatiblen Speicher. Je nach eingesetztem RAM stehen im Unterschied zum 64K-SRAM-Modul 2 bzw. 8 RAM-Bänke a 42k+16k zur Verfügung, die leicht anders angesteuert werden:
76H n - RAM-Bank n setzen (n =0..1 bzw. 0..7) 77H - Modul-Disable/Enable
Modifikationen
IORQ-Problem
Klaus Junge hat durch geeignete Meßtechnik einen störenden Fehler im 64K-Schalt-RAM-Modul gefunden:
Die originale Schaltung sowohl des Rossendorfer 64K-Schalt-RAM-Moduls als auch des Robotron-64K-Schalt-RAM-Moduls hat einen Designfehler. Bei einer speziellen Konstellation (XX04..XX07 auf dem Adressbus und gleichzeitiger Interrupt-Anforderung) liegt das M1-Signal noch vor dem IORQ-Signal an Gatter XX. Dadurch wird fälschlicherweise ein Portzugriff erkannt; das Modul schaltet um; der KC hängt sich auf.
Abhilfe schafft eine Verzögerung des M1-Signals durch 2 auf der Leiterplatte verfügbare Gatter. Der Umbau beschränkt sich auf das Trennen von 3 Leiterzügen und das einfügen von 3 Drahtbrücken:
links: fehlerhaftes Signal bei Port 07h, rechts: Umbau des 64-Moduls
- Korrektur Leiterplatte z9ram1b-korr1.pdf
- Korrektur Schaltbild z9ram1b_s-korr.pdf
Abschaltsignal für Megamodul
Wird ein Megamodul als Bootstrap-Lader genutzt, muss das Megamodul abschaltbar sein. U. Zander hat eine Lösung entwickelt, die das Abschaltsignal für das ROM-Modul aus dem 64K-Schalt-RAM-Modul bekommt. Über die Signalleitung 27 des Systembusses (original BAO-BAI) wird das Abschaltsignal vom RAM-Modul X1:27B an das davorsteckende Mega-Modul X1:27A durchgereicht.
Das Mega-Modul muss als erstes Modul in den Modulschacht gesteckt werden, direkt gefolgt vom 64K-RAM-Modul!
Der Umbau des 64K-Schalt-RAM-Moduls ist trivial: Das Abschaltsignal (58K-RAM-Signal) des 64K-RAM-Nachbau-Moduls wird von D7A/6 an X1:27B gelegt.
Beim 64K-SRAM-Modul muss die Verbindung zwischen X1:27A–27B getrennt und ein Draht von D8 (unterer DL074) Pin 6 an X1:27B gelegt werden.
zusätzliche Verbindung am 64K-RAM-Nachbau-Modul (Leiterseite), 64K-SRAM-Modul (rechts)
Wegen der Zweckentfremdung der Signale A27 (BAI-BAO = BUSAK) dürfen umgebaute RAM-Module nicht mehr auf dem ersten Steckplatz gesteckt sein!!