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