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
software:vorstellung:exchanges:transfolio [16/11/2008 22:11] 8088software:vorstellung:exchanges:transfolio [08/02/2023 22:02] (aktuell) – Credits am Seitenanfang eingefügt bttr
Zeile 1: Zeile 1:
 ====== Einsatz und Funktionsweise des internen Datenübertragungsprogramms ====== ====== Einsatz und Funktionsweise des internen Datenübertragungsprogramms ======
 +
 +Ursprungstext: [[info:pantheon#klaus_peichl|Klaus Peichl]] 2006-02-05
  
 ===== Einführung ===== ===== Einführung =====
Zeile 9: Zeile 11:
  
 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. 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 ===== ===== TransFolio als Alternative zu FT.COM =====
Zeile 14: Zeile 18:
 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. 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!+Die aktuelle Version von Transfolio ist unter http://leute.server.de/peichl/transfolio.zip erhältlich. Die Version 0.9 erlaubt die Angabe mehrerer Quell-Dateien per Kommandozeile; außerdem wurden einige Fehler korrigiert. 
  
 ==== Systemvoraussetzungen ==== ==== Systemvoraussetzungen ====
- +Das vorkompilierte TRANSFOLIO.EXE für Windows benötigt für die Zugriffe auf den Parallelport einen TreiberAuf der Webseite http://www.logix4u.net/ gibt es einen solchen für 32-Bit-Systeme in Form einer Library namens "inpout32.dll". Diese DLL-Datei ist bereits in transfolio.zip enthalten und muss vor dem Aufruf von Transfolio nur ins aktuelle Arbeitsverzeichnis oder ins System-Directory kopiert werden. Für 64-Bit-Windows-Versionen gibt es stattdessen bei [[http://www.highrez.co.uk/Downloads/InpOut32/default.htm|www.highrez.co.uk]] eine Weiterentwicklung des Treibers mit Installationsprogramm. 
-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.+TRANSFOLIO.EXE verwendet die voreingestellte Port-Adresse 0x378. Insbesondere bei Verwendung einer PCI-Schnittstellenkarte kann die tatsächliche Adresse des Parallelports davon abweichen und muss dem Programm mit dem Kommandozeilenparameter -p <Adresse> mitgeteilt werden (z.B. -p 0xe010).
  
 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. 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.
Zeile 24: Zeile 29:
 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. 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. 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.
 +
  
  
Zeile 32: Zeile 38:
  
 <code> <code>
-  TransFolio 0.- (c) 2006 by Klaus Peichl+  Transfolio 0.- (c) 2008 by Klaus Peichl
  
   Syntax: ./transfolio [-d DEVICE] [-f] {-t|-r} SOURCE DEST   Syntax: ./transfolio [-d DEVICE] [-f] {-t|-r} SOURCE DEST
     or    ./transfolio [-d DEVICE] -l PATTERN     or    ./transfolio [-d DEVICE] -l PATTERN
  
-  -t  Transmit file to Portfolio +  -t  Transmit file to Portfolio
-  -r  Receive file from 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   -l  List directory files on Portfolio matching PATTERN
   -f  Force overwriting an existing file   -f  Force overwriting an existing file
   -d  Select parallel port device (default: /dev/parport0)   -d  Select parallel port device (default: /dev/parport0)
  
-  The Portfolio must be in server mode when running this program!+  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> </code>
  
Zeile 73: Zeile 86:
 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 Ü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). 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 ==== ==== Mehrere Dateien gleichzeitig senden ====
  
-=== Methode 1: Auflistung mehrerer Quelldateien auf der Kommandozeile+=== 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: 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:
Zeile 205: Zeile 219:
 === Datei anfordern === === 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:+Der erste Schritt vor der Übertragung einer Datei besteht darin, ihre Existenz auf dem Server zu erfragen. Dazu dient die oben beschriebene Directory-Abfrage mit dem Dateinamen als Suchmuster. Ist die Datei vorhanden und in der Antwort gelistet, erfolgt die Anforderung der Datei selbst:
  
-^ Offset ^  Inhalt   ^ Bedeutung ^ + Offset  ^  Inhalt  ^ Bedeutung                            
-  0    |    02     | Funktionscode "Datei anfordern"+    0    |    02    | Funktionscode "Datei anfordern"      
-  1    |    00     | Puffergröße Low           +    1    |    00    | Puffergröße Low                      
-  2    |    70     | Puffergröße High          +    2    |    70    | Puffergröße High                     
-  3    |    ...    | Pfad und Dateiname       +    3    |    ...   | Pfad und Dateiname                   
- ...      ...    | noch Pfad/Name (len Bytes) | +   ...      ...   | noch Pfad/Name (len Bytes)           
- 3+len |    00     | Endmarke                   +  3+len  |    00    | Endmarke                             
- ...      ...    | Platzhalter (Inhalt ohne Bedeutung) | +   ...      ...   | Platzhalter (Inhalt ohne Bedeutung)  
-  81   |    ...    | 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:+Der Portfolio antwortet hierauf mit einem 11 Byte langen Datenblock, der u. a. die Dateilänge enthält:
  
-^ Offset  Inhalt   ^ Bedeutung ^ + Offset  ^    Inhalt    ^ Bedeutung                
-  0    |    20     | OK | +    0    |      20      | OK                       
-  1    |    F5        +    1    |      00      Puffergröße Low          
-  2    |    6F        +    2    |      70      Puffergröße High         
-  3    |    2D     |    +    3    |    t-Low     | Dateizeit (16 Bit) ...   
-  4    |    87        | +    4    |    t-High    | ... im Format von [[https://www.ctyme.com/intr/rb-2992.htm#Table1665|Int 21/AX=5700h]]  
-  5    |    35     |    +    5    |    d-Low     | Dateidatum (16 Bit) ...  
-  6    |    34        | +    6    |    d-High    | ... im Format von [[https://www.ctyme.com/intr/rb-2992.htm#Table1666|Int 21/AX=5700h]]  
-  7    | n-LowLow  | Dateilänge (32-Bit-Wert) | +    7    |   n-LowLow   | Dateilänge (32 Bit)      
-  8    | n-LowHigh | Dateilänge (32-Bit-Wert) | +    8    |  n-LowHigh   | Dateilänge (32 Bit)      
-  9    | n-HighLow | Dateilänge (32-Bit-Wert) | +    9    |  n-HighLow   | Dateilänge (32 Bit)      
-  10   | n-HighHigh | Dateilänge (32-Bit-Wert) |+   10     n-HighHigh  | Dateilänge (32 Bit)      | 
 + 
 +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 typischerweise bei 7.000 hex Byte = 28.672 Byte.
  
-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: Wurden alle Datenblöcke empfangen, schließt der Empfänger die Kommunikation durch folgenden Datenblock ab:
  
-^ Offset ^  Inhalt   ^ Bedeutung ^ + Offset  ^  Inhalt  ^ Bedeutung  
-  0    |    20     | OK  +    0    |    20    | OK         
-  1    |    00         +    1    |    00    --         
-  2    |    03         |+    2    |    03    --         |
  
 === Datei versenden === === Datei versenden ===
Zeile 244: Zeile 259:
 Beim Übertragen einer lokalen Datei zum Server wird als erstes ein Datenblock gesendet, der insbesondere den Zieldateinamen und die Dateilänge beinhaltet: 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 ^ + Offset     Inhalt    ^ Bedeutung                           
-  0    |    03     | Funktionscode "Datei versenden"+    0    |      03      | Funktionscode "Datei versenden"     
-  1    |    00     | Puffergröße Low           +    1    |      00      | Puffergröße Low                     
-  2    |    70     | Puffergröße High          +    2    |      70      | Puffergröße High                    
-  3    |    0C     |    +    3    |    t-Low     | Dateizeit (16 Bit) ...              
-  4    |    7A        | +    4    |    t-High    | ... im Format von [[https://www.ctyme.com/intr/rb-2992.htm#Table1665|Int 21/AX=5700h]]  
-  5    |    21     |    +    5    |    d-Low     | Dateidatum (16 Bit) ...             
-  6    |    32        | +    6    |    d-High    | ... im Format von [[https://www.ctyme.com/intr/rb-2992.htm#Table1666|Int 21/AX=5700h]]  
-  7    | n-LowLow  | Dateilänge (32-Bit-Wert) | +    7    |  n-LowLow    | Dateilänge (32-Bit-Wert)            
-  8    | n-LowHigh | Dateilänge (32-Bit-Wert) | +    8    |  n-LowHigh   | Dateilänge (32-Bit-Wert)            
-  9    | n-HighLow | Dateilänge (32-Bit-Wert) | +    9    |  n-HighLow   | Dateilänge (32-Bit-Wert)            
-  10   | n-HighHigh | Dateilänge (32-Bit-Wert) | +   10     n-HighHigh  | Dateilänge (32-Bit-Wert)            
-  11   |    ...    | Pfad und Dateiname       +   11    |      ...     | Pfad und Dateiname                  
- ...      ...    | noch Pfad/Name (len Bytes) | +   ...        ...     | noch Pfad/Name (len Bytes)          
-| 11+len |    00     | Endmarke                   + 11+len       00      | Endmarke                            
- ...      ...    | Platzhalter (Inhalt ohne Bedeutung) | +   ...        ...     | Platzhalter (Inhalt ohne Bedeutung) | 
-  89      ...    | 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: 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 ^ + Offset  ^  Inhalt  ^ Bedeutung                                
-  0    |    21     | 21="OK",   20="Datei existiert schon" | +    0    |    21    | 21 = "OK", 20 = "Datei existiert schon"  
-  1    |    00     | Puffergröße Low           +    1    |    00    | Puffergröße Low                          
-  2    |    70     | Puffergröße High          |+    2    |    70    | Puffergröße High                         |
  
 Gegebenenfalls kann der Sender die Datei mit folgendem Kommando überschreiben lassen: Gegebenenfalls kann der Sender die Datei mit folgendem Kommando überschreiben lassen:
  
-^ Offset ^  Inhalt   ^ Bedeutung ^ + Offset  ^  Inhalt  ^ Bedeutung                           
-  0    |    05     | Funktionscode "Datei überschreiben"+    0    |    05    | Funktionscode "Datei überschreiben"
-  1    |    00     | Puffergröße Low           +    1    |    00    | Puffergröße Low                     
-  2    |    70     | Puffergröße High          |+    2    |    70    | Puffergröße High                    |
  
 Wenn das Überschreiben vom Benutzer nicht gewünscht wird, beendet er die Kommunikation durch das Abbruchkommando: Wenn das Überschreiben vom Benutzer nicht gewünscht wird, beendet er die Kommunikation durch das Abbruchkommando:
  
-^ Offset ^  Inhalt   ^ Bedeutung ^ + Offset  ^  Inhalt  ^ Bedeutung                               
-  0    |    00     | Funktionscode "Kommunikation abbrechen"+    0    |    00    | Funktionscode "Kommunikation abbrechen"
-  1    |    00     |    | +    1    |    00    | --                                      
-  2    |    00        |+    2    |    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:+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.
  
-^ Offset ^  Inhalt   ^ Bedeutung ^ +Sobald alle Datenblöcke erfolgreich transferiert wurden, quittiert der Server schließlich noch einmal mit einer 3-Byte-Sequenz: 
-  0    |    20     | OK | + 
-  1    |    D7        + Offset  ^  Inhalt  ^ Bedeutung  
-  2    |    39        |+    0    |    20    | OK         
 +    1    |    D7((bei Modell HPC-004)) o. D8((bei Modell HPC-006))  FIXME      
 +    2    |    39    FIXME      |
  
----- 
-Klaus Peichl, 2006-02-05 
software/vorstellung/exchanges/transfolio.1226870961.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)