Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
z9001:cpm:64kmodul [2013/05/02 14:19] – angelegt volkerpz9001: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, 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).
 +
 +
 +<ditaa noedgesep>
 +  E800      +---------+
 +            |  Hi-RAM |
 +            |  10K    |
 +  C000      +---------+
 +            |         |
 +            |  16K    |
 +  8000      +---------+---------+
 +            |  Bank 1 |  Bank 2 |
 +            |  16K    |  16K    |
 +  4000      +---------+---------+
 +</ditaa>
 +
 +
 +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 ===== ===== Robotron =====
  
-RAM-Modul 1.6640.01080+64K-RAM-Modul 1.6640.01080 
 + 
 +{{:z9001:module:ram64_k.jpg?300|}} {{:z9001:module:ram64b_k.jpg?300|}} 
 + 
 +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 ===== ===== Rossendorf =====
  
-===== Modifikation =====+64K-DRAM-Modul 5285.0015 
 + 
 +{{z9001:module:64k_aussen.jpg?300|}}{{z9001:module:64k_leiterplatte.jpg?300|}} 
 + 
 +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 ===== 
 + 
 +{{:z9001:cpm:64k-ram-1.jpg?300|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) 
 + 
 +===== 64K-SRAM-Modul U. Zander ===== 
 + 
 +{{:z9001:cpm:64ksram.jpg?300|}} 
 + 
 +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 [[z9001:module_sonstige:128k_rombank|TU-ROM-Bank]] 
 +  * CMOS-RTC Echtzeituhr nach [[z1013:literatur:practic-90-11-1|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 [[z9001:software:mega|]], 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) | 
 + 
 +<ditaa noedgesep> 
 +RAM 
 + 
 +  E800      +---------+           +---------+           
 +            |  Hi-RAM |            Hi-RAM |           
 +            |  10K    |            10K    |           
 +  C000      +---------+           +---------+           
 +            |                                     
 +            |  16K    |            16K    |           
 +  8000      +---------+---------+ +---------+---------+ 
 +            |  Bank 0 |  Bank 1 | |  Bank 0 |  Bank 1 | 
 +            |  16K    |  16K    | |  16K    |  16K    | 
 +  4000      +---------+---------+ +---------+---------+ 
 +                  1. 64K-RAM            2. 64K-RAM 
 + 
 +ROM 
 + 
 +  E800      +---------+---------+       +---------+---------+ 
 +            |  ROM    |  Hi-RAM |        ROM    |  Hi-RAM | 
 +  D7FF      |         +---------+               +---------+ 
 +            |  10K    |  ROM 6k |  ...  |  10K    |  ROM 6k | 
 +  C000      +---------+---------+       +---------+---------+ 
 +              Bank 0    Bank 1            Bank 126  Bank 127 
 +</ditaa> 
 + 
 +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 [[z9001:module_sonstige: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 ====== 
 + 
 +===== 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: 
 + 
 +{{:z9001:cpm:fehler_64k.gif?380|}} {{:z9001:cpm:umbau_64k_l.gif?300|}}\\ 
 +links: fehlerhaftes Signal bei Port 07h, rechts: Umbau des 64-Moduls 
 + 
 +  * Korrektur Leiterplatte {{:z9001:cpm:z9ram1b-korr1.pdf|}} 
 +  * Korrektur Schaltbild {{:z9001:cpm:z9ram1b_s-korr.pdf|}} 
 + 
 +s.a. http://www.sax.de/~zander/z9001/tip/tipf.html 
 +===== 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. 
 + 
 +{{:z9001:module:64kram-umbau.jpg?250|}} {{:z9001:cpm:64ksram_leiterseite.jpg?250|}}\\ 
 +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.1367504364.txt.gz
  • Zuletzt geändert: 2013/05/02 14:19
  • von volkerp