Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
z9001:cpm:64kmodul [2013/05/02 14:19] – angelegt volkerp | z9001:cpm:64kmodul [2020/03/19 13:47] (aktuell) – [64K-SRAM-Modul U. Zander] volkerp | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== 64K-RAM-Modul ====== | ====== 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, | ||
+ | |||
+ | |||
+ | <ditaa noedgesep> | ||
+ | E800 +---------+ | ||
+ | | Hi-RAM | | ||
+ | | 10K | | ||
+ | C000 +---------+ | ||
+ | | | | ||
+ | | 16K | | ||
+ | 8000 +---------+---------+ | ||
+ | | Bank 1 | Bank 2 | | ||
+ | | 16K | 16K | | ||
+ | 4000 +---------+---------+ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Das Modul wird über I/ | ||
+ | |||
+ | * 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/ | ||
+ | * Schreibzugriff auf Port 07h: Zuschaltung RAM-Bereich C000H-E7FFh (RAM ist les- und schreibbar (R/ | ||
+ | |||
+ | Nach Reset ist Bank 1 aktiv, der hohe RAM im Bereich C000H-E7FFh ist unsichtbar (hier ist das Boot-ROM-Modul aktiv) | ||
+ | |||
+ | **Hinweis**: | ||
===== Robotron ===== | ===== Robotron ===== | ||
- | RAM-Modul 1.6640.01080 | + | 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/ | ||
+ | Schreibzugriff auf Port 07h: Zuschaltung RAM-Bereich 4000H-E7FFh (RAM ist les- und schreibbar (R/ | ||
+ | Nach Reset ist Bank 1 aktiv, der hohe RAM im Bereich 4000H-E7FFh ist unsichtbar (hier ist das Boot-ROM-Modul aktiv) | ||
===== Rossendorf ===== | ===== Rossendorf ===== | ||
- | ===== Modifikation | + | 64K-DRAM-Modul 5285.0015 |
+ | |||
+ | {{z9001: | ||
+ | |||
+ | Das Modul wird über I/ | ||
+ | |||
+ | 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/ | ||
+ | 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:// | ||
+ | |||
+ | 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:// | ||
+ | |||
+ | 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/ | ||
+ | Schreibzugriff auf Port 07h: Zuschaltung RAM-Bereich C000H-E7FFh (RAM ist les- und schreibbar (R/ | ||
+ | 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:// | ||
+ | |||
+ | 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 [[z9001: | ||
+ | * CMOS-RTC Echtzeituhr nach [[z1013: | ||
+ | |||
+ | Anzeige: | ||
+ | |||
+ | rote LED | ||
+ | grüne LED RAM 8000-BFFF aktiv | ||
+ | gelbe LED Shadow-RAM 4000-7FFF aktiv | ||
+ | 7-Segment-Anzeige | ||
+ | Dezimalpunkt der Zehnerstelle | ||
+ | Dezimalpunkt der Einerstelle | ||
+ | |||
+ | |||
+ | Bedeutung der Schalter, wenn geschlossen/ | ||
+ | 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, | ||
+ | |||
+ | |||
+ | 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 | ||
+ | |||
+ | ^ I/O-Adresse ^ Bedeutung ^ | ||
+ | | 04H | Setzen RAM-Bank 0 (Vordergrund-RAM), | ||
+ | | 05H | Setzen RAM-Bank 1 (Hintergrund-RAM), | ||
+ | | 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, | ||
+ | | 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) | | ||
+ | |||
+ | <ditaa noedgesep> | ||
+ | RAM | ||
+ | |||
+ | E800 +---------+ | ||
+ | | Hi-RAM | | ||
+ | | 10K | | ||
+ | C000 +---------+ | ||
+ | | | ||
+ | | 16K | | ||
+ | 8000 +---------+---------+ +---------+---------+ | ||
+ | | Bank 0 | Bank 1 | | Bank 0 | Bank 1 | | ||
+ | | 16K | 16K | | 16K | 16K | | ||
+ | 4000 +---------+---------+ +---------+---------+ | ||
+ | 1. 64K-RAM | ||
+ | |||
+ | ROM | ||
+ | |||
+ | E800 +---------+---------+ | ||
+ | | ROM | Hi-RAM | | ||
+ | D7FF | | ||
+ | | 10K | ROM 6k | ... | 10K | ROM 6k | | ||
+ | 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, | ||
+ | |||
+ | ===== Kombi-Modul U. Zander ===== | ||
+ | |||
+ | Auch das [[z9001: | ||
+ | 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/ | ||
+ | |||
+ | |||
+ | ====== 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 {{: | ||
+ | * Korrektur Schaltbild {{: | ||
+ | |||
+ | s.a. http:// | ||
+ | ===== 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: | ||
+ | |||
+ | {{: | ||
+ | zusätzliche Verbindung am 64K-RAM-Nachbau-Modul (Leiterseite), | ||
+ | **Wegen der Zweckentfremdung der Signale A27 (BAI-BAO = BUSAK) dürfen umgebaute RAM-Module nicht mehr auf dem ersten Steckplatz gesteckt sein!!** | ||