Dies ist eine alte Version des Dokuments!


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.

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)

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

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)

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
  • CMOS-Uhr (RTC)

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 als 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. Rückgeschaltet wird mit OUT 76H (= Zustand nach RESET).

Auch das Kombimodul 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

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 habt einen Designfehler. Bei einer speziellen Konstellationen (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 Leierzügen und das einfügen von 3 Drahtbrücken:


links: fehlerhaftes Signal bei Port 07h, rechts: Umbau des 64-Moduls

s.a. http://www.sax.de/~zander/z9001/tip/tipf.html

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 dürfen nicht mehr auf dem ersten Steckplatz gesteckt sein!!

  • z9001/cpm/64kmodul.1489757508.txt.gz
  • Zuletzt geändert: 2017/03/17 13:31
  • von volkerp