Hello, Guest the thread was called567 times and contains 22 replays

last post from franky74 at the

Tester gesucht für Arduino-basiertes d81-Floppy-Imaging-Utility (Abbilder von realen 1581-Disketten erstellen)

  • Hallo,


    basierend auf der Hardware vom Arduino Amiga Floppy Disk Reader/Writer von Robert Smith (der hier im Forum schon einen eigenen Thread hat), arbeite ich an einem Software-Utility, mit dessen Hilfe man eine 1581-Diskette auslesen kann und ein d81-Image von dieser Diskette erstellen kann. Dabei wird als Diskettenlaufwerk ein klassisches PC-Laufwerk genutzt und über einen Arduino per USB an einen beliebigen Rechner angebunden. Da mein Tool Python-basiert ist, sollte es auf allen gängigen Betriebssystemen (Windows und Linux teste ich) laufen.


    Mein Projekt pyAccess1581 habe ich vor ein paar Tagen auf github veröffentlicht, nachdem ich seit August dran gearbeitet habe.


    Dort habe ich im Readme versucht, ein paar mehr Details zum Projekt zu beschreiben und zu klären.


    Da ich kein 1581-Diskettenlaufwerk besitze, suche ich Leute mit validen 1581-Disketten, die Lust haben, das Tool zu testen. Falls Ihr keine Lust habt, die Hardware nachzubasteln, würde ich mich auch schon darüber freuen, falls Ihr mir 1-2 Disketten zuschicken könntet. Ich kann dann genau soviele Disketten zu Euch zurückschicken (DD-Disketten habe ich im Haus, aber eben vom Amiga, nicht von der 1581).


    Mein Python-Tool kann man testen auch ohne Arduino, es hat ab heute Abend einen Simulations-Modus eingebaut, wo nur so getan wird, als würde man mit dem Arduino kommunizieren. Details dazu kann ich bei Bedarf erklären.


    Viele Grüße

    emulaThor

  • Schöne Idee ... darf ich fragen, was die Vorteile/Unterschiede gegenüber den Open CBM Tools sind?


    [EDIT]


    Gut, man braucht keine 1581 ... :D

    Wäre also sinnvoll, wenn man viele 1581-Disks hat/bekommt, aber keine 1581 hat um diese auszulesen.

    Verstanden.


    [/EDIT]

  • Ich finde es auch ein sehr interessantes Projekt. gerade der Ansatz über den Arduino gefällt mir.

    Für unser MEGA65 Projekt könnten wir halt eher die umgedrehte Funktionalität gebrauchen (D81 Images auf Diskette schreiben. Dann könnte man endlich ein altes Laufwerk, kurzfristig an einen neuen PC hängen und muss nicht jedesmal die alte WinXP Kiste hochfahren).

    Aber ich beeindruckt und freue mich jedesmal, wenn ich sehe, was für tolle Projekte hier im Forum entstehen.

    Danke auf jeden Fall für's Teilen !

  • ...

    Da ich kein 1581-Diskettenlaufwerk besitze, suche ich Leute mit validen 1581-Disketten, die Lust haben, das Tool zu testen. Falls Ihr keine Lust habt, die Hardware nachzubasteln, würde ich mich auch schon darüber freuen, falls Ihr mir 1-2 Disketten zuschicken könntet. Ich kann dann genau soviele Disketten zu Euch zurückschicken (DD-Disketten habe ich im Haus, aber eben vom Amiga, nicht von der 1581).

    ...

    Ich besitze eine 1581 und natürlich auch die dazugehörigen Disketten. Ich kann dir gern ein paar Disketten zusenden. ( Disketten mit Unterverzeichnissen; SpieleDisk ; Geos-Startdisketten; GEOS-Arbeitsdisketten ...) würde mich nur freuen, wenn ich die wieder zurückbekommen würde. Da ich im Moment nicht viel Zeit habe, kann ich das nicht selber testen.

    Mein "1581-Lese-Schreib-Tool" auf Teensy-Basis kann keine Unterverzeichnisse / Geos. (Habe einfach zu wenig Zeit...)

    Also: PN mit Deiner Anschrift und ich schicke dir ein paar Disketten zu.

  • Danke Euch für Euer Interesse und Eure netten Worte!

    Schöne Idee ... darf ich fragen, was die Vorteile/Unterschiede gegenüber den Open CBM Tools sind?

    Ich benutze selbst gern OpenCBM mit meiner 1541 II. Da ich keine 1581 besitze, weiß ich leider nicht, wie lange es dauert, mit 1581+OpenCBM ein d81-Image von einer Diskette zu erstellen. Mein Bauchgefühl momentan wäre, dass es mit dieser Python-Arduino-Lösung hier schneller geht (derzeit 82 Sekunden pro Diskette), weil man nicht über die IEC-Schnittstelle gehen muss, aber das ist reine Spekulation. Ich hatte aufgrund dieser für mich offenen Frage einen Benchmarking-Aufruf gestartet: Commodore 3,5" Floppy Disk Imaging Benchmarks (d81, d2m, adf)


    Schneller als Linux mit meinem Uralt-PC aus 2002 kann man bestimmt kein d81 generieren - dort dauert es 44 Sekunden. Robert Smith braucht mit seinem C++-Code für eine Amiga-Diskette 60 Sekunden. Ich brauche mit meinem Python-Skript 80 (derzeit) Sekunden, über Performance-Optimierungen könnte man evtl. noch ein paar Sekunden rausholen, aber das ist mir momentan nicht wichtig (Retries wegen natürlich auftretenden Lesefehlern werden hier gerade ignoriert).


    Dieses Projekt muss man meines Erachtens von der Hardware her aufrollen: Was bekommt man, wenn man die Hardware bastelt? Man bekommt ein Paket aus drei verschiedenen Disk-Formaten, die man lesen (und bei Amiga-ADF auch schreiben kann). (Das von mir sehr geschätzte und genutzte neue Projekt Fluxengine kann noch mehr Formate lesen, ich will das nicht unerwähnt lassen.)

    • Hier ist zuerst einmal das Amiga-ADF-Format zu nennen (Robert Smith's Leistung), was man mit einem alten PC + nur einem alten PC-Floppy-Laufwerk einfach nicht gelesen oder geschrieben kriegt. Da gibt es keine Alternative wie OpenCBM, aber andere jüngere Projekte mit ähnlichem Aufbau wie ADF-Copy. Die Autoren beider Projekte (Robert Smith / Dominik Tonn) mussten beide gezwungenermaßen Code schreiben, um Disketten im MFM-Format zu verarbeiten. Auf diesen Code (in meinem Fall der bei Roberts Lösung) baue ich auf. Ich bekomme schon den roten Teppich ausgerollt, weil 1581-Disketten auch im MFM-Format sind.
    • Der 1581-Sektoraufbau ist gleich zum Sektoraufbau von DOS-Disketten. Um einen 1581-Sektor zu parsen, musste ich Python-Code schreiben, der DOS-Sektoren parsen kann. Bei der 1581 ist zwar ein Sektor mehr in jedem Track als bei DOS-Disketten, und die Ober- und Unterseite sind vertauscht, aber dieser Unterschiede bedeutet nur einen minimalen Mehraufwand in der Verarbeitung.
    • Weil ich nun DOS-Sektoren parsen kann, kann ich auch DOS-Disketten lesen, solange es Double Density Disks sind.

    Was bringt mir das DOS-Lesen? Ich kann endlich diese Diskette in meiner Sammlung wieder lesen... Das ist meine einzige DD-Diskette für DOS. :/


    Für unser MEGA65 Projekt könnten wir halt eher die umgedrehte Funktionalität gebrauchen (D81 Images auf Diskette schreiben. Dann könnte man endlich ein altes Laufwerk, kurzfristig an einen neuen PC hängen und muss nicht jedesmal die alte WinXP Kiste hochfahren).

    Robert Smith hat sein Amiga-Reader-Projekt in 2017 gestartet und dem Projekt 2018 das Schreiben beigebracht, nachdem er ein Jahr daran rumgetüftelt hat, das Schreiben hinzugkriegen. ;) Ich persönlich habe auch keine Freude daran, meinen 2002er-PC hochzufahren, wo noch ein Laufwerk drin ist, wenn ich d81 auf Disk schreiben will.


    Ich will derzeit erstmal wissen, ob mein Python-Tool überhaupt schon alles lesen kann. :D


    Viele Grüße

    emulaThor

  • Ich besitze eine 1581 und natürlich auch die dazugehörigen Disketten. Ich kann dir gern ein paar Disketten zusenden. ( Disketten mit Unterverzeichnissen; SpieleDisk ; Geos-Startdisketten; GEOS-Arbeitsdisketten ...) würde mich nur freuen, wenn ich die wieder zurückbekommen würde. Da ich im Moment nicht viel Zeit habe, kann ich das nicht selber testen.

    Mein "1581-Lese-Schreib-Tool" auf Teensy-Basis kann keine Unterverzeichnisse / Geos. (Habe einfach zu wenig Zeit...)

    Also: PN mit Deiner Anschrift und ich schicke dir ein paar Disketten zu.

    Hallo greg64 , vielen Dank für Dein Angebot! Ich melde mich bei Dir! Wo finde ich Dein Tool auf Teensy-Basis? Viele Grüße emulaThor

  • Mein "1581-Lese-Schreib-Tool" auf Teensy-Basis kann keine Unterverzeichnisse / Geos. (Habe einfach zu wenig Zeit...)

    Also: PN mit Deiner Anschrift und ich schicke dir ein paar Disketten zu.

    Interessant, was hier alles so auftaucht. :D

    Ich hatte vor etwa einem Jahr versucht, GCR-Disketten (1541) mit einem Teensy 3.2 zu lesen. Was prinzipiell auch geklappt hat, aber leider erstmal sehr unzuverlässig. Kann aber auch an meinem damaligen freiverdrahteten Aufbau gelegen haben. Aus Zeitgründen konnte ich dann erstmal nicht weitermachen, und dann kamen wieder andere Projekte dazwischen.

    Teensy, weil ich keine Lust auf AVR-Assembler hatte und ein 16MHz-Arduino das in reinem C leider nicht schafft.


    Kryoflux möchte ich nicht unterstützen, weil es kein Open Source ist. Sonst hätte ich die 100 Euro längst investiert. :D

  • Ich besitze ....

    Hallo greg64 , vielen Dank für Dein Angebot! Ich melde mich bei Dir! Wo finde ich Dein Tool auf Teensy-Basis? Viele Grüße emulaThor

    Hast das Tool selber genannt : ADF-Copy auf Tennsy 3.2-Basis

    kann mit OPEN CBM auch 1581-Disketten lesen -Mit Abstrichen- Keine Komplettcopie möglich, wenn die Disk Unterverzeichnisse enthält. Man muss also erst in das Unterverzeichnis wechseln, wenn man den Inhalt copieren will. Hat aber mit DEL, USR, SEQ und REL Daten so seine Probleme. (USR und DEL wurden oft als "Trenner" benutzt - Wie auch in den 64'er Heftdisketten ) Disketten mit Trackmanipulation gehen nicht ( GEOS-Startdiskette für 1581 - überlanger Track). Habe aber die neueste Version von ADF-Copy noch nicht ausprobiert.

  • Das oben erwähnte Open-Source-Projekt Fluxengine soll GCR und 1541-Disks lesen können mit einem PC-5,25"-Diskettenlaufwerk. Ich habe kein solches 5,25"-Laufwerk und meine Versuche, über ebay Kleinanzeigen eins zu kaufen, waren bisher erfolglos.

    Fluxengine werde ich mir auf jeden Fall anschauen, wenn ich das Thema wieder angehe. Du hattest da glaube ich schon in einem anderen Thread drauf hingewiesen.


    Ich habe 2 Diskettenlaufwerke - 1 x 360K und 1 x 1.2MB. Auf ebay werden im Moment 5 1/4" Laufwerke ab 35 Euro angeboten. Keine Ahnung, was die taugen. Günstiger wird man die wohl kaum bekommen.

    Hier z.B. ein Mitsumi:

    https://www.ebay.de/itm/Disket…D509V3-Retro/193150816544

  • Hast das Tool selber genannt : ADF-Copy auf Tennsy 3.2-Basis

    kann mit OPEN CBM auch 1581-Disketten lesen -Mit Abstrichen- Keine Komplettcopie möglich, wenn die Disk Unterverzeichnisse enthält. Man muss also erst in das Unterverzeichnis wechseln, wenn man den Inhalt copieren will. Hat aber mit DEL, USR, SEQ und REL Daten so seine Probleme. (USR und DEL wurden oft als "Trenner" benutzt - Wie auch in den 64'er Heftdisketten ) Disketten mit Trackmanipulation gehen nicht ( GEOS-Startdiskette für 1581 - überlanger Track). Habe aber die neueste Version von ADF-Copy noch nicht ausprobiert.

    Finde ich interessant, ich hätte mehrere Fagen dazu, aber am besten nicht hier im Thread (Wo und wie kommt bei Dir OpenCBM ins Spiel?). In meinem Tool ist ja (wie schon in der Privatnachricht geschrieben), dass einfach jeder Track gelesen wird, die Sektoren geparst werden, und alle Sektorinhalte zusammengeklatscht werden zu einem validen d81-File. Das heißt, ich schaue (bisher) nicht rein, was auf der Disk ist, wie das Directory aussieht, wo die Einzeldateien liegen, etc.

  • Bin gerade stolz: Habe einen Bug in meinem Code gefunden und behoben, der das Auslesen eines Tracks nochmal beschleunigt, weil man beim Auslesen das Abwarten des Index-Pulses vernachlässigen kann. Wo vorher das Lesen der ganzen Diskette zuletzt 82 Sekunden gedauert hat (mein erstes experimentelles Coding vor 4 Wochen hat 6 Minuten gebraucht), dauert das Auslesen nach dem Bugfix nun nur noch 63 Sekunden! Also nochmal 19 Sekunden eingespart. :thumbsup:


    Damit ist mein Python-Ansatz jetzt nur noch 3 Sekunden langsamer als das C++-Coding von Robert Smith zum Amiga-Disk-Lesen und damit bin ich doch sehr zufrieden.

  • So, kurze Rückmeldung: Ich konnte (mit Fluxengine und auch) mit meinem Python-Tool von den Disketten von greg64 Images erstellen (d81), die dann auch im Emulator funktionieren. Meine Geschwindigkeitsoptimierung auf 63 Sekunden harmoniert nicht so gut mit allen Real-Life-Disks (ich bin da noch auf Fehlersuche), deswegen gehe ich momentan etwas konservativer ran, damit es zuverlässiger funktioniert. Dann wäre man aber noch bei 80-90 Sekunden Lesedauer.


    Die von Fluxengine geschriebenen d81-Files sind identisch zu den d81-Files aus meinem Python-Tool (über Hash-Werte kontrolliert).


    Sachfrage an 1581-Experten: Welche Arten von Kopierschutz gibt es für 1581-Disketten?

  • Zum Thema 5,25"-Floppy-Laufwerk: Ich habe Glück gehabt und gerade ein TEAC-Laufwerk geschossen über ebay Kleinanzeigen. Der sehr nette Verkäufer hat's prompt verschickt und hier ist es. Der Preis war auch noch weit unter ebay - jetzt muss es nur noch funktionieren.


  • Um zum Thema des Threads zurückzukommen: Bei mehreren Floppy2PC-USB-Microcontroller-Projekten wie FluxEngine, dem Amiga-Reader von Rob Smith und dem neuen, interessanten Greaseweazel-Projekt tut sich momentan recht viel, einige Projekte beeinflussen sich gerade gegenseitig. Da ich den Eindruck habe, dass das Interesse an solchen Floppy-Reader-Lösungen nicht so hoch ist, will ich jetzt nicht weiter ins Detail gehen.


    Ich habe gelernt vor ein paar Tagen, dass mein Python-Skript mit dem Arduino-Floppy-Reader auch Atari-Disketten lesen könnte, dafür brauche ich nur ein paar Zeilen zu ergänzen.