Beiträge von emulaThor im Thema „Tester gesucht für Arduino-basiertes d81-Floppy-Imaging-Utility (Abbilder von realen 1581-Disketten erstellen)“

    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.

    Atari XL/XE ?

    Ich bin kein Atari-User/Kenner, deshalb muss ich etwas ausholen:

    Vor ein paar Tagen hat kollokollo (aka Markus Hoffmann) im github-Repository vom ArduinoFloppyDiskReader Basic-Code präsentiert, mit dem man Atari-DD-Disks 3,5" lesen kann, Details siehe hier: Bitte melde dich an, um diesen Link zu sehen.

    Ich bin da gleich reingegrätscht und habe mich eingemischt, weil mich das ganze interessiert. Atari-Disks haben normale IBM/DOS-Sektoren so wie auch die 1581 und damit kann mein Python-Script die Tracks einfach dekodieren. Man muss nur die erwartete Sektorzahl pro Track konfigurierbar machen. EDIT: Kopiergeschützte Disks sind hier mal ausgenommen.

    Bei HD-Disks ist es so: Die Arduino-Firmware von Robert Smith supportet keine HD-Disks, aber hier hat kollokollo vor wenigen Tagen ein paar Änderungen an der Firmware präsentiert, die das Lesen von HD-Disks erlauben sollen. Ich will das unbedingt selbst testen, hatte aber noch keine Zeit dazu.

    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.

    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:

    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.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    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?

    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.

    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.

    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

    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: Bitte melde dich an, um diesen Link zu sehen.

    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 Bitte melde dich an, um diesen Link zu sehen. 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 Bitte melde dich an, um diesen Link zu sehen.. 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. :/

    Bitte melde dich an, um diesen Anhang zu sehen.

    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

    Hallo,

    basierend auf der Hardware vom Bitte melde dich an, um diesen Link zu sehen. 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 Bitte melde dich an, um diesen Link zu sehen. 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