Das Erweiterungs- und Modulkonzept der Rechnerreihe KC 85/2 - 4


Die Reihe der aus Mühlhausen stammenden Kleincomputer war als ein ausbaufähiges Computersystem entwickelt worden. Durch das realisierte modulare Konzept ist eine Anpassung an die verschiedensten Aufgaben- und Einsatzgebiete gegeben. 

Im Systemdesign der Rechnerreihe KC 85/2 - KC 85/4 sind sogenannte Modulschächte vorgesehen, sie befinden sich an der Frontseite der Rechner. Durch Einschieben der Module mit nachfolgendem stärkeren Druck werden sie mechanisch mit dem Grundgerät verbunden. Die softwareseitige Benutzung gestaltet sich unterschiedlich. Das 16 kByte Modul M022 aktiviert sich beispielsweise selbstständig und blendet sich im RAM-Bereich ab Adresse 4000H ein. Andere Module müssen durch Switch-Anweisungen in Betrieb genommen werden, auf diese Weise kann man sie auch abschalten. 

Eine Ergänzung zum Grundgerät ist der Modulaufsatz D002. Er hat dieselbe Form wie das Grundgerät und besitzt 4 Moduleinschübe.

Die wahrscheinlich "schönste" Erweiterung ist die Diskettenerweiterung. Diese besteht aus zwei Aufsätzen, dem "Floppy Disk Basis"-Aufsatz und dem "Floppy Disk Drive"-Aufsatz. In Ersterem ist die Steuerelektronik und das Koppel-RAM vorhanden. Im Disk-Aufsatz verrichtet ein 5,25"-Laufwerk seinen Dienst. Es besteht die Möglichkeit, das Laufwerk über einen JUMP-Befehl in das System zu integrieren. Weiterhin ist es möglich, ein CP/M System (MicroDOS) zu booten und hat damit sogar einen 80 Zeichen-Bildschirm zur Verfügung, der auf den damals üblichen kleinen Fernsehapparaten von Typ "Junost" nicht sehr gut zu lesen war.


Modulverwaltung


Modulprioritätskette

Jedes Modul verfügt über eine Modulprioritätsschaltung. Mit ihrer Hilfe ist es möglich, das der Zugriff des Prozessors auf das Modul mit der höchsten Priorität (im niedrigsten Steckplatz) erfolgt. Dies ist notwendig, da die Möglichkeit besteht, daß mehrere Module mit denselben Betriebsbedingungen im System vorhanden sind. Somit wird ein definierter Zugriff ermöglicht. Soll auf ein Modul mit niedrigerer Priorität zugegriffen werden, so müssen alle vor ihm geschalteten Module deaktiviert werden. 

Modulzuweisung

Die Modulzuweisung erfolgt mit Hilfe eines speziellen Befehls - die SWITCH-Anweisung. 

Ihre Sysntax lautet: SWITCH mm kk, wobei mm die Steckplatzadresse (Geräteadresse) und kk das Steuerbyte repräsentiert.. Beide werden binär wie folgt verschlüsselt.

  • mm

  •  
    G3
    G2
    G1
    G0
    S1
    S0
    X1 X0
    Geräteadresse m des Grundgerätes
    bzw. des Aufsatzes 
    (siehe hierzu D001, D002, D004)
    Steckplatz im Gerät
     
    S1 S0 S1 S0
    oben 1 1 1 0
    unten 0 1 0 0
    links rechts
    Blockauswahl im Modul
    (vom Modul abhängig)
  • kk

  •  
    A3 A2
    X X X X
    W
    M
    Diese Bits legen die Anfangsadresse fest,
    ab der sich ein Modul im System einblendet.
     
    A3 A2 Basisadresse
    0 0
    0000H
    0 1
    4000H
    1 0
    8000H
    1 1
    C000H
    Diese Bits werden nicht getestet. Schreibschutzbit
     
    ein 1
    aus 0
    AKTIV-Bit
     
    ein 1
    aus 0
Die SWITCH-Anweisung kann auf verschiedene Weise genutzt werden,
  1. direkt aus dem CAOS-Menü,
  2. über die BASIC-Anweisung "Switch",
  3. und über Unterprogramme des Betriebssystems.
Die Nutzung aus dem CAOS-Menü ist sicherlich die Gebräuchliste. Der Anweisung SWITCH folgen die Geräteadresse und das Steuerbyte in hexadezimaler Schreibweise - z.B. SWITCH 0C C1

Im BASIC-Betrieb ist eine Umrechnung der Geräteadresse und des Steuerbytes in Dezimaldarstellung notwendig - SWITCH 12,193

Führende Nullen können sowohl im CAOS- als auch im BASIC-Betrieb weggelassen werden. 

Für die Benutzung der Unterprogramme des Betriebssystems muß man sich auf Assemblerebene begeben. Zur Steuerung von Modulen wird das Systemunterprogramm mit der hexadezimalen Nummer 26 genutzt. Es erwartet seine Parameter in den Registern A, L und D. Im Akkumulator A wird die Anzahl der Parameter vermerkt. Ist sie 1, wird nur ein weiterer Parameter im Register L erwartet und es findet nur ein Auslesen des Modultyps statt. Bei Anzahl 2 müssen in L und D Daten eingetragen werden. Über einen Unterprogrammverteiler wird dann das Unterprogramm aufgerufen.
 

Funktion des Unterprogramms
  • Lesen des Modultyps und
  • Aussenden des Steuercodes, wenn (A)>=2
Eingabe Register A
  • Anzahl der Parameter
  • = 1 -> nur Register L
  • = 2 -> Register L und D
Register L
  • Modulsteckplatz
Register D
  • Modulsteuerbyte
Ausgabe Register H
  • Modulstrukturbyte
Register D
  • Modulsteuerbyte

Als Assemblerprogramm hat unser Beispiel folgendes Aussehen:

LD A, 2
LD L, 0CH
LD E, C1H
LD D,E
CALL F003H
DEFB 26H .
Dem Unterprogrammverteiler ab Adresse F003H wird die Nummer des Unterprogramms als einzelnes Byte übergeben.

Modulstrukturbyte

Zur Unterscheidung der verschiedenen Modultypen besitzt jedes Modul sein spezifisches Strukturbyte, dem M022 (16 kByte RAM-Erweiterung) ist beispielsweise das Strukturbyte F4 zugeordnet. 

Das Auslesen des Strukturbytes erfolgt unter Nutzung des SWITCH-Kommandos, hierbei allerdings ohne Angabe eines Steuerbytes. Durch den Aufruf von SWITCH mm wird das Modul im Steckplatz mm veranlaßt, sein Strukturbyte zu senden. 

Die Ausgabe SWITCH 08 hat folgende Form für ein M022 im Schacht 8 des Grundgerätes: 
 
08
F4
43
Steckplatzadresse Strukturbyte aktuelles Steuerbyte

LD A, 1
LD L, 08H
CALL F003H
DEFB 26H
Beim Assemblerprogramm wird nur ein Parameter an das Unterprogramm übergeben und nach seiner Abarbeitung sind in den Registern H und D das Strukturbyte und das aktuelle Steuerbyte verfügbar.

Für BASIC erfolgt der Aufruf und die Ausgabe analog, nur die Umrechnung in Dezimalzahlen muß beachtet werden.


Geräte- und Modulübersicht


Im Nachfolgenden sei eine Übersicht der  Geräte und Module der KC 85/2 bis 85/4-Reihe gegeben. 
 
Modul Bezeichnung
D001 Grundgerät KC 85/2
D001 Grundgerät KC 85/3
D001 Grundgerät KC 85/4
D002 Busdriver für 4 Module (Modulaufsatz) 
D003* Programmer - angeblich ähnlich D002
D004 Floppy Disk Basis 
D004 Floppy Disk Drive 
  • das eigentliche Laufwerk
Device-Connector Verbunden wird das Grundgerät mit dem Busdriveraufsatz, mit dem Floppy Basis Aufsatz bzw. Busdriver mit Floppy Basis über einen u-förmigen Steckverbinder, den Device-Connector. 
 
 
D005 Komfort-Tastatur für KC 85/4 (habe ich leider nie gesehen)

M000* Spezial für KC 85/3 (großes Fragezeichen)
M001 Digital IN / OUT 
 
  • universell anwendbare digitale Ein/Ausgabe
  • Zähler / Zeitgebereinheit
 
M002* PIO 3
M003 V.24 - 2 Kanäle 
M005 USER-Leermodul - freie Ports: C0-CF
M006 BASIC und CAOS 3.1 für KC 85/2
M007 Adapter - Busverlängerung für Modulschacht
M008 Joystick
M009* TLCM - Spracheingabe- und Datenkompressionsmodul
M010 4 Analogeingänge mit Multiplexer 
 
 
M011 64 kByte RAM 
 
 
M012 Software: TEXOR + V.24-Treiber 
 
  • Textverarbeitungsprogramm
 
M021* Joystick und Centronics (PIO 90-93)
M022 Expander RAM 
 
  • 16 kByte
  • Bei Nutzung des Moduls im Steckplatz 8 des Grundgerätes erfolg eine automatische Aktivierung.
 
M024* 32K RAM (1 Block zu 32K)
M025 USER PROM 8K (1 Block zu 8K, 4 Sockel für 2716)
M026 FORTH (1 Block ROM 8K)
M027 Development 
 
  • enthält vier 2 kByte EPROM's
  • 2-Pass Assembler mit Editor
  • Disassembler
  • Testmonitor
  • zwei Druckertreiberroutinen V24
 
M029 DAU1: 2 Analogausgänge + 1 Relais (OUT 44..47)
M030 EPROMER für 2-64K (8K EPROM, PIO D0-D3, PIO D4-D7)
M032 256 kByte SEGMENTED RAM 
  • in 16 Segmente zu je 16 kByte unterteilt
 
M033 Software: TYPESTAR + RAMDOS (2 Blöcke ROM zu je 8K)
M034 512K segmented RAM (32 Blöcke je 16K, 4000 od. 8000)
M035 1M segmented RAM (64 Blöcke je 16K, Adr. 8000) 

Vom 1 MB Modul gab es einige Nullserienprodukte. Es gab Varianten, denen die Leiterplatte des M032 als Grundlage diente, es wurden nur andere RAM's (1 MB*1) gesteckt und das Strukturbyte neu verdrahtet. 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.

M036 128 kByte SEGMENTED RAM 
  • in 8 Segmente zu je 16 kByte unterteilt
  • 16 k-Blöcke mit Switch ein- und ausgeschaltet
  • immer nur 1 Block aktiv
M40 USER PROM 16K (1 Block zu 16 kByte)
M45 32K segmented ROM (4 Blöcke je 8K)
M46 64K segmented ROM (8 Blöcke je 8K)
M47 128K segmented ROM (16 Blöcke je 8K)
M48* 256K segmented ROM (16 Blöcke je 16K)
M53 RS232: wie M003, jedoch 2. Kanal mit TTL-Pegel
M120* 8K CMOS-RAM (1 Block zu 8K)
M122* 16K CMOS-RAM (1 Block zu 16K)
M124* 32K CMOS-RAM (1 Block zu 32K)
Die mit * gekennzeichneten Module kamen nicht in den offiziellen Handel. Häufig erfolgte eine Zuteilung nach Plankontingenten, hierbei wurden staatliche Institutionen oder Betriebe nach einem internen Schlüssel beachtet. Module waren im privaten Bereich schwer zu erhalten.



Quellen: Besitz: Tom Schnabel, Karsten Eggert, Jens Schikowski