Kovertierung ASCII UNIX->CPM

  • Hallo!


    Ich möchte ein paar ASCII Texte von einer Linuxbox zu CP/M transferieren.


    Ich habe hier das Programm "FLIP" für Linux, welches CR/LF von Unix nach CP/M anpaßt.


    Diese Texte schreibe ich dann mit Supercopy nach CP/M-Format auf Diskette.


    Auf dem CP/M Rechner wird die Datei richtig dargestellt, die letzte Zeile ist aber immer Müll (und zwar zufälliger, bei jeder Datei anders).


    Kann sich jemand das erklären?


    Danke
    Stephan

  • Der Müll hängt aber hinter dem eigentlichen Text?


    CP/M zählt die Dateigröße in Records á 128 Byte. Deshalb gehört an den Schluss ein Control-Z.


    Viel Erfolg,
    Mr. AMS


    OK! Muss ich wohl ein kleines Pascalprogramm schreiben, was das unter DOS macht. Vielen Dank!

  • Der Müll hängt aber hinter dem eigentlichen Text?


    CP/M zählt die Dateigröße in Records á 128 Byte. Deshalb gehört an den Schluss ein Control-Z.


    Viel Erfolg,
    Mr. AMS


    OK! Muss ich wohl ein kleines Pascalprogramm schreiben, was das unter DOS macht. Vielen Dank!


    Welches CP/M ? Unter CP/M nutze ich VDE und schneide die letzten komischen Zeichen RAUS sofern welche da sind.



    https://sites.google.com/site/vdeeditor/Home/vde-files

  • Kannst Du auch direkt im Anschluß an flip in Linux machen. Eine Datei anlegen in der die anzuhängenden Bytes drinstehen und dann jede bereits umgewandelte Datei mit dieser per cat verknüpfen.

    Code
    1. for i in ls
    2. do cat $i DATEIMITBYTES >> $i
    3. done


    Schreibt direkt in die Ursprungsdatei.

  • Kannst Du auch direkt im Anschluß an flip in Linux machen. Eine Datei anlegen in der die anzuhängenden Bytes drinstehen und dann jede bereits umgewandelte Datei mit dieser per cat verknüpfen.

    Code
    1. for i in ls
    2. do cat $i DATEIMITBYTES >> $i
    3. done


    Schreibt direkt in die Ursprungsdatei.



    Das ist natürlich die Super-Elegante Lösung. Vielen Dank!

  • Noch eleganter wird es, wenn man in Zeile 1 schreibt

    Code
    1. for i in `ls`


    Dann funktionierts nämlich auch ... hüstl. Die Datei mit den Bytes sollte in einem anderen Verzeichnis liegen, sonst wird sie auch mit sich verknüpft und alle späteren bekommen dann die doppelte angehängt.

  • Noch eleganter wird es, wenn man in Zeile 1 schreibt

    Code
    1. for i in `ls`


    Dann funktionierts nämlich auch ... hüstl. Die Datei mit den Bytes sollte in einem anderen Verzeichnis liegen, sonst wird sie auch mit sich verknüpft und alle späteren bekommen dann die doppelte angehängt.


    Gibts eigentlich eine simple Möglichkeit, eine Textdatei mit dem Inhalt "CTRL-Z" zu erzeugen?

  • Keine Ahnung, ob's evtl. auch ganz einfach geht. Ich würde eine Datei anlegen und mit einem Hexeditor die Bytes, die man vorher mal in einer C/PM Datei nachschauen muß, direkt dort eintragen.
    ( "hd" geht, "tweak" ist angenehmer. )

  • In der Bash gibt's auch ein printf. Mit

    Code
    1. printf "\x1A" >> <Datei>


    wird an die <Datei> ein Ctrl-Z (Hex 0x1A) angehängt.
    Btw: Mit

    Code
    1. for i in `ls`

    bzw.

    Code
    1. for i in `$(s)

    wie es moderner heißt muss
    man vorsichtig sein, da "for" whitespaces als Trennzeichen
    nimmt. bei Dateien oder Pfaden mit Leerzeichen geht das
    schief. Hat man eine Datei die "A B" heißt, hat man nachher
    eine Datei "A" und eine Datei "B", die aus einem Ctrl-Z besteht
    und eine unveränderte Datei "A B".
    Sicherer geht sowas mit "find ... -print0 | xargs -0 ..."