Serielle Schnittstelle

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Beschreibung[Bearbeiten]

Serielle Schnittstelle des C64

Die serielle Schnittstelle des C64 ist für den Anschluss von Peripheriegeräten, insbesondere für Floppylaufwerke und Drucker gedacht. Technisch handelt es sich um eine spezielle serielle Commodore-Variante des parallelen IEEE-488/IEC-625-Busses, weswegen er häufig auch als IEC-Bus oder CBM-Bus erwähnt wird. Diese Schnittstellenvariante ist nicht kompatibel mit der RS-232, die im PC-Bereich unter der Bezeichnung "serielle Schnittstelle" läuft.

Während serielle Schnittstellen meist nur für die Verbindung zwischen zwei Geräten eingesetzt werden (z.B. RS-232), handelt es sich beim IEC-Bus um einen seriellen Bus. Es kann also mehr als nur ein Gerät gleichzeitig an den Rechner angeschlossenen werden, die meisten Commodore-Peripheriegeräte haben zu diesem Zweck Durchschaltbuchsen. Theoretisch sind bis zu 31 Geräte möglich (Gerätenummern 0 bis 30, Nummer 31 ist reserviert für UNTALK/UNLISTEN), das Betriebssystem des C64 kann allerdings nur Geräte mit den Gerätenummern 4 bis 30 an diesem Bus nutzen, da die Nummern 0 bis 3 intern reserviert sind. Praktisch liegt die Obergrenze jedoch bei etwa 8 Geräten. Das liegt daran, dass die Ausgänge des im Gerät eingebauten Chips (invertierender Treiber 7406) mit einem maximalen Strom von ca. 40 mA belastet werden können. Jedes Gerät das am seriellen Bus angeschlossen ist, erzeugt eine Last von ca. 5 mA.

Die Auswahl, mit welchem Gerät nun Daten ausgetauscht werden, erfolgt über die dem Gerät zugeordnete Gerätenummer. Diese Nummer, im Bereich von 0 bis 30 (nutzbar sind nur 4 bis 30) muss am Gerät eingestellt sein, und darf nur einmal vorkommen. Die Standardnummer für den ersten Drucker ist 4 und für das erste Floppylaufwerk 8.

Das Zeitverhalten des Busses ist recht eng spezifiziert. So kann z.B. ein PC mit entsprechendem Kabel (siehe X1541) mit einer Floppy verbunden werden und Daten übertragen - das Gleiche andersherum (z.B. PC emuliert Floppy für einen C64) ist aber unter Multitasking-Betriebssystemen (Windows, Linux...) ohne eine aufwendige Schaltung mit eigener Intelligenz aufgrund der nötigen maximalen Latenzzeit von wenigen Mikrosekunden (insbesondere bei Schnellladern) nicht möglich. Software wie 64HDD, 1541EMU, Server64 oder 1541 läuft deswegen prinzipiell nur unter DOS.

Im Normalbetrieb (LOAD, unmodifizierte KERNAL-Routinen) schafft die serielle Schnittstelle ca. 400 Byte/Sekunde mit einer 1541 und ca. 650 Byte/s mit einem SD2IEC. Mit JiffyDOS und einer 1541 werden etwa 2,4 kByte/Sekunde übertragen, mit einem SD2IEC etwa 8,6 kByte/Sekunde. Das theoretische Maximum beträgt etwa 20-25 kByte/Sekunde[1].

Anschlussbelegung[Bearbeiten]

Die serielle Schnittstelle ist eine 6-polige DIN-Buchse (DIN 45322). Die folgende Kontaktbelegung zeigt die Buchse des Computers von außen:

Kontaktbelegung


Pin Bezeichnung Signalrichtung Bemerkung
1 SERIAL SRQ IN Serial Service Request In, beim C128 "Fast Serial Clock"
2 GND - Ground, Signalmasse (0V)
3 SERIAL ATN OUT Attention, für die Auswahl eines Geräts und Start/Ende einer Übertragung
4 SERIAL CLK IN/OUT Clock, Takt für die Datenübertragung
5 SERIAL DATA IN/OUT Daten
6 SERIAL RESET OUT(/IN) Reset, bei älteren VC 20 unbelegt

Signalbeschreibung[Bearbeiten]

  • Beachte, dass viele Schnelllader diese Signale anders verwenden! Die hier beschriebene Belegung gilt nur für den Normalbetrieb des Busses.
  • Alle Leitungen (abgesehen von GND) sind LOW-aktiv und weisen im inaktiven Zustand eine Spannung von ca. 5V auf.
  • Elektrisch werden die Leitungen als Open-Collector-Ausgang betrieben, um das Busverhalten zu erhalten.


SRQ: Serial Service Request In

Jedes Gerät an der seriellen Schnittstelle kann dieses Signal auf LOW legen, wenn es vom Computer einen Datenaustausch benötigt. Beim C64 wird dieses Signal nicht verwendet, ist aber mit der Leseleitung des Kassettenports verbunden (wobei hier nur negative Signalflanken erkannt werden können und nicht der Signalpegel).
Beim C128 wird das Signal mit "Fast Serial Clock" für das 1571 Diskettenlaufwerk ersetzt.

ATN: Serial Attention Out

Wenn dieses Signal LOW ist und ein Byte gesendet wird, interpretieren die am seriellen Bus angeschlossenen Geräte dies als einen Befehl. Sobald der C64 das Signal auf Low legt, warten alle anderen Geräte am Bus auf eine Übertragung der Adresse (Gerätenummer). Das adressierte Gerät muss innerhalb einer festgelegten Zeit antworten, ansonsten nimmt der C64 an, dass das adressierte Gerät nicht vorhanden ist und gibt einen Fehler aus. Nach der Geräteadresse wird die Sekundäradresse gesendet, dabei bleibt die Leitung auf Low. Vor dem ersten "normalen" Byte geht sie dann wieder auf High.

CLK: Serial Clock In/Out

Dieses Signal ist der Zeittakt für die gesendeten Daten. Der Takt wird immer von dem Gerät erzeugt, das gerade sendet. Bei der steigenden Flanke wird vom Empfänger das Datenbit (DATA) übernommen.

DATA: Serial Data In/Out

Die Daten werden auf dieser Leitung Bit für Bit nacheinander übertragen. Bei einem Byte wird zuerst das niederwertigste Bit 0 (LSB) und am Ende das höchstwertige Bit 7 (MSB) übertragen.

RESET: Serial Reset

Damit wird ein Reset bei den angeschlossenen Geräten ausgelöst. Bei frühen C64-Modellen kann diese Leitung auch als Eingang verwendet werden, um den Computer zurückzusetzen (z.B. Reset-Taster), bei späteren Modellen ist dies nicht möglich. Daher sollte im allgemeinen für Reset-Taster besser die Reset-Leitung am Userport verwendet werden.

Erweiterungen[Bearbeiten]

  • Es ist möglich, die Anzahl der tatsächlichen Geräte am Bus zu erhöhen. Dazu müssen die 1kΩ Widerstände in einigen Geräten entfernt werden. Achtung: werden die Widerstände in allen angeschlossenen Geräten entfernt, funktioniert der Bus nicht.
  • Power over Serial Spannung für kleine Verbraucher

Links[Bearbeiten]

WP-W11.png Wikipedia: CBM-Bus


Fußnoten

  1. What is sd2iec's speed?