COMMODORE-Interface für den KC 85
von Reinhard Birk
( unter Berücksichtigung des Anschlusses eines Druckers SP-180VC )
Einführung
Eine Sonderstellung bei den standardisierten Schnittstellen nimmt die Commodoreschnittstelle (VC) ein. Sie ist mit den üblichen Schnittstellen (V. 24, Centronics) nicht kompatibel.
Der vorzustellende Baustein stellt hardwaremäßig eine komplette VC-Schnittstelle dar, mit deren Hilfe prinzipiell alle Commodore-Geräte (CBM) an den KC angekoppelt werden können. Das bedeutet, daß folgende Verbindungen möglich sind:
- KC <-> C64
- KC <-> C/PLUS4
- KC <-> CBM-Floppy (z.B. VC 1541)
- KC <-> CBM-Drucker (z.B. SP-180VC)
Im weiteren wird neben dem Baustein eine geeignete Treiber-Software für den Anschluß eines CBM-Druckers vorgestellt.
Beschreibung des Interfacebausteins
Der Baustein wurde auf Basis des USER-Moduls M005 realisiert. Damit fügt er sich in das Modulkonzept des KC 85 ein. Die Koppelung mit Peripheriegeräten erfolgt über einen freien Modulschacht des KC, den USER-Modul und ein Systemkabel, das am freien Ende einen CBM-Serienanschluß (6pol. DIN-5tecker) besitzt. Die entsprechende Belegung der Anschlußstifte ist unten angegeben.
Der eigentliche Interfacebaustein besteht aus folgenden Bauelementen:
- UB 855 D (Z 80-PIO)
- 40 Pin Schaltkreisfassung
- DL 030 D (SN74LS30N)
- DL 003 D (SN74LS03N)
- DL 004 D (SN74LS04N)
- VQA 23 (LED}
- SS 216 d
- 4 Widerstände 1 kOhm (1/10 W)
- 1 Widerstand 360 Ohm (1/10 W)
- 1 Widerstand 6,8 kOhm (1/10 W)
- 4 Keramikkondensatoren 10 nF
- USER-Modul M005
Der Schaltplan des Bausteins wird im Bild 1 (Anhang 1) dargestellt. Die Leitungen des VC-lnterfaces arbeiten alle mit TTL-Pegel und haben folgende Bedeutung (Stiftbelegung DIN-Stecker in Klammern):
ATN | Attention (Befehlsübertragung) | (Stift 3) |
CLOCK | Steuerung der Bitübernahme | (Stift 4) |
DATA | Datenleitung | (Stift 5) |
IFC | Interface-Clear (Hardwarereset) | (Stift 6) |
Mit diesen 4 Leitungen (zuzüglich Masse (Stift 2)) ist eine bidirektionale Kommunikation prinzipiell möglich. Für das realisierte Druckerinterface ist die IFC-Leitung nicht unbedingt erforderlich, wurde jedoch für eventuelle Erweiterungen realisiert. Das Interface wird über einen beliebigen Modulschacht direkt mit dem Rechnerbus verbunden, wodurch es ständig betriebsbereit ist (nach Erstinitialisierung). Eine SWITCH-Anweisung ist deshalb nicht erforderlich und wirkungslos.
Für die Realisierung der Schaltung wurde ein entsprechendes Layout entwickelt (beim Autor erhältlich).
Die Schaltung wurde so realisiert, daß neben den 7 für die Schnittstelle benutzten Bitleitungen auch die übrigen 9 Bitleitungen zuzüglich der Kanal-Hand-Shake-Signale der beiden PlO-Ports am Modulstecker verfügbar sind. Damit ist mit entsprechender Treibersoftware eine universelle Nutzung des Bausteins als Ein- und Ausgabeport (z.B. KC als Auswerteeinheit an Meßplätzen) möglich.
Druckersoftware
Der bisherige Stand der Entwicklung beinhaltet ein Softwarepaket, das auf die Ansteuerung eines Seikosha-Druckers SP-180VC abgestimmt ist. Es wird davon ausgegangen, daß der Drucker im CBM(DIN)-Modus arbeitet, was in den meisten Fällen auch der Standardfall ist. Die Treiberroutine beinhaltet folgende Funktionen:
- Initialisierung der Schnittstelle
- Wahl des USER-Kanals (2 oder 3)
- Ausgabe der Sekundäradresse
- Protokoll-Funktion
- Hardcopy
Standardmäßig wird die Routine in den Speicherbereich #3900 bis #3B41 geladen, Listing im Anhang 2.
Nutzeranweisung
1. Stecken des Moduls
Beim Stecken des Moduls und Verbinden der Leitungen sind die üblichen Bedingungen einzuhalten. Einschalten der Geräte in der Reihenfolge Drucker -KC vornehmen. Werden außer dem Interface-Modul noch weitere Module kontaktiert, so ist darauf zu achten, daß das Interface-Modul auf die höhere Moduladresse gesteckt wird, d.h. ans Ende der Modulprioritätskette. Im anderen Falle wird die Prioritätskette unterbrochen, was zum Ausfall einiger Rechnerfunktionen führen kann.
2. Laden der Software
Das Laden der Treiberroutine erfolgt aus dem Betriebssystem heraus mit "LOAD", von BASIC aus mit "BLOAD". Es ist darauf zu achten, daß der von der Routine belegte Speicherbereich nicht von eigener Anwendersoftware belegt wird, was sonst u.U. zum Systemabsturz führen kann. Nach dem Laden können eigene Nutzerprogramme unter Beachtung der Speicherbelegung geladen werden. Zu beachten ist dabei, daß eine Initialisierung der Schnittstelle nur aus dem Betriebssystem erfolgt. Deshalb macht sich eine Initialisierung bei selbststartenden Anwenderprogrammen vor dem Laden dieser Programme notwendig. Natürlich kann der Treiber auch von BASIC aus in den Speicher gePOKEt werden und eine Initialisierung von BASIC aus ist prinzipiell auch möglich.
3. Initialisierung
Nach dem Laden des Treibers kann mit der Menüanweisung "C64 k s m" die Initialisierung erfolgen. Nach der Erstinitialisierung leuchtet zur Kontrolle am Modul die grüne LED auf. Es ist jederzeit eine Neuinitialisierung möglich (z.B. um den Modus oder die Sekundäradresse zu ändern). Die Parameter k,s,m können weggelassen werden, dann werden dafür Standardwerte angenommen. Die Bedeutung der Parameter ist folgende:
k: | USER-Kanal des KC-Systems | 2 und 3 sind möglich (Standard: 2) |
s: | Sekundäradresse für den Drucker | vgl. Druckerdokumentation (Standardwert: 7) |
m: | Modus | 0: Normalprint 1: durch Betätigen der Tasten <Shift>+<CLR> wird die Protokollfunktion ein- bzw. ausgeschaltet 2: nach Betätigen der Tasten <Shift>+<CLR> wird eine Hardcopy angefertigt |
In allen drei Modi ist ein normales Drucken über einen der USER-Kanäle möglich. Die Modi 1 und 2 dienen nur zur Realisierung der beiden Zusatzfunktionen.
Beispiel: C64 2 7 2
Es wird der USER-Kanal 2 geöffnet, die Sekundäradresse 7 an den Drucker gegeben und die Hardcopy-Funktion ist über <Shift>+<CLR> erreichbar. Das bedeutet in BASIC, daß mit PRINT#2 der Drucker angesteuert wird.
4. Besonderheiten
Das Treiberprogramm ist auf den CBM(DIN)-Zeichensatz von Commodore abgestimmt. Wird ein anderer Zeichensatz verwendet, so muß die Routine entsprechend geändert werden. Einige Sonderzeichen des KC-Zeichensatzes, die nicht im CBM(DIN)-Satz vorhanden sind, werden entsprechend der Zeichentabelle von Commodore dargestellt. Anführungszeichen werden als Apostroph gedruckt, da der Drucker sonst in den Invers-Steuerzeichenmodus versetzt wird. Ansonsten sind über die BASIC-Funktion CHR$(n) alle Steuerfunktionen des Druckers entsprechend der Dokumentation erreichbar (z.B. Unterstreichung, Breitschrift, Subscript etc.).
Mit Hilfe des Commodore-lnterface können auch TEXOR-Dateien ausgedruckt werden (Initialisierung Druckertyp: S).
Nachbemerkung
Die hier vorgestellte Entwicklung geht auf das Jahr 1989 zurück, als zu vorhandenen KC 85/3 keine passenden Drucker zur Verfügung standen. Nach der Wende wurde dann die Weiterentwicklung der Software nicht fortgeführt, weil die Hardwareprobleme bekanntermaßen nicht mehr bestanden. Der Softwareentwickler stand auch nicht mehr zur Verfügung. Diese Beschreibung ist eine Kurzfassung der Originaldokumentation von 1989.
Da zum damaligen Zeitpunkt auch KC-Diskettenlaufwerke nicht greifbar waren, ist die Software darauf nicht eingestellt. Bei Diskettennutzung kommt es zu Konflikten.
Vielleicht gibt es unter unseren Mitstreitern einen Experten, der die Software universell anpaßt und (z.B. für Commodore-Floppy VC 1541) weiterentwickelt?

Bild 1: Schaltplan
Anhang 2: C64
Adressen: 3900 3B41
Adresse Daten
3900 04 05 02 24 67 03 FF 00 00 00 C3 1D 39 18 55 01
3910 03 FF 0F 1B 55 00 FF 7F 7F 43 36 34 01 3A 81 B7
3920 FE 01 30 02 2E 02 FE 02 30 02 1E 07 FE 03 30 02
3930 0E 00 3E 60 83 32 04 39 2D 20 21 08 39 28 04 CB
3940 CE 18 02 CB 8E CD F2 3A 79 A7 28 05 21 C9 3A 18
3950 03 21 CB F1 22 99 B7 21 08 39 3D 20 02 CB 86 3D
3960 20 02 CB C6 21 00 39 7E FE FF C8 CD 71 39 23 18
3970 F6 ES D5 C5 F5 57 0E C0 21 07 39 5E FE 02 28 1C
3980 FE 03 28 2C FE 04 28 72 FE 05 CA 0B 3A 18 27 73
3990 F1 C1 D1 E1 C9 CD 03 F0 19 E1 18 F4 CB CB ED 59
39A0 CB F3 ED 59 06 2A ED 78 CB 6F 28 E3 10 F8 18 E5
39B0 CB 8B ED 59 18 D9 CB B3 ED 59 ED 78 CB 6F 28 FA
39C0 06 05 10 FE 7A CD D4 39 06 2A ED 78 CB 6F 28 BF
39D0 10 F8 18 C1 06 08 CB F3 ED 59 C5 CB 47 20 17 CB
39E0 DB ED 59 06 03 10 FE CB B3 ED 59 0F C1 10 E7 CB
39F0 F3 CB 9B ED 59 C9 CB 9B 18 E7 0E C1 1E CF ED 59
3A00 1E 31 ED 59 0E C0 ED 59 C3 8F 39 CB D3 ED 59 CB
3A10 93 ED 59 06 04 CD 1D 3A 10 FB C3 8F 39 C5 0E 00
3A20 06 00 10 FE 0D 20 F9 C1 C9 21 0D 39 F3 CD 67 39
3A30 FB A7 08 26 00 06 24 C5 2E 00 06 28 C5 D9 21 AA
3A40 3A D9 06 07 08 30 02 06 04 08 4C E5 CD 03 F0 34
3A50 7E D9 77 23 D9 E1 24 10 F2 61 06 08 D9 21 AA 3A
3A60 06 07 08 30 02 06 04 08 CB 06 1F 23 10 FA 08 30
3A70 08 08 CB 3F CB 3F CB 3F 08 08 37 1F D9 F3 CD 71
3A80 39 FB 10 D8 2C C1 10 B4 3E 07 84 67 3E 0A F3 CD
3A90 71 39 FB C1 10 A1 08 3F 06 01 F5 08 F1 38 98 21
3AA0 12 39 F3 CD 67 39 FB E1 D1 C9 00 00 00 00 00 00
3AB0 00 CD 03 F0 00 F5 CD 28 3B 18 01 F5 F3 CD 36 3B
3AC0 CD 0E 3B CD 71 39 F1 FB C9 D5 E5 3A 08 39 CB 47
3AD0 C2 29 3A 2A B9 B7 34 35 20 13 11 B1 3A 21 42 39
3AE0 CB 4F 28 03 21 50 39 CD F8 3A E1 D1 C9 CD F2 3A
3AF0 18 F8 21 B4 3A 11 BB 3A 3A 08 39 22 B9 B7 CB 4F
3B00 20 05 ED 53 BE B7 C9 ED 53 C4 B7 C9 00 00 FE 7F
3B10 D0 FE 7B 38 03 C6 80 C9 FE 61 38 03 D6 20 C9 FE
3B20 5B D0 FE 41 D8 C6 20 C9 FE 20 D0 FE 0D 38 02 AF
3B30 C9 FE 0A 38 FA C9 FE 22 20 02 3E 27 Ff 0D C0 AF
3B40 C9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00