Datei kopieren von U9 zu U8

  • Hallo,


    ich habe da mal eine kleine Frage: Ich möchte eine REL Datei, die ich auf Diskette habe (Format CBM 8250)

    auf mein PETSD kopieren. Wie stelle ich dieses an? Die Datei umfasst den gesamten Diskettenspeicherplatz.

    Meine Anlage ist zur Zeit wie folgt aufgebaut: CBM 8032 --> PETSD --> CBM 8250 --> CBM 3022.

    Das PETSD läuft als Laufwerk 8 und die CBM Floppy ist auf Laufwerk 9 eingestellt. Gibt es irgendein Kopierprogramm,

    mit dem man REL Dateien von Unit zu Unit kopieren kann?


    Gruß Björn

    The evil is always and everywhere.

  • Der COPY-Befehl lässt ja nur Kopien zwischen den beiden Laufwerken einer Einheit zu, weshalb das aus meiner Sicht schon mal flach fällt.


    Du könntest die Datei auf der Diskette zum Lesen öffnen und auf dem petSD zum Schreiben öffnen. Dabei die Inhalte Byte für Byte auslesen und übertragen (wird wohl ewig dauern)


    Oder


    über Zusatzhardware (Zoomfloppy und entsprechender Software) und den PC ein Diskimage erzeugen


    Edit: Eine Relative Datei bietet wahlfreien Zugriff auf die einzelnen Datensätze, ohne dass man das ganze File auslesen und durchsuchen müsste. Ich denke dem Threadersteller geht es weniger um die Art der Datei, sondern darum, dass die Datei nicht als Ganzes in den Arbeitsspeicher (Eine ganze Diskette) des 8032 passt und somit durch ein spezielles Kopierprogramm in Häppchen kopiert werden sollte.

    <--- Das da ist eine Hälfte meines Ichs

  • Wie Eloy_Dorian schon geschrieben hat, bietet dieser Dateityp wahlfreien Zugriff.

    Ich habe ein Programm, welches eine solche Datei lesen kann. Dies geht aber nur, wenn

    die Datei auf Laufwerk 8 vorhanden ist. Jetzt könnte ich wieder meine Floppy auf 8 umstellen,

    dazu habe ich aber gerade wenig Lust. Zoomfloppy besitze ich nicht. Ein kleines Kopierprogramm

    für solche Dateien wäre nicht schlecht. Ich würde nämlich gerne die Diskette, auf der sich die Datei befindet

    formatieren und vorher die Datei retten.

    The evil is always and everywhere.

  • Ist nicht auf der Demo-Diskette zur 8250 ein Kopierprogramm, welches in BASIC geschrieben wurde?


    Das könnte man doch umpfriemeln, dass es von Unit zu Unit kopiert?


    Ob die Lesepointer stimmen? Keine Ahnung! :nixwiss:


    <--- Das da ist eine Hälfte meines Ichs

  • Das umfriemel Programm ist gar nicht noetig.


    Bei der .REL Datei muss nur auf Unit 8 geoeffnet werden

    und dann gleich wieder auf Unit 9 geschrieben werden.

    Das ist kein Problem.

    Wenn man um die Feldlaengen weiss, gehts recht schnell.


    Aber ein guter Anstatz das in das Kopier Programm einzubauen

    und auch Moeglichkeiten mit einzubauen haendisch die Feldlaengen

    anhand der Inhalte zu ermitteln und dann dann zu kopieren.

    Alles geht - Nichts muß

  • Oder ist die Länge der Felder in der Dateien unbekannt ?

    Ist die Länge der Felder nicht fix? Mir deuchte, so wäre meine Erinnerung.

    Jupp. Die ist Fix. nur wenn viele Daten drin stehen und keine Zusammenhaenge

    erkennbar sind, ist es hilfreich zu wissen, welches Feld wie lang ist.


    Feld 1 = 10 Zeichen

    Feld 2 = 3 Zeichen

    Feld 3 = 7 Zeichen

    usw. usw.

    Alles geht - Nichts muß

  • Du könntest die Datei auf der Diskette zum Lesen öffnen und auf dem petSD zum Schreiben öffnen. Dabei die Inhalte Byte für Byte auslesen und übertragen (wird wohl ewig dauern)

    Schau mal einer an... Schon sind wir uns einig.

    Bei der .REL Datei muss nur auf Unit 8 geoeffnet werden

    und dann gleich wieder auf Unit 9 geschrieben werden.

    Das ist kein Problem.

    <--- Das da ist eine Hälfte meines Ichs

  • Hi Eloy,


    ich seh jetzt erst das im Quellcode von Unit zu Unit kopiert wird.

    Wenn das so funktioniert waere das Supi und eine Loesung fuer Ajax.


    Beim Bitweise kopieren hatte ich vor "kurzem" festgestellt, dass ein

    BitWeises kopieren einer .prg Datei den Effekt hatte, dass es hinterher

    keine Kennzeichnung mehr mir .prg im Directory gab.


    Mit #diddl unter anderem hatten wir diesbezueglich bereits einen

    Fred aufgemacht wo wir etwas darueber diskutiert hatten.

    Alles geht - Nichts muß

    • Offizieller Beitrag

    'Feldlängen' sind für die REL Datei nicht von Belang.

    Es gibt in einer REL Datei nur eine feste Recordlänge, die beim Anlegen der Datei definiert werden muß.

    Um eine REL Datei auf ein anderes Gerät zu kopieren, braucht man demnach die Recordlänge.

    Blockweises kopieren einer REL Datei kann nicht funktionieren, weil dann die Side-Sectors nicht mitkopiert werden.

  • INPUT# dürfte auch fehlschlagen, sobald irgendwelche Binärdaten enthalten sind - CHR$(0) und sowas.

    GET# dauert ewig.

    Eigentlich hilft da nur eine kleine Assemblerroutine, die eine definierte Anzahl von Zeichen abholt.


    Hatten wir nicht genau die gleiche Diskussion schonmal vor ein paar Monaten. Wollte da nicht jemand was schreiben?

    Oder war das im Nachbarforum?

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Gerade extra nochmal das Handbuch (8032) zur Hand genommen: Richtig, da steht auch drin, daß INPUT# maximal 80 Zeichen verarbeiten kann.

    Das ist die Größe des Input-Buffers.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • INPUT# dürfte auch fehlschlagen, sobald irgendwelche Binärdaten enthalten sind - CHR$(0) und sowas.

    GET# dauert ewig.

    Eigentlich hilft da nur eine kleine Assemblerroutine, die eine definierte Anzahl von Zeichen abholt.

    Moin #detlef,


    bei normalen Datenbank Anwendungen sollten keine 0 Zeichen enthalten sein,

    so daß ein lesen <-> schreiben von U8 zu U9 recht schnell gehen sollte.


    Ich glaube aber mal so ganz theoretisch, dass ein 0 Zeichen innerhalb der festgelegten

    Zeichenkette durchaus mit uebertragen wird. Der input# Befehl

    arbeitet ja doch etwas anders als der get# Befehl.

    Alles geht - Nichts muß

  • CHR$(0) ist für die Floppy die Ende-Markierung einer Zeichenkette. Unbenutze Zeichen am Ende eines Records werden mit CHR$(0) aufgefüllt.

    Bei INPUT# wird CHR$(0) nie mit übertragen.

    Eben das ist das Problem. Du kannst aber auch in REL-Dateien binäre Daten ablegen die 0-Bytes enthalten.

    Die kann man nämlich mit PRINT# schreiben und mit GET# lesen.


    Aber da es bei Satzgrößen > 80 Zeichen sowieso nicht klappt, hat sich INPUT# sowieso erledigt.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Naja, ich hab kein Problem mit input#

    und funktioniert Supi. 80 zeichen pro Feld sind auch ausreichend fuer mich.


    Wenns mit get#.....gut.


    Ich bleib bei input# ( geht schneller ) ::hacking::


    Interessant waere, was Ajax nun dazu sagt. ;)

    Alles geht - Nichts muß

  • Aber wie unterscheidest Du die dann von den Füllzeichen am Recordende?

    Das klappt nur, wenn Du weißt, wieviele Zeichen tatsächlich genutzt werden.

    Bei Binärdaten muss man sich sowieso selber um den Inhalt kümmern. Da gibt es keine halbgefüllten Records. ;)

    Man liest immer jeden Record komplett.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Bei Binärdaten muss man sich sowieso selber um den Inhalt kümmern. Da gibt es keine halbgefüllten Records. ;)

    Man liest immer jeden Record komplett.

    Also gehen doch chr$(0) Zeichen in dem "besagten/betagten" String ?! :tüdeldü:

    In der Regel werden in den REL-Dateien keine Binärdaten gespeichert sein. Also sollten die sich mit INPUT# lesen lassen, wenn die Recordgröße nicht größer als 80 Zeichen ist.

    Aber sicherheitshalber sollten man sich die Daten mal vorher anschauen.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

  • Nachdem der doofe HP Drucker ( Tolle HP Dru....) endlich installiert ist,

    setz ich mich nachher mkal ran und fuelle ein Datenbank Feld mit chr$(0) Zeichen

    und schaue mal was input# in der Praxis damit so anstellt........

    Alles geht - Nichts muß

  • Ich habe gerade nochmal ins Floppy-Handbuch geschaut. Ist halt schon so lange her. ;)


    Ne, INPUT wird nicht gehen, wenn du die Struktur der Records nicht kennst. Denn jeder Record kann ja mehrere Felder enthalten, die durch CHR$(13) getrennt sind und die einzeln mit INPUT gelesen werden müssen. Mit einem INPUT pro Record bekommt du immer nur das erste Feld.


    Die einzige zuverlässige Methode für das Kopieren von REL-Dateien, deren Record-Struktur man nicht kennt, ist das vollständige Lesen und Schreiben jedes Records mit GET# (oder einer Assembler-Routine).


    Wenn das eine einmalige Aktion ist, dann mach's halt mit GET und lass das Programm ein paar Stunden rödeln. :mrgreen:

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."