PC – Amiga Datenübertragung mit seriellem Null Modem Kabel
Es hat mich fast drei Wochenenden gekostet um herauszufinden wie die PC – Amiga Datenübertragung mit seriellen Null Modem Kabel funktioniert. Ich hoffe jedem der diesen Artikel ließt diese Arbeit zu ersparen. Die Datenübertragung war schlussendlich recht einfach, aber man hat bis dahin ungeahnte Hürden zu überwinden.
PC – Amiga Datenübertragung mit seriellem Null Modem Kabel
Das Setup sieht wie folgt aus: auf einen Amiga 500 sollen Daten (Programme, Spiele, usw.) übertragen werden. Die Diskette als Medium fällt aus, weil ich am PC kein 3,5 Zoll Diskettenlaufwerk habe. USB oder LAN sind aufgrund fehlender Schnittstellen am Amiga 500 nicht möglich. Was bleibt ist die gute alte serielle Schnittstelle.
Für meinen Testlauf verwende ich neben dem Amiga einen Raspberry Pi. Der kleine Rechner erweitert die Möglichkeiten des Retro Computers. In diesem Artikel zeige ich euch wie man Dateien über die serielle Schnittstelle vom PC auf den Amiga überträgt. In weiterer Folge soll aber eine bidirektionale Kommunikation möglich sein. Ich hoffe eines Tages vom Amiga auf die Linux Kommandozeile zu kommen (mit Telnet) und ihn auch ins Internet zu bringen.
Die Lösung
Bevor ich euch nun lange und detailliert erkläre was alles nicht funktioniert, hier die Lösung:
Raspberry Pi
Am Raspberry Pi muss man bei der ttyUSB0 Schnittstelle folgendes eingeben:
1 | stty 9600 -parenb cs8 crtscts -ixon -ixoff raw iutf8 -F /dev/ttyUSB0 |
an meinem Raspberry Pi steckt an einem beliebigen USB Stecker ein USB-Seriell Kabel. Falls diese Einstellungen bei euch nicht funktionieren, dann liegt das an etwas anderen. Glaubt mir, nur das funktioniert!
Amiga 500
Am Amiga 500 muss man mit der Workbench Diskette (Workbench 1.3) die Parameter der seriellen Schnittstelle einstellen. Dabei ist es ganz wichtig analog zum Raspberry Pi die gleichen Einstellungen zu setzen. Ihr könnt nach erfolgreichem Test gerne versuchen die Baud Rate zu erhöhen. Für den ersten Versuch stellen wir also folgendes ein:
Der Raspberry Pi ist direkt über USB mit einem speziellen USB-Serial Kabel am Serial Kabel des Amiga 500 angeschlossen. Das ganze sieht so aus:
Datei übertragen
Die Übertragung von Daten auf der seriellen Schnittstelle funktioniert in etwa so. Der Sender kippt die Daten in eine Leitung und am Ende der Leitung muss der Empfänger die Daten übernehmen und direkt ausgeben oder in eine Datei schreiben. Wichtig ist, dass der Empfänger bereit ist die Daten zu übernehmen. Starten wir die Übertragung zuerst am Sender, dann laufen die Daten einfach ins Leere. Wir definieren also zuerst den Empfänger, erst danach den Sender!
Amiga 500
Unser Empfänger. Wir müssen laufend etwas mit den eingehenden Daten machen. Die Übertragung füllt den Buffer (wir haben 16000 Bytes eingestellt). Danach kippen wir das in eine Datei und warten auf die nächsten 16000 Bytes usw. Dafür benötigen wir ein Programm. Im Internet findet man das receive.bas Amiga Basic Programm. Neben Dateinamen müssen wir auch die Dateigröße einstellen. Damit ist sichergestellt, dass wir die Buffergröße überwinden und die Datei exakt die korrekte Größe haben wird (ist nur relevant, wenn die Datei größer als der Buffer ist, was sehr wahrscheinlich ist). Der vollständige Code des Programms:
Wir starten nun am Amiga 500 dieses Script und geben bei der Abfrage nach Dateiname folgendes an:
1 | ram:lha.run |
Ram bedeutet in diesem Fall, dass die Datei mit dem Namen lha.run auf der RAM Disk vom Amiga erstellt wird. Über ram: wechselt man in der Shell in die RAM Disk, mit list werden alle Dateien angezeigt.
Bei der Dateigröße muss man die korrekte Anzahl an Bytes eingeben. Das ist der selbe Wert, der am Raspberry Pi über ls -l angezeigt wird.
Raspberry Pi
Um nun eine Datei zu übertragen müssen wir uns mit der Konsole vom Raspberry Pi über SSH verbinden. Dort kopieren wir uns die zu übertragenen Daten auch hin. Ich habe für den Test zum Beispiel eine lha Version für den Amiga 500 (Kickstart 1.3) heruntergeladen die ich danach auf einer Tools Diskette speichern möchte. Die Übertragung initialisieren wir mit:
1 | cat LhA_e138.run > /dev/ttyUSB0 |
Man braucht den Inhalt der Datei nur ausgeben und die Ausgabe gleich an das virtuelle Device unter Linux weiterleiten. Bei eingestecktem Kabel sollten die Daten direkt an der seriellen Schnittstelle am Amiga ankommen. Die beiden Befehle sehen in der Konsole so aus:
Nachdem die Datei komplett übertragen wurde bekommt man am Raspberry Pi den Eingabepromt zurück. Wir starten die Übertragung nun ein zweites mal. Warum? Es ist davon auszugehen, dass die letzten paar Bytes der Datei am Amiga noch im Buffer liegen. Das Dateiende liegt dort auch, wird aber erst in die Datei geschrieben, wenn der Buffer einmal voll wird.
Beim ersten Testlauf ist die Datei mit der korrekten Größe angekommen. Mit der lha Software kann ich nun lha Archive die ich übertrage auf leeren Disketten entpacken.
Fazit
Mit viel Kopfschmerzen habe ich es schlussendlich doch geschafft eine PC – Amiga Datenübertragung mit seriellem Null Modem Kabel herzustellen. Die Schwierigkeiten die ich dabei hatte zeigen sehr gut wie und USB und Co in den letzten Jahrzehnten verwöhnt hat. Nachdem man sich in das Thema eingearbeitet hat versteht man irgendwann die Basis aller Protokolle die Daten über Kabel (oder Luft) übertragen. Zumindest weiß man mit welche Probleme im Laufe der Zeit behoben werden mussten. Im nächsten Artikel habe ich alle Infos zusammengefasst, die schlussendlich zur korrekten Lösung geführt haben. Das Making of findet ihr über den Link.
Also mit dem Amiga-Explorer geht das um einiges einfacher, da dieser die Schritte teilautomatisiert unter einer Oberfläche vereint. Hat bei mir heute knapp eine Stunde gedauert, die Daten vom Amiga auf den PC zu sichern. 😉
den Amiga-Explorer gibt es aber nur für das Microsoft Betriebssystem. Da ich schon über 10 Jahre keines davon mehr benutze ist das keine Option. Außerdem ist das Programm eine kommerzielle Software und die Lizenz kostet etwas.