Inhaltsverzeichnis

Kombi-Modul

Das Kombi-Modul ist eine Entwicklung von U. Zander (http://www.sax.de/~zander/z9001/module/kombi.html). Es umfasst 4 einzelne Komponenten auf einer 95 mm x 170 mm großen Leiterplatte (Modul-Format wie Programmier-Modul):

Damit sind alle Komponenten auf einem Modul, um mit diesem CP/M am Z9001 nutzen zu können!

Beschreibung

DIP-Schalter:

v.l.n.r.
1 (über x3) - ON	MODOFF	schaltet die ROM-Bank des Moduls aus 
                              (z.B. bei Verwendung des MEGA-Moduls)
2 (über x4) - ON	KC87	schaltet /ROMDI aktiv für den Betrieb am KC87
3 (über x5) - ON	48K	schaltet den RAM ein
4 (über x6) - ON	RTCOFF	schaltet die CMOS-Uhr aus

Achtung: Die Nummern auf dem Schalterblock sind genau andersherum angeordnet!

Jumper re.u.:F Flash oder E-PROM
Ein 128K-Flash funktioniert.

Anzeige:

gelbe LED                      Hintergrund-RAM 4000-7FFF aktiv
grüne LED                      RAM 8000-BFFF aktiv
rote LED                       Hi-RAM C000-E7FF aktiv
7-Segment-Anzeige              aktive ROM-Bank-Nummer
Dezimalpunkt der Zehnerstelle  ROM-Bank ist aktiv
Dezimalpunkt der Einerstelle   2. RAM-Bereich ist aktiv

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 Hi-RAM ist W/O, Adressbereich C000H bis E7FFH
07H Hi-RAM ist R/W, Adressbereich C000H bis E7FFH
60H-6FH RTC (CMOS-Uhr)
75H nn Setzen der ROM-Bank, nn = 0 bis max. 7FH (128 Bänke)
76H nn Setzen der RAM-Bank, nn = 0..1 bzw. 0..7 (max. 8 Bänke)
77H nn Modul-Disable/Enable (0 = aus, 1 = ein)
78H Weiterschalten der ROM-Bank beim Suchen, 0 bis max. 7FH (128 Bänke)
98h FDC Datenregister
99h FDC Steueregister
0A0h FDC (Motor Laufwerk 0 ein/aus, Motor Laufwerk 1 ein/aus, Terminal Count aktivieren/deakt., FDC Reset)

Beim Steuern der Zustände mit OUT-Befehlen werden bis auf OUT 75H und OUT 76H keine Werte übergeben. OUT 75H wird zur Steuerung der ROM-Bänke benutzt, OUT 76H zur Steuerung der RAM-Bänke.

RAM-Bereich 4000H bis BFFFH (32K):

Der Bereich 4000H bis 7FFFH ist (je RAM-Bank) doppelt belegt und steht z.B. als Vordergrund-RAM und als Hintergrund-RAM unter dem Rossendorfer CP/M zur Verfügung. OUT 4 schaltet den Vordergrund-RAM Bank 0 ein, das ist auch der Grundzustand nach RESET. OUT 5 schaltet den Hintergrund-RAM Bank 1 sichtbar.
Der Bereich 8000H bis BFFFH ist einmal (je RAM-Bank) vorhanden.

Mit Schalter 3 (48K) kann der RAM-Bereich 4000-BFFF komplett deaktiviert werden.

RAM/ROM-Bereich C000H bis E7FFH (10K):

Ist mit OUT 7 Hi-RAM aktiviert, ist der Bereich C000H bis E7FFH als RAM verfügbar (je RAM-Bank). Ist der obere RAM nicht aktiviert, ist in diesem Bereich die ROM-Bank. 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 (aus der jeweils aktiven RAM-Bank 1..8).

Treiber

Den Speicher als RAM-Disk zu nutzen ist gar nicht so einfach. Zum einen ist er ziemlich zerstückelt, aber das ist das kleinere Problem. Mit dem Umschalten der RAM-Bank wird der gesamte RAM ab 4000h umgeschaltet, mithin auch das BIOS, der Stack etc. Man benötigt daher Umladeroutinen, die den Lese/Schreibcode und auch den DMA-Bereich passend im Speicher umherladen. Ich nutze daher im Bereich 0043h..005Bh eine freie Stelle. Der Standard-DMA-Bereich 0080h-00FFh wird als Transferbereich genutzt, aber vorher gesichert und anschließend wieder restauriert.

Der Treiber ist für Kombi-Modul mit 512k RAM oder 128K RAM sowie für das 64K-SRAM-Modul geeignet, die vorhandene Hardware wird automatisch erkannt. Es werden alle RAM-Bänke außer Bank 0 genutzt, auch der Hintergrund-RAM wird verwendet. Pro RAM-Bank stehen 16k+16k+10k+16k = 58K Speicher zur Verfügung.

Hinweise

1)
Sowohl von Rossendorf als auch von Robotron wurden die im Modul vorhandenen 32k-Grund-RAM erst im Zusammenhang mit der RAM-Umschaltung aktiviert. Im 64K-RAM-Nachbau ist dieser Nachteil behoben. Außerdem gibt es 3 LEDs zur Anzeige des Modulzustands