PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:vorstellung:exchanges:transfolio

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
software:vorstellung:exchanges:transfolio [16/11/2008 22:11] 8088software:vorstellung:exchanges:transfolio [19/10/2014 10:10] 8088
Zeile 1: Zeile 1:
-====== Einsatz und Funktionsweise des internen Datenübertragungsprogramms ====== 
  
-===== Einführung ===== 
- 
-Der Portfolio verfügt über ein eingebautes Datenübertragungsprogramm, das über das Systemmenü gestartet werden kann und den Datenaustausch mit einem PC ermöglicht. Man benötigt dazu das Parallelportmodul für den Portfolio und ein Kabel, das die Parallelports von Portfolio und PC 1:1 (ohne Überkreuzungen) miteinander verbindet. Das Kabel kann voll beschaltet sein, es genügen aber die im Schaltbild eingezeichneten fünf Leitungen. 
-Kreuzt man Sende- und Empfangsleitungen im Kabel, können übrigens auch zwei Portfolios direkt miteinander kommunizieren. 
- 
-{{software:vorstellung:exchanges:pofokabel.png}} 
- 
-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/O-Port-Zugriffe vornimmt und sich somit nur unter DOS oder älteren Windows-Versionen (bis 98) nutzen läßt. 
- 
-===== 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, einen komplett leeren Portfolio zu neuem Leben zu erwecken. Wegen der prinzipbedingt recht bescheidenen Übertragungsgeschwindigkeit werden Poweruser nach der Erstinstallation sicherlich auf andere Übertragungsprogramme oder auf Wechselspeicher ausweichen. 
- 
-Die aktuelle Version von Transfolio ist unter http://www.people.freenet.de/pei/transfolio.zip erhältlich. Die Version 0.8 behebt einen Fehler im Windows-Executable, durch den Binärdateien fehlerhaft übertragen wurden. Zum Portfolio übertragene Programme lösten dort oft einen einen Exec-Fehler aus! 
- 
-==== Systemvoraussetzungen ==== 
- 
-Das vorkompilierte TRANSFOLIO.EXE benötigt für die Zugriffe auf den Parallelport die Library "inpout32.dll", die von der Webseite http://www.logix4u.net/ stammt. Die Library kann sich entweder im aktuellen Arbeitsverzeichnis befinden oder ins System-Directory kopiert werden. 
- 
-Die Linux-Version benötigt das Kernelmodul ppdev, das für die Parallelportgerätedateien /dev/parportX zuständig ist. Außerdem müssen entsprechende Zugriffsrechte vorhanden sein. 
- 
-Sowohl für Windows als auch für Linux kann man sich nötigenfalls eine Programmversion mit direkten I/O-Port-Zugriffen compilieren (siehe Quelltext). Diese Variante wird aber nur unter älteren Windows-Versionen bzw. nur mit Root-Rechten funktionieren. 
-Zur Compilierung eignet sich unter Linux (z.B.) gcc 3.3.4. Die Windows-Version wurde mit dem Compiler von [[http://www.digitalmars.com/|Digital Mars]] generiert, der ohne Installation auch mit [[http://www.winehq.com/|Wine]] unter Linux lauffähig ist. 
- 
- 
- 
- 
-==== Bedienung von Transfolio ==== 
- 
-Transfolio ist ein reines Kommandozeilen-Tool, das im Gegensatz zu FT.COM keinen interaktiven Betrieb und keinen Server-Modus kennt. Ein Vorteil gegenüber FT.COM ist aber die Fortschrittsanzeige während eines Transfers. Bei einem Aufruf von TransFolio ohne Argumente erhält man die Hilfeseite (hier die Linux-Version): 
- 
-<code> 
-  Transfolio 0.9 - (c) 2008 by Klaus Peichl 
- 
-  Syntax: ./transfolio [-d DEVICE] [-f] {-t|-r} SOURCE DEST 
-    or    ./transfolio [-d DEVICE] -l PATTERN 
- 
-  -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: /dev/parport0) 
- 
-  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! 
-</code> 
- 
-Damit eine Verbindung zum Portfolio aufgebaut werden kann, muss dieser zunächst in den Server-Modus gebracht werden (System/Dateienübertragung/Bedienen). Das Abrufen eines Verzeichnisinhalts des Portfolio vom PC aus ist mit der Kommandozeilenoption "-l" möglich (Die Anführungszeichen im Beispiel sind nur unter Linux nötig): 
- 
-  ~/src> ./transfolio -l "a:\prg\*.*" 
-  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 "-r" kann man nun z.B. die Datei RC.DAT zum Sichern auf den PC übertragen: 
- 
-  ~/src> ./transfolio -r "a:\prg\rc.dat" rc.dat 
-  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 "-t". In beiden Fällen kann zusätzlich die Option "-f" angegeben werden, wenn eine bereits vorhandene Datei auf dem Zielrechner überschrieben werden soll. 
-Die Option "-d" bzw. "-p" (je nach compilierter Version) dient der Auswahl des Parallelports. In der Windows-Version und der Linux-Version mit direkten I/O-Zugriffen gibt das auf "-p" folgende Kommandozeilenargument die Basisadresse des Parallelports an (für hexadezimales Zahlenformat kann der Prefix 0x der Zahl vorangestellt werden). 
- 
- 
- 
-==== 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 "-t") als auch beim Empfangen (Kommandozeilenschalter "-r") mehrerer Dateien. Das folgende Beispiel sendet 2 Textdateien vom PC zum Portfolio. Auch hier sind die Anführungszeichen nur in einer Unix/Linux-Shell erforderlich: 
- 
-  ~/src> ./transfolio -t text1.txt text2.txt "a:\texte" 
-  Transfolio 0.9 - (c) 2008 by Klaus Peichl 
-  Transmitting file 1 of 2: text1.txt -> a:\texte\text1.txt 
-  Sent 440 of 440 bytes. 
-  Transmitting file 2 of 2: text2.txt -> a:\texte\text2.txt 
-  Sent 1105 of 1105 bytes. 
- 
-=== Methode 2: Verwendung von Wildcards === 
- 
-Der Einsatz von Wildcards (auch Jokerzeichen genannt), also "*" und "?", hängt von der Übertragungsrichtung ab. Beim Empfang mehrerer Dateien vom Portfolio durch den PC übernimmt der Portfolio die Expansion der Jokerzeichen. Unter Linux muss das SOURCE-Argument wieder in Anführungszeichen stehen, um die Expansion durch die Shell zu vermeiden. Beispiel zur Übertragung mehrerer Dateien vom Portfolio ins aktuelle Arbeitsverzeichnis des PC: 
- 
-  ~/src> ./transfolio -r "a:\texte\text?.txt" . 
-  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://chiaki.mine.nu/tfdir.sh 
-Zum installieren einfach downloaden und "chmod 777 tfdir.sh" machen, damit es ausführbar wird. 
-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! 
-   ./tfdir.sh quell a:\progs 
-  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:vorstellung:exchanges:pofotransfer.png}} 
- 
-==== Übertragung von Datenblöcken ==== 
- 
-Das BIOS des Portfolio bietet mit der Funktion 30h von Interrupt 61h die Möglichkeit, Datenblöcke zu übertragen, ohne dass der Programmierer sich selbst um das zugrunde liegende Protokoll kümmern muss. Diese Funktionen werden auch vom eingebauten Datenübertragungsprogramm benutzt. 
- 
-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 | 
-|   A5             | Leitet die Übertragung eines Datenblocks ein | 
-| n-Low  |           | Low-Byte der Blocklänge in Bytes  | 
-| n-High |           | High-Byte der Blocklänge in Bytes | 
-| Byte 1 |           | Nutzdaten   | 
-| Byte 2 |           | Nutzdaten   | 
-|  ...             | 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, ein Directorylisting vom Portfolio anzuzeigen. Prinzipiell übernimmt eine Kommunikationsseite die Steuerung während die andere Seite in den Server-Modus ("Bedienen") versetzt werden muss. Im folgenden werden die wichtigsten Kommandosequenzen aufgeführt, die der steuernde Rechner dem Server zusendet und welche Antwort erwartet wird. Wie erwähnt werden alle Datenpakete über die oben beschriebenen Blocktransferfunktionen abgewickelt. 
- 
-=== Directorylisting anfordern === 
- 
-Die einfachste Funktion ist das Anfordern des Directorylistings zu einem bestimmten Suchpfad. Die entsprechende Kommandosequenz besteht aus einem Funktionscode, der maximalen Empfangspuffergröße, sowie dem bis zu 79 Zeichen langen Suchmuster. Ist das Suchmuster kürzer als 79 Zeichen, muss es mit einem Nullbyte terminiert und der Rest des 82 Byte langen Datenblocks beliebig ergänzt werden. 
- 
-^ Offset ^  Inhalt   ^ Bedeutung ^ 
-|      |    06     | Funktionscode "Directorylisting anfordern" | 
-|      |    00     | Puffergröße Low           | 
-|      |    70     | Puffergröße High          | 
-|      |    ...    | Suchpfad (z.B. C:\*.*)    | 
-|  ...      ...    | noch Suchpfad (len Bytes) | 
-|  3+len |    00     | Endmarke                  | 
-|  ...      ...    | Platzhalter (Inhalt ohne Bedeutung) | 
-|   81      ...    | Platzhalter (Inhalt ohne Bedeutung) | 
- 
-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   ^ Bedeutung ^ 
-|      |   n-Low   | Low-Byte der Dateianzahl  | 
-|      |   n-High  | High-Byte der Dateianzahl | 
-|      |    ...    | Dateiname 1               | 
-|  ...      00     | Trennmarke                | 
-|  ...      ...    | Dateiname 2               | 
-|  ...      00     | Trennmarke                | 
-|  ...      ...    | ...                       | 
-|  ...      ...    | Dateiname n               | 
-|  ...      00     | Endmarke                  | 
- 
-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   ^ Bedeutung ^ 
-|      |    02     | Funktionscode "Datei anfordern" | 
-|      |    00     | Puffergröße Low           | 
-|      |    70     | Puffergröße High          | 
-|      |    ...    | Pfad und Dateiname       | 
-|  ...      ...    | noch Pfad/Name (len Bytes) | 
-|  3+len |    00     | Endmarke                   | 
-|  ...      ...    | Platzhalter (Inhalt ohne Bedeutung) | 
-|   81      ...    | Platzhalter (Inhalt ohne Bedeutung) | 
- 
-Der Portfolio antwortet hierauf mit einem 11 Byte langen Datenblock, der u.a. die Dateilänge enthält: 
- 
-^ Offset ^  Inhalt   ^ Bedeutung ^ 
-|      |    20     | OK | 
-|      |    F5        | 
-|      |    6F        | 
-|      |    2D        | 
-|      |    87        | 
-|      |    35        | 
-|      |    34        | 
-|      | n-LowLow  | Dateilänge (32-Bit-Wert) | 
-|      | n-LowHigh | Dateilänge (32-Bit-Wert) | 
-|      | n-HighLow | Dateilänge (32-Bit-Wert) | 
-|   10   | n-HighHigh | Dateilänge (32-Bit-Wert) | 
- 
-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   ^ Bedeutung ^ 
-|      |    20     | OK  | 
-|      |    00         | 
-|      |    03         | 
- 
-=== 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   ^ Bedeutung ^ 
-|      |    03     | Funktionscode "Datei versenden" | 
-|      |    00     | Puffergröße Low           | 
-|      |    70     | Puffergröße High          | 
-|      |    0C        | 
-|      |    7A        | 
-|      |    21        | 
-|      |    32        | 
-|      | n-LowLow  | Dateilänge (32-Bit-Wert) | 
-|      | n-LowHigh | Dateilänge (32-Bit-Wert) | 
-|      | n-HighLow | Dateilänge (32-Bit-Wert) | 
-|   10   | n-HighHigh | Dateilänge (32-Bit-Wert) | 
-|   11      ...    | Pfad und Dateiname       | 
-|  ...      ...    | noch Pfad/Name (len Bytes) | 
-| 11+len |    00     | Endmarke                   | 
-|  ...      ...    | Platzhalter (Inhalt ohne Bedeutung) | 
-|   89      ...    | Platzhalter (Inhalt ohne Bedeutung) | 
- 
-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   ^ Bedeutung ^ 
-|      |    21     | 21="OK",   20="Datei existiert schon" | 
-|      |    00     | Puffergröße Low           | 
-|      |    70     | Puffergröße High          | 
- 
-Gegebenenfalls kann der Sender die Datei mit folgendem Kommando überschreiben lassen: 
- 
-^ Offset ^  Inhalt   ^ Bedeutung ^ 
-|      |    05     | Funktionscode "Datei überschreiben" | 
-|      |    00     | Puffergröße Low           | 
-|      |    70     | Puffergröße High          | 
- 
-Wenn das Überschreiben vom Benutzer nicht gewünscht wird, beendet er die Kommunikation durch das Abbruchkommando: 
- 
-^ Offset ^  Inhalt   ^ Bedeutung ^ 
-|      |    00     | Funktionscode "Kommunikation abbrechen" | 
-|      |    00        | 
-|      |    00        | 
- 
-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, die der letzten Antwort des Servers zu entnehmen war. Sobald alle Datenblöcke erfolgreich transferiert wurden, quittiert der Server schließlich noch einmal mit einer 3-Byte-Sequenz: 
- 
-^ Offset ^  Inhalt   ^ Bedeutung ^ 
-|      |    20     | OK | 
-|      |    D7        | 
-|      |    39        | 
- 
----- 
-Klaus Peichl, 2006-02-05 
software/vorstellung/exchanges/transfolio.txt · Zuletzt geändert: 08/02/2023 22:02 von bttr