software:vorstellung:exchanges:transfolio
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Vorhergehende Überarbeitung | |||
software:vorstellung:exchanges:transfolio [16/11/2008 22:11] – 8088 | — | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Einsatz und Funktionsweise des internen Datenübertragungsprogramms ====== | ||
- | ===== Einführung ===== | ||
- | |||
- | Der Portfolio verfügt über ein eingebautes Datenübertragungsprogramm, | ||
- | Kreuzt man Sende- und Empfangsleitungen im Kabel, können übrigens auch zwei Portfolios direkt miteinander kommunizieren. | ||
- | |||
- | {{software: | ||
- | |||
- | Auf der PC-Seite wird natürlich ebenfalls Software benötigt, die über die gegebene Beschaltung des Parallelports mit dem Portfolio kommunizieren kann. Atari lieferte hierzu mit dem Parallelportmodul das Programm FT.COM aus, das aber direkte I/ | ||
- | |||
- | ===== TransFolio als Alternative zu FT.COM ===== | ||
- | |||
- | Mit TransFolio gibt es seit Anfang 2006 eine Alternative zu FT.COM, die für Windows und Linux verfügbar ist. Sie soll es vor allem Portfolio-Neulingen oder Gelegenheits-Nostalgikern erleichtern, | ||
- | |||
- | Die aktuelle Version von Transfolio ist unter http:// | ||
- | |||
- | ==== Systemvoraussetzungen ==== | ||
- | |||
- | Das vorkompilierte TRANSFOLIO.EXE benötigt für die Zugriffe auf den Parallelport die Library " | ||
- | |||
- | Die Linux-Version benötigt das Kernelmodul ppdev, das für die Parallelportgerätedateien / | ||
- | |||
- | Sowohl für Windows als auch für Linux kann man sich nötigenfalls eine Programmversion mit direkten I/ | ||
- | Zur Compilierung eignet sich unter Linux (z.B.) gcc 3.3.4. Die Windows-Version wurde mit dem Compiler von [[http:// | ||
- | |||
- | |||
- | |||
- | |||
- | ==== Bedienung von Transfolio ==== | ||
- | |||
- | Transfolio ist ein reines Kommandozeilen-Tool, | ||
- | |||
- | < | ||
- | Transfolio 0.9 - (c) 2008 by Klaus Peichl | ||
- | |||
- | Syntax: ./ | ||
- | or ./ | ||
- | |||
- | -t Transmit file to Portfolio. | ||
- | Wildcards are not directly supported but may be expanded | ||
- | by the shell to generate a list of source files. | ||
- | -r Receive file(s) from Portfolio. | ||
- | Wildcards in SOURCE are evaluated by the Portfolio. | ||
- | In a Unix like shell, quoting is required. | ||
- | -l List directory files on Portfolio matching PATTERN | ||
- | -f Force overwriting an existing file | ||
- | -d Select parallel port device (default: / | ||
- | |||
- | Notes: | ||
- | - SOURCE may be a single file or a list of files. | ||
- | In the latter case, DEST specifies a directory. | ||
- | - The Portfolio must be in server mode when running this program! | ||
- | </ | ||
- | |||
- | Damit eine Verbindung zum Portfolio aufgebaut werden kann, muss dieser zunächst in den Server-Modus gebracht werden (System/ | ||
- | |||
- | ~/src> ./ | ||
- | TransFolio 0.8 - (c) 2006 by Klaus Peichl | ||
- | Fetching directory listing for a:\prg\*.* | ||
- | ATMD.COM | ||
- | LCDECHO.COM | ||
- | CCMIMAGE.COM | ||
- | TURBO.COM | ||
- | DEBUG.COM | ||
- | ALMBOOST.COM | ||
- | ATTR.COM | ||
- | ZIPMAN.COM | ||
- | F-METER.COM | ||
- | RC.COM | ||
- | RC.DAT | ||
- | TURBO.MSG | ||
- | |||
- | Mit der Option " | ||
- | |||
- | ~/src> ./ | ||
- | TransFolio 0.8 - (c) 2006 by Klaus Peichl | ||
- | Initializing transfer... | ||
- | Received 1368 of 1368 bytes | ||
- | |||
- | Die Übertragung in umgekehrter Richtung funktioniert analog unter Verwendung der Option " | ||
- | Die Option " | ||
- | |||
- | |||
- | |||
- | ==== Mehrere Dateien gleichzeitig senden ==== | ||
- | |||
- | === Methode 1: Auflistung mehrerer Quelldateien auf der Kommandozeile === | ||
- | |||
- | Ab Version 0.9 kann man anstelle des Quelldateinamens (SOURCE) auch eine aus mehreren durch Leerzeichen getrennten Dateinamen bestehende Liste angeben. Der Zieldateiname (DEST) muss dann ein Directory bezeichnen. Dies funktioniert sowohl beim Senden (Kommandozeilenschalter " | ||
- | |||
- | ~/src> ./ | ||
- | Transfolio 0.9 - (c) 2008 by Klaus Peichl | ||
- | Transmitting file 1 of 2: text1.txt -> a: | ||
- | Sent 440 of 440 bytes. | ||
- | Transmitting file 2 of 2: text2.txt -> a: | ||
- | Sent 1105 of 1105 bytes. | ||
- | |||
- | === Methode 2: Verwendung von Wildcards === | ||
- | |||
- | Der Einsatz von Wildcards (auch Jokerzeichen genannt), also " | ||
- | |||
- | ~/src> ./ | ||
- | Transfolio 0.9 - (c) 2008 by Klaus Peichl | ||
- | Transferring file 1 of 2: TEXT1.TXT | ||
- | Received 440 of 440 bytes | ||
- | Transferring file 2 of 2: TEXT2.TXT | ||
- | Received 1105 of 1105 bytes | ||
- | |||
- | Beim Versenden mehrerer Dateien vom PC zum Portfolio können Wildcards nur in einer Shell eingesetzt werden, die die Expansion der Jokerzeichen übernimmt. Dadurch bekommt Transfolio vom System eine Liste der passenden Dateinamen als Teil der Kommandozeile übergeben, so dass dieser Fall auf die oben beschriebene Methode 1 zurückgeführt wird. Die Eingabeaufforderung von Windows ist an dieser Stelle leider unzureichend. | ||
- | |||
- | === Methode 3: Steuerung per Shellscript === | ||
- | |||
- | Um mehrere Dateien in einen Ordner auf den Portfolio zu kopieren, gibt es ein Shellscript für Linux. Für Windows wird es auch bald geben. | ||
- | Dies kann man hier downloaden: http:// | ||
- | Zum installieren einfach downloaden und "chmod 777 tfdir.sh" | ||
- | Ohne Parameter kann man interaktiv die Ordner angeben: | ||
- | |||
- | ~/tmp# ./tfdir.sh | ||
- | Welches Verzeichnis soll kopiert werden? | ||
- | /tmp/bla | ||
- | In welchen Pfad auf den Portfolio, Ordner muessen vorher erstellt werden! | ||
- | a:\bla | ||
- | TransFolio 0.8 - (c) 2006 by Klaus Peichl | ||
- | Initializing transfer... | ||
- | Sent 1156 of 1156 bytes. | ||
- | TransFolio 0.8 - (c) 2006 by Klaus Peichl | ||
- | Initializing transfer... | ||
- | Sent 367 of 367 bytes. | ||
- | |||
- | Oder mit Parameter: | ||
- | |||
- | ~/tmp# ./tfdir.sh /tmp/bla/ a:\bla | ||
- | TransFolio 0.8 - (c) 2006 by Klaus Peichl | ||
- | Initializing transfer... | ||
- | Sent 1156 of 1156 bytes. | ||
- | TransFolio 0.8 - (c) 2006 by Klaus Peichl | ||
- | Initializing transfer... | ||
- | Sent 367 of 367 bytes. | ||
- | |||
- | Die -h Page: | ||
- | Dieses Script sendet alle Dateien die in einen Ordner sind mithilfe von transfolio an den Atari Portfolio | ||
- | Ohne Parameter startet es interaktiv und fragt die Pfade ab | ||
- | Mit Parameter: | ||
- | Parameter 1 = Quellordner | ||
- | Parameter 2 = Zielpfad, der Ordner muss aber vorher auf den Pofo existieren! | ||
- | | ||
- | Bei Bugs oder Probleme: chiaki_ai@gmx.de | ||
- | |||
- | ===== Das Datenübertragungsprotokoll des Portfolio ===== | ||
- | |||
- | Auch wenn die Verbindung über den Parallelport anderes vermuten läßt, erfolgt die Datenübertragung bitseriell mit je einer Daten- und Taktleitung für beide Richtungen. Da eine genaue Dokumentation bisher nicht verfügbar ist, soll das Übertragungsprotokoll hier soweit beschrieben werden, wie es im Rahmen der Entwicklung von TransFolio umgesetzt wurde. | ||
- | |||
- | ==== Übertragung eines Bytes ==== | ||
- | |||
- | Ein Byte wird wie gesagt seriell, beginnend mit dem höchstwertigen Bit, übertragen. Die vom Sender gesteuerte Datenleitung wird für ein Nullbit auf Lowpegel (0V) und für ein Einsbit auf Highpegel (5V) geschaltet. Die andere Datenleitung ist unbenutzt und bleibt auf Lowpegel. | ||
- | Die Taktleitungen befinden sich zunächst beide auf Highpegel. Für jedes der acht Bits kann die Übertragung in vier Schritte eingeteilt werden. Die Abbildung zeigt beispielhaft den Pegelverlauf für die aktive Datenleitung und die beiden Taktleitungen bei der Übertragung des Bytewerts 117. Da sowohl fallende als auch steigende Flanken der Taktleitungen zur Signalisierung genutzt werden, nehmen die Taktleitungen pro Byte vier mal den Lowzustand ein. | ||
- | |||
- | {{software: | ||
- | |||
- | ==== Übertragung von Datenblöcken ==== | ||
- | |||
- | Das BIOS des Portfolio bietet mit der Funktion 30h von Interrupt 61h die Möglichkeit, | ||
- | |||
- | Die folgende Tabelle zeigt den allgemeinen Ablauf der Übertragung eines Datenblocks auf Byte-Ebene. Die beiden linken Spalten geben die vom Sender bzw. Empfänger der Nutzdaten gesendeten Bytes wieder. | ||
- | |||
- | ^ Sender ^ Empfänger ^ Kommentar ^ | ||
- | | | 5A | Signalisiert Empfangsbereitschaft | | ||
- | | | ||
- | | n-Low | | Low-Byte der Blocklänge in Bytes | | ||
- | | n-High | | High-Byte der Blocklänge in Bytes | | ||
- | | Byte 1 | | Nutzdaten | ||
- | | Byte 2 | | Nutzdaten | ||
- | | ... | ||
- | | Byte n | | Nutzdaten | ||
- | | Check | | Prüfsumme | ||
- | | | Check | Bestätigung der Prüfsumme | | ||
- | |||
- | Bevor der Sender einen Datenblock übertragen kann, wartet er zunächst auf den Empfang des Bytes 5A (hex). Wenn z.B. der Portfolio im Server-Modus auf die Verbindung wartet, sendet er regelmäßig diesen Bytewert aus. Der eigentliche Transfer beginnt stets mit dem Wert A5, gefolgt von einer Längenangabe als 16-Bit-Wert (little endian). Danach folgt die angegebene Anzahl von Nutz-Bytes, abgeschlossen von einem Prüfsummenbyte. Der Empfänger quittiert den Erhalt der Daten durch das Senden seiner Prüfsumme, die bei einer fehlerfreien Übertragung mit der vom Sender berechneten Prüfsumme übereinstimmen muss. Das Prüfsummenbyte stellt den Wert dar, der nötig ist, um die Summe aller Nutzdaten und der Längenangabe auf das nächsthöhere Vielfache von 256 zu ergänzen. Zur Berechnung kann man von 0 beginnend alle einbezogenen Bytes mit einer 8-Bit-Subtraktion ohne Übertrag nacheinander vom aktuellen Ergebnis abziehen. | ||
- | |||
- | ==== Steuerprotokoll des Datenübertragungsprogramms ==== | ||
- | |||
- | Das Datenübertragungsprogramm des Portfolio - wie auch das Pendant FT.COM - können sowohl lokale Dateien versenden, als auch Dateien vom anderen Rechner anfordern. Außerdem bietet FT.COM die Möglichkeit, | ||
- | |||
- | === Directorylisting anfordern === | ||
- | |||
- | Die einfachste Funktion ist das Anfordern des Directorylistings zu einem bestimmten Suchpfad. Die entsprechende Kommandosequenz besteht aus einem Funktionscode, | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | ... | ||
- | | 3+len | 00 | Endmarke | ||
- | | ... | ||
- | | | ||
- | |||
- | Die Antwort des Portfolio auf so eine Anfrage fällt denkbar knapp aus. Der Ergebnisdatenblock enthält die Anzahl der gefundenen Dateien und ihre durch Nullbytes voneinander getrennten Namen. Weitere Informationen wie die Dateilänge oder das Erstellungsdatum sind nicht verfügbar. | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | | ... | ||
- | | ... | ||
- | | ... | ||
- | | ... | ||
- | | ... | ||
- | | ... | ||
- | |||
- | Nach dem Versand der Antwort befindet sich der Portfolio wieder in Bereitschaft und wartet auf weitere Kommandos. | ||
- | |||
- | === Datei anfordern === | ||
- | |||
- | Der erste Schritt vor der Übertragung einer Datei besteht darin, ihre Existenz auf dem Server zu erfragen. Dazu dient die oben beschriebene Directoryabfrage mit dem Dateinamen als Suchmuster. Ist die Datei vorhanden und in der Antwort gelistet, erfolgt die Anforderung der Datei selbst: | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | ... | ||
- | | 3+len | 00 | Endmarke | ||
- | | ... | ||
- | | | ||
- | |||
- | Der Portfolio antwortet hierauf mit einem 11 Byte langen Datenblock, der u.a. die Dateilänge enthält: | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | |||
- | Direkt im Anschluss folgt die Übertragung der Nutzdaten in einem oder mehreren Datenblöcken. Die Anzahl der benötigten Datenblöcke hängt von der Dateigröße und der Puffergröße des Portfolio ab. Die Puffergröße wiederum ist abhängig vom Arbeitsspeicher des Portfolio und liegt typischer Weise bei 7000 hex Byte = 28672 Byte. | ||
- | Wurden alle Datenblöcke empfangen, schließt der Empfänger die Kommunikation durch folgenden Datenblock ab: | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | |||
- | === Datei versenden === | ||
- | |||
- | Beim Übertragen einer lokalen Datei zum Server wird als erstes ein Datenblock gesendet, der insbesondere den Zieldateinamen und die Dateilänge beinhaltet: | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | | ||
- | | ... | ||
- | | 11+len | 00 | Endmarke | ||
- | | ... | ||
- | | | ||
- | |||
- | Der Server antwortet mit 3 Byte, die darüber Aufschluss geben, ob die Datei auf dem Server schon vorhanden ist und in wie großen Blöcken der Dateiinhalt versendet werden kann: | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | |||
- | Gegebenenfalls kann der Sender die Datei mit folgendem Kommando überschreiben lassen: | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | |||
- | Wenn das Überschreiben vom Benutzer nicht gewünscht wird, beendet er die Kommunikation durch das Abbruchkommando: | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | |||
- | Sofern die Übertragung nicht abgebrochen wurde, können jetzt die Nutzdaten in einem oder mehreren Blöcken versendet werden. Die maximale Blocklänge richtet sich nach der Puffergröße, | ||
- | |||
- | ^ Offset ^ Inhalt | ||
- | | | ||
- | | | ||
- | | | ||
- | |||
- | ---- | ||
- | Klaus Peichl, 2006-02-05 |
software/vorstellung/exchanges/transfolio.txt · Zuletzt geändert: 08/02/2023 22:02 von bttr