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).

Hi-RAM 10K 16K Bank 1 16K Bank 2 16K E800 C000 8000 4000

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 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)
Hi-RAM 10K Hi-RAM 10K 16K 16K Bank 0 16K Bank 1 16K Bank 0 16K Bank 1 16K ROM 10K Hi-RAM ROM 10K Hi-RAM ROM 6k ROM 6k RAM E800 C000 8000 4000 1. 64K-RAM 2. 64K-RAM ROM E800 D7FF ... C000 Bank 0 Bank 1 Bank 126 Bank 127

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).

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

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

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

  • z9001/cpm/64kmodul.txt
  • Zuletzt geändert: 2024/12/05 13:21
  • von volkerp