Tämä asiakirja on saatavilla myös suomeksi. This document is also available in English.
Das C2N232 ist eine kleine RS-232-Schnittstelle, die in den Kassettenport eines 8-Bit Commodore-Rechners eingesteckt werden kann:
Der Name C2N232
besteht aus zwei Teilen: C2N
und
232
. C2N ist der ursprüngliche Modellname des
Commodore-Bandgerätes, auch als Datasette bekannt. Die Nummer 232
weist auf RS-232
hin, den dominierenden Standard für asynchrone serielle
Kommunikation.
Das Gerät paßt an alle 8-Bit Commodore-Rechner, die über eine Kassettenschnittstelle verfügen. Bei der 264-Reihe wird ein Adapter benötigt, da der Stecker anders aussieht.
Das Gerät kann auch mit anderen 8-Bit-Rechnern benutzt werden. Die Treibersoftware unterstützt das Kassettenformat vom Tangerine Oric-1.
LOAD
, SAVE
, OPEN
).tap
)Die RS-232-Schnittstelle ist mit dem IBM PC/AT kompatibel. In anderen Worten, am C2N232 gibt es eine D-Sub-Buchse mit 9 Kontakten.
Normalerweise wird ein Verlängerungskabel an die RS-232-Buchse des C2N232
angeschlossen. Nur drei Drähte sind unbedingt nötig: Pin 5 (Masse), 2
(gesendete Daten) und 3 (empfangene Daten). An einem 25poligen Stecker
sind diese Signale an den Pins 7, 3 und 2 angeschlossen. Die Buchse am
C2N232 ist als DCE verdrahtet, das heißt, ein Nullmodem
-Kabel
kann nicht benutzt werden.
In den folgenden Prozeduren wird angenommen, daß Sie einen Commodore 64 benutzen.
c2nload
LOAD
und drücken Sie RETURN.PRESS PLAY ON
TAPE
.großen Rechner, starten Sie die Übertragung folgenderweise. Wahrscheinlich müssen Sie den Dateinamen, den Namen der seriellen Schnittstelle und des Rechnermodells anpassen.
c2nload -c serial.device -m 64 datei.prg
c2nload -c com1 -m 64 datei.prg
c2nload -c /dev/ttyS0 -m 64 datei.prg
FOUND DATEI.PRG
.FOUND
-Meldung ganz kurz
erscheint, so daß der Computer den Rest des Programms nicht verpaßt, da
das C2N232 das Steuersignal des Kassettenmotors ignoriert. Drücken
Sie nicht die Leertaste, oder es kann sein, daß der Rechner den Rest
überspringt und auf das nächste Programm warten wird.Wenn das Programm durch einen SYS
-Befehl gestartet wird,
können Sie die SYS
-Adresse mit der Option -j
angeben.
cbmlink
cbmlink
-Server wie beschrieben im
vorigen Abschnitt, zum Beispiel c2nload -c /dev/ttyS0 -m 64
-j 52224 cbmprg/c2n232/c64/plain.prg
.READY.
cbmlink
auf dem großen Rechnergestartet werden.
cbmlink -c c2n232 serial.device
cbmlink -c c2n232 com1
cbmlink -c c2n232 /dev/ttyS0
cbmlink
-Serverprogramm auf Diskette
zu speichern oder einen Bootsektor für den Commodore 128 erzeugen, um
die Benutzung des langsamen Bandprotokolles in Zukunft zu vermeiden.
Bitte beachten Sie, daß in der jetzigen Version von cbmlink
die Optionen -fr
und -fw
weder die Zeichensätze
umwandeln noch Verzeichnisnamen von Pfadnamen entfernen. Am besten benennen
sie die Dateien zuerst um, so daß sie nur Großbuchstaben enthalten, z.B.
C64 SYS52224
. Das Serverprogramm für einen nicht
erweiterten Commodore 64 kann folgendermaßen auf Diskette kopiert werden.
cbmlink -c c2n232 serial.device -fw cbmprg/c64/plain.prg
cbmlink -c c2n232 com1 -fw cbmprg\c64\plain.prg
cbmlink -c c2n232 /dev/ttyS0 -fw cbmprg/c64/plain.prg
Ja, aber das Kassettenprotokoll wird nur für das Laden des
c2nload
-Schnelladers gebraucht, für einige Sekunden. Die
Übertragungsgeschwindigkeit von eigentlichen Programmen ist von der
RS-232 auf
38.400 Bits oder ungefähr 3.840 Bytes per Sekunde beschränkt.
.tap
-Dateien)
geladen werden?Das Programm faucet
funktioniert für manche Dateien.
Mit der jetzigen Firmware kann das C2N232 leider nur über die RS-232-Schnittstelle gesteuert werden. In der Zukunft werden neue Firmware und Beispielroutinen veröffentlicht, die es ermöglichen, das C2N232 von der Commodore-Seite aus zu kontrollieren.
Haben Sie im Geräte-Manager sichergestellt, daß der Hardware-FIFO-Puffer der seriellen Schnittstelle aktiv ist?
Sie finden den Geräte-Manager über die Systemsteuerung
.
Doppelklicken Sie dort auf das Symbol System
. Dadurch wird das
Fenster Eigenschaften von System
geöffnet. In diesem Fenster,
klicken Sie auf das Register Geräte-Manager
. In Windows 2000
enthält das Fenster kein Register mit diesem Namen. Stattdessen müssen
Sie auf das Register Hardware
und auf die Schaltfläche
Geräte-Manager
klicken.
Eine Liste von Gerätetreibern erscheint. Unter Anschlüsse (COM
und LPT)
klicken Sie bitte doppelt auf den seriellen Anschluss,
über den das C2N232 betrieben wird.
Ein Fenster Eigenschaften von COM-Anschluss
(COMx)
taucht auf. Klicken Sie auf das Register
Anschlusseinstellungen
. Wählen Sie das Protokoll
Hardware
und klicken Sie auf die Schaltfläche Erweitert
,
um das Fenster Anschlusseinstellungen
zu öffnen. Stellen Sie
sicher, daß das Feld FIFO-Puffer verwenden
angeklickt worden
ist.
Alle anderen Einstellungen sollten von der C2N232-Software richtig
gesetzt werden. Wenn die Software immer noch nicht richtig
funktioniert, klicken Sie auf die Schaltfläche Standard
in dem
Fenster Anschlusseinstellungen
bzw. auf die Schaltfläche
Standard wiederherstellen
unter dem Registermenü
Anschlusseinstellungen
im Fenster Eigenschaften von
COM-Anschluss
.
In der Regel sind die Treiber von USB-RS-232-Adaptern mangelhaft. Unter Mac OS X funktionieren die Adapter von Keyspan. Auf dem Prolific PL-2303 basierte Adapter funktionieren sowohl unter Windows als auch GNU/Linux mit einigen Anpassungen. Trotz ihrer teuren Preise sind weder der Adapter FTDI US232B noch die Bausteine von FTDI empfehlenswert, weil der Linux-Treiber keine Flußkontrolle beim Senden unterstützt. Auch der Windows-Treiber scheint die Flußkontrolle die meiste Zeit zu ignorieren.
Der Windows-Treiber von Prolific (August 2005) kann den Rechner zum Absturz bringen. Im Linux-Treiber funktioniert die XON/XOFF-Flußkontrolle nicht, aber zum Glück wird CTS/RTS richtig unterstützt.
Die Firmware kann über die RS-232-Schnittstelle umprogrammiert werden. Dazu kann man einen Rechner mit Unix oder Microsoft Windows benutzen.
Vier aktiv gesteuerte Signale (RxD, TxD, CTS und RTS) müssen angeschlossen werden. Zusätzlich muß die RESET-Leitung des AT90S2313-Microcontrollers auf Masse gezogen werden und die Platine muß mit Strom versorgt werden.
In der Produktionsversion der Platine gibt es zwei Stellen für Verbindungsbrücken. Eine befindet sich beinahe unter dem Microcontroller, und sie kann immer verbunden bleiben. Die andere (der RESET-Schalter des AT90S2313) liegt an dem Kassettenstecker. Diese muß während der Aktualisierung der Firmware geschlossen werden.
Zunächst einmal sollten Sie mit dem folgenden Kommando eine Sicherheitskopie der alten Firmware erstellen.
cisp
.cisp -c c2n232 com1 -s firm-old.s19
cisp -c c2n232 /dev/ttyS0 -s firm-old.s19
Nun sollten Sie einmal kurz die Steckbrücke für das RESET-Signal (am Kassettenstecker) entfernen und wieder aufstecken, oder die Betriebsspannung des C2N232 kurz unterbrechen. Anschließend kann die neue Firmware mit dem folgenden Kommando eingespielt werden.
cisp
.cisp -c c2n232 com1 -e -l firmware.s19
cisp -c c2n232 /dev/ttyS0 -e -l firmware.s19
Eine Überprüfung der neu eingespielten Firmware ist mit diesem Kommando möglich (zuvor muss wiederum der RESET-Jumper kurz entfernt und wieder aufgesteckt werden).
cisp
.cisp -c c2n232 com1 -v firmware.s19
cisp -c c2n232 /dev/ttyS0 -v firmware.s19
cisp: failed to enable the programming mode
Haben Sie vergessen, die RESET-Leitung auf Masse zu ziehen oder das C2N232 mit Strom zu versorgen? Haben Sie die RS-232-Schnittstelle richtig verdrahtet? Unterstützt Ihr Unix-Rechner CTS/RTS-Handshake?
detect: device is locked
Da die RESET-Leitung nicht unter der Kontrolle des Programms
cisp
liegt, ist es schwer, diesen Fehler zu korrigieren.
Vor allem wird der AT90S2313 nach einem Programmiervorgang mit
cisp -l
alle Zusammenarbeit ablehnen. Um die Firmware zu
prüfen, müssen Sie entweder das C2N232 aus- und einschalten oder die
RESET-Brücke entfernen und zurückbringen.
Wenn Sie sich nicht eines selbst nach einem der Platinenlayouts bauen möchten, bitte nehmen Sie Kontakt mit Nicolas Welte auf. Die von Marko Mäkelä produzierte Adapter (130 Stück) sind ausverkauft geworden. Für die neueste Produktionsreihe betrug der Preis 20 € – inklusive Porto in die ganze Welt.
Sehen Sie sich unsere Bildergalerie an für weitere Bilder. Marko hat die Geräte ohne Gehäuse verkauft, aber Sie können es wie Nicolas Welte machen. Er hat ein DB9-nach-DB25-Gehäuse für das C2N232 angepaßt und die Unterseite des Kassettensteckers an das Gehäuse geklebt:
Dateiname | Zweck | Systeme |
---|---|---|
c2nload | Ein kleiner selbststartender Schnellader für das C2N232 | Commodore AmigaOS, Microsoft Windows und Unix-ähnliche Systeme; alle Commodore-Rechner, die von Kassette laden können |
c2n | Datasetten-Emulator für das C2N232 | Commodore AmigaOS, Microsoft Windows und Unix-ähnliche Systeme |
cbmlink | Dateiübertragung und Fernsteuerung von Commodore-Rechnern | Commodore AmigaOS, Microsoft Windows und Unix-ähnliche Systeme |
Alle Commodore-Programme sind in 6502-Assembler geschrieben worden, während alles andere in C implementiert wurde. Für Amiga- und Windows-Benutzer gibt es vorkompilierte Programme. Die Benutzer Unix-ähnlicher Systeme müssen die Programme zunächst aus dem Quelltext heraus kompilieren.
Die C2N232-Firmware-Seite enthält den Firmware-Quelltext und etwas Dokumentation. Wenn Sie den Code ändern möchten, werden Sie die GNU Binutils benötigen, um ihn zu übersetzen.
Das Programm cisp
, mit dem die Firmware auf den
AT90S2313 hochgeladen wird, ist auch auf der Firmware-Seite verfügbar.
Es funktioniert zumindest unter FreeBSD, Linux und Microsoft
Windows. Möglicherweise können Sie auch andere Software benutzen.
Die Idee, das C2N232 zu entwickeln, kam am 30. Juni 2001, als Marko Mäkelä einen Commodore-Hackerkameraden in Newcastle upon Tyne traf, Christopher Phillips. Christopher hatte keine Datenübertragungsschnittstelle zwischen seinem Commodore 64 und seinem Hauptrechner, Apple Macintosh. Die einzige sinnvolle Schnittstelle des Mac ist RS-232, und vorhandene Lösungen, die eine parallele Schnittstelle benötigen, kamen nicht in die Frage.
Der erste Prototyp wurde in July oder August gebaut, und die Entwicklung der Software startete zum gleichen Zeitpunkt.
Zuerst, etwas Code wurde geschrieben, um die Pulsbreiten des
Schreibsignals auszulesen, so daß die Einzelheiten des Datenformats
herausgefunden werden konnten. Die Informationen in Commodore 64 Whole Memory Guide
von Tim
Arnot waren ungenau. Das Programm c2n
, das Pulsen
auf Commodore-Kassetten kodiert und dekodiert, wurde geschrieben, und
cbmconvert
wurde mit dem Commodore-Kassettenformat
ergänzt.
Zunächst wurde die Funktion entwickelt, um Pulsen abzuspielen. Am 11. September 2001 wurden die letzten Fehler beseitigt, als Juha Kouri und Turo Heikkinen Marko in Espoo besuchten, um die Schaltung mit einem Speicheroszilloskop zu betrachten.
Die Entwicklung des schnellen Übertragungprotokolls dauerte mehrere
Monate wegen anderen Tätigkeiten. Das Protokoll wurde so gebaut, daß
es auf allen 8-Bit Commodore-Rechnern funktioniert. Wenn der Bus frei
ist, befinden sich beide Signale, READ und
WRITE, im logischen 1
-Zustand. Sowohl
das Empfangen als auch das Senden werden vom Commodore gestartet,
indem der WRITE-Signal auf 0
gezogen
wird. So wird der Protokoll richtig funktionieren, auch wenn der
Rechner den Register löscht, das fallende Flanken am READ-Signal erkennt, während der Bus frei ist. Das
Timing des Sendevorgangs ist sehr kritisch: der Prozessortakt muß
konstant bleiben.
Das Speicheroszi wurde wieder im Oktober oder November gebraucht, um das schnelle Übertragungsprotokoll an der Commodore 264-Reihe zu testen. In diesen Rechnern ist der READ-Signal ja nicht kantenempfindlich wie in allen anderen Commodore-Rechnern.
Eine Protoserie von zwanzig C2N232-Geräten wurde vor der
Serienproduktion
gebaut. Am 22. Mai 2002 wurde das erste Gerät
auf eine professionell hergestellte Leiterplatte zusammengelötet.
Die elektrischen Bauteile, die in April 2002 bestellt wurden, sind endlich Anfang Juli angekommen. Die ersten Geräte wurden Juli oder August 2002 geliefert. Alle 110 Geräte wurden in 2004 ausverkauft.
Im Sommer 2003 entwickelte ich für den C2N232 eine Verbindung zum seriellen Bus von Commodore. Die Verbindung emuliert ein Gerät wie Diskettenlaufwerk erfolgreich, aber aus irgendeinem Grund kann das verbesserte C2N232 nicht als Controller tätig sein, d.h., Befehle an ein Diskettenlaufwerk schicken. Ich habe die Entwicklung im Dezember 2003 eingestellt. Die aktuellste Firmware mit mangelhafter Unterstützung des seriellen Bus und meine Kurznotizen zum Testen sind verfügbar.
Ich habe keine Interesse, noch eine Serie von C2N232 zu produzieren. Nicolas Welte hat geplant, eine neue Version mit Hardware-Unterstützung für den seriellen Bus zu bauen, aber es dauert manchmal lange mit diesartigen Hobbyprojekten.
Juha Kouri und Turo Heikkinen haben mir bei der Erstellung und Vermessung der Prototypen geholfen. Nicolas Welte hat mir einige schwer erhältlichen Bauteilen versorgt.
Nicolas Welte und Wolfgang Moser haben Verbesserungen für dieses Dokument vorgeschlagen.