Etwa 1988 bis 1990 wurde von den Schöpfern unseres geliebten KC aus Mühlhausen das Modulangebot durch größere RAM-Module erweitert. Die bis dato vorhandenen 16 kB und 64 kB reichten im Regelfall für CAOS-Anwendungen aus, mit der Floppy-Erweiterung und der RAM-Floppy als Laufwerk A: unter CP/M brauchte man schon etwas mehr, schnell sind die Modulschächte mit den 64ern voll und behindern dann andere Aufgaben bzw. machen ein ständiges Umstecken notwendig.
Die Informationen zu den damals neuen Modulen sickerten kaum durch, nur wer noch eines bekam, konnte im Handbuch die notwendigen Informationen finden. Ich möchte auf Grund einiger Anfragen mal versuchen, das Ganze zusammenfassend darzustellen.
Das Modul enthält 1 RAM-Block mit 16 kB, welcher in den Adressbereich der CPU eingeblendet wird, wenn kein anderer Speicherblock intern oder in anderen Modulen höher priorisiert ist.
Strukturbyte: F4 H
Steuerbyte : Bit 7 6 5 4 3 2 1 0
A3 A2 X X X X W M
- A3 A2 = 00 Basisadresse 0000H
= 01 Basisadresse 4000H
= 10 Basisadresse 8000H
= 11 Basisadresse C000H
- X nicht benutzt
- W Schreibschutz (=0 – Schreibschutz aktiv)
- M Aktivbit (=0 - Modul inaktiv)
Das Modul ist in 2 RAM-Blöcke zu je 16 kB aufgeteilt, welche immer parallel zum internen RAM des Grundgerätes liegen. Die Anordnung ist also nebeneinander, so dass immer beide Blöcke hintereinander erreichbar sind, falls kein anderer Speicherblock intern oder in anderen Modulen höher priorisiert ist.
Durch die Veränderung der Basisadresse lassen sich die beiden Blöcke wie ein Ringpuffer betreiben, da immer alle Blöcke aktiv bleiben aber auf jede beliebige 16 kB Anfangsadresse rotiert werden können.
Strukturbyte: F5 H
Steuerbyte : Bit 7 6 5 4 3 2 1 0
A3 A2 X X X X W M
- A3 A2 = 00 Basisadresse erster Block 0000H
= 01 Basisadresse erster Block 4000H
= 10 Basisadresse erster Block 8000H
= 11 Basisadresse erster Block C000H
- X nicht benutzt
- W Schreibschutz (=0 – Schreibschutz aktiv)
- M Aktivbit (=0 - Modul inaktiv)
Diese Modul ist im RAM Floppy Verwaltungsprogramm definiert. Mir ist es allerdings nicht bekannt und ein offizielles Modul dieser Art habe ich bisher auch noch nie gesehen.
Das Modul ist in 4 RAM-Blöcke zu je 16 kB aufgeteilt, welche immer komplett parallel zum internen RAM des Grundgerätes liegen. Die Anordnung ist also nebeneinander, so dass immer alle Blöcke erreichbar sind, falls kein anderer Speicherblock intern oder in anderen Modulen höher priorisiert ist.
Durch die Veränderung der Basisadresse lassen sich die 4 Blöcke wie ein Ringpuffer betreiben, da immer alle Blöcke aktiv bleiben aber auf jede beliebige 16 kB Anfangsadresse rotiert werden können.
Strukturbyte: F6 H
Steuerbyte : Bit 7 6 5 4 3 2 1 0
A3 A2 X X X X W M
- A3 A2 = 00 Basisadresse erster Block 0000H
= 01 Basisadresse erster Block 4000H
= 10 Basisadresse erster Block 8000H
= 11 Basisadresse erster Block C000H
- X nicht benutzt
- W Schreibschutz (=0 – Schreibschutz aktiv)
- M Aktivbit (=0 - Modul inaktiv)
Das Modul enthält 8 RAM-Segmente zu je 16 kB, welche einzeln ab Basisadresse 04000H oder 08000H in den Adressbereich des Prozessors eingeblendet werden können, die Anordnung ist hintereinander, es ist also immer nur ein Segment erreichbar.
Strukturbyte: 78 H
Steuerbyte : Bit 7 6 5 4 3 2 1 0
A1 X X S2 S1 S0 W M
- A1 = 0 Basisadresse 4000H
= 1 Basisadresse 8000H
- X nicht benutzt
- S2...S0 Segment-Nummer dual von 0...8
- W Schreibschutz (=0 - Schreibschutz aktiv)
- M Aktivbit (=0 - Modul inaktiv)
Das Modul enthält 16 RAM-Segmente zu je 16 kB, welche einzeln ab Basisadresse 04000H oder 08000H in den Adressbereich des Prozessors eingeblendet werden können, die Anordnung ist hintereinander, es ist also immer nur ein Segment erreichbar.
Strukturbyte: 79 H
Steuerbyte : Bit 7 6 5 4 3 2 1 0
A1 X S3 S2 S1 S0 W M
- A1 = 0 Basisadresse 4000H
= 1 Basisadresse 8000H
- X nicht benutzt
- S3...S0 Segment-Nummer dual von 0...15
- W Schreibschutz (=0 - Schreibschutz aktiv)
- M Aktivbit (=0 - Modul inaktiv)
Das Modul enthält 32 RAM-Segmente zu je 16 kB, welche einzeln ab Basisadresse 04000H oder 08000H in den Adressbereich des Prozessors eingeblendet werden können, die Anordnung ist hintereinander, es ist also immer nur ein Segment erreichbar.
Strukturbyte: 7A H
Steuerbyte : Bit 7 6 5 4 3 2 1 0
A1 S4 S3 S2 S1 S0 W M
- A1 = 0 Basisadresse 4000H
= 1 Basisadresse 8000H
- S4...S0 Segment-Nummer dual von 0...32
- W Schreibschutz (=0 - Schreibschutz aktiv)
- M Aktivbit (=0 - Modul inaktiv)
Die Angaben zum M034 entnehme ich dem verwendeten Steuerbyte zur RAM-Floppy-Verwaltung unter CP/M, mir ist kein User bekannt, der ein solches offizielles Modul besitzt.
Das Modul enthält 64 RAM-Segmente zu je 16 kB, welche in der Regel ab Basisadresse 08000H in den Adressbereich des Prozessors eingeblendet werden können, die Anordnung ist hintereinander, es ist also immer nur ein Segment erreichbar.
Strukturbyte: 7B H
Steuerbyte : Bit 7 6 5 4 3 2 1 0
S5 S4 S3 S2 S1 S0 W M
- S5...S0 Segment-Nummer dual von 0...64
- W Schreibschutz (=0 - Schreibschutz aktiv)
- M Aktivbit (=0 - Modul inaktiv)
Vom legendären 1 MB Modul gab es einige Nullserienprodukte, es gelangte offenbar nie in den offiziellen Handel. Bei meiner Variante diente die Leiterplatte des M032 als Grundlage, es wurden nur andere RAM's (1 MB*1) gesteckt und das Strukturbyte neu verdrahtet.
Ich habe bis jetzt verschiedene Ausführungen des Moduls gesehen, es gibt auch Varianten mit einem DIP-Schalter in der Frontplatte, wo man die Basisadresse von 04000H auf 08000H hardwaremäßig umschalten kann, das Steuerbyte wird ja komplett für die Adressierung der 64 Segmente verbraucht.
Dieses Modul enthält 4 einzelne logische Module M035, welche ab Steckplatzadresse (Modulschachtnummer) 4 aufeinanderfolgende Steckplatzadressen belegen und entsprechend der logischen Nummer priorisiert werden. Ein logisches Modul mit einer niedrigeren Nummer ist höher priorisiert und demzufolge im Zugriff, wenn 2 oder mehr logische Module aktiv geschaltet sind.
Jedes logische Modul ist exakt wie ein M035 aufgebaut, wird genauso programmiert und sendet auf jeder Steckplatzadresse das gleiche Strukturbyte wie ein M035. Es enthält wiederum 64 RAM-Segmente zu je 16 kB, welche ab Basisadresse 08000H in den Adressbereich des Prozessors eingeblendet werden können, die Anordnung ist hintereinander, es ist also immer nur ein Segment erreichbar.
Moduladressierung:
Physische Steckplatzadresse: n
- n logisches Modul 1 M035
- n+1 logisches Modul 2 M035
- n+2 logisches Modul 3 M035
- n+3 logisches Modul 4 M035
Strukturbyte logisches Modul: 7B H
Steuerbyte : Bit 7 6 5 4 3 2 1 0
S5 S4 S3 S2 S1 S0 W M
- S5...S0 Segment-Nummer dual von 0...64
- W Schreibschutz (=0 - Schreibschutz aktiv)
- M Aktivbit (=0 - Modul inaktiv)
Das 4 MB Modul M035*4 wurde 2003 von Mitgliedern des KC-Club entwickelt und wird mit 4 Stück 1MB SIM oder 1 Stück 4MB SIM Modul(en) aus der PC-Technik bestückt.
Mit diesen Informationen kann jeder Bastler und Tüftler auch eigene Varianten bauen. Wenn gleiche Strukturbytes verwendet werden, ist zwingend auch die Definition des entsprechenden Modulsteuerbytes einzuhalten, damit vorhandene Software weiter funktioniert und nicht verrückt spielt.
Kai-Uwe Irrgang stellte in den "KC-News" 3/93 bzw. 03/96 beispielsweise eine Umbauanleitung des 64 kB Moduls zu einem 1 MB Modul vor. Sehr gut an dieser Anleitung fand ich die Tatsache, daß man mittels DIP-Schalter, zwischen 64 kB und 1 MB Modul umschalten kann, so daß man quasi das M011 behält und ein M035 dazubekommt. Dort werden auch alle eben genannten Konventionen eingehalten.
Die oben angedeutete Speicherverwaltung bildet auch die Grundlage und Voraussetzung für die Leistungsfähigkeit von "UNIPIC". Im Programm befinden sich 2 Routinen, welche sich um die Speicherverwaltung der Bilder und um die Verwaltung der einzelnen Programmteile (MC-Code-Module) kümmern. Speziell die Verwaltung der Programm-Module wurde mittlerweile so weiterentwickelt, daß sie sich gegenseitig aufrufen und bis auf das letzte Byte mit in sich abgeschlossenen Unterprogrammen aufgefüllt werden können, was eine effektive und relativ einfache Programmierung erlaubt.