Kategorie: amiga floppy reader

Firmware & Frontend Updated to 1.010

I added the option to erase a complete disk, this will fill the entire disk with 4µs (2µs for HD media) flux transitions. The is also an option to pre erase while writing an image or formatting a disk. This helps when overwriting older or non-amiga formatted disks. Also all write operations should perform faster now.

This new version requires the latest ADF-Drive firmware.

You can find both in the Download section.

New Firmware & Application

New Version available, some new features.

I updated the Interface of the Frontend Application to be more logical and impleted some new features:

  • Compare – reads the disk in the drive and compares it to an adf-file on your harddrive.
  • Format – formats the disk in the drive in OFS, quickformat is available
  • AutoFormat – does the same, but like autorip it prompts you to change the disk and continues formating disks until you hit Abort.
  • Diskinfo – reads the Boot & Rootblock and displays infos and the used blocks bitmap
  • Settings – allows you to edit the timing parameters of adf-drive to compensate for problems with older drives. requires some knowledge about floppy drives, but you can always restore to default settings.
ADF-Copy/Drive Frontend v1.002

All-in-One Version for Windows (XP, Vista, 7, 8, 10), Linux, Raspberry Pi
New Features:
– more detailed diskinfo and used blocks
– format disk, format several disks
– changing drive timings for larger compatibility woth older drives, mtp mode on/off, number of retries and saving them to EEPROM
– compare disk to adf file.
– graphical overhaul of interface
– bugfixes of v1.001

Version: v1.002

The new Frontend requires a new firmware so make sure you update your firmware too.

ADF-Drive Firmware v1.001

Updated firmware with new features
– Saving settings in EEPROM, timings for the drive can be adjusted and saved.
– Several bugfixed and new functions for the updated frontend.
– This firmware works with ADF-Copy PCB v3 & v4 and the breadboard layout.

Version: v1.001

ADF-Drive Firmware v0.625 – Filedates & Blinkcodes

New Version available, some new features.

ADF Drive 0.625 Firmware

Updated firmware with new features – Filedates and error blinkcodes

Größe: 100kb
Version: v0.625

Changes

  • Time and Date for Amiga Files and the ADF Image
  • watchdog timer: resets the microcontroller after 8 seconds a fatal error occured
  • the internal LED of the Teensy used for signalling errorcodes:
    • 3 flashes then pause: read error
    • 5 flashes then pause: write error
    • slow flashing: out of memory error (might also cause a reset by watchdog)
    • fast flashing: no floppy drive detected or hardware error
  • read / write errors are also displayed as a message as the „DF0:“ drivename
  • formatting of HD Disks with the MTP interface should work now, HD support is still very fragile
  • improved error handling
  • bumped up the read and write retries
  • improved compatibility with Windows 7

 

New ADF-Drive Firmware 0.621 with Amiga File System support


I made some progress with the ADF-Drive firmware, now with Amiga Filesystem Support included, you can access the Amiga Disk like a usb thumb drive. It should be fully compatible with the ADF-Copy Application. There will be a new version soon.

Working:

  • Read / Write Files
  • Create Directories, delete empty Directories
  • Format DF0:
  • HD Disks should work, but they are very fragile, writes might fail.

Not (yet) working:

  • delete full diretories
  • rename files
  • time and date of files
  • some other stuff i forgot 🙂
  • when writing an adf image with drag and drop on DF0: the Name of the filesystem drive isnt updating correctly.
  • the MTP function won’t work with Windows XP, because of the missing MTP drivers on Win XP

Bugs: perhaps some you will discover, so always use write protect on your important disks.

Important things:

  • When using the ADF-Copy Application the USB funtion will be disabled, to reenable just remove the disk and reinsert it, then the image and filesystem drive will show up again.
  • After a write access wait for the drive light to go off and the motor stop before removing the disk, due to avoid excessive disk access i use some methods to cache the track and write modified track only on track change or shortly before stopping the motor.

You can find the new experimental Firmware „ADF-Drive 0.621“ in the download section, have fun!

ADF-Drive is here

Lange war es Still um ADF-Copy, nun habe ich in meinem Urlaub die Zeit gefunden die Firmware etwas weiter zu entwickeln und es ist ADF-Drive bei rausgekommen. Und das schöne ist, sie läuft auf der vorhandenen ADF-Copy Hardware!

 

ADF-Drive ist die Erweiterung um ein USB Speicherinterface was das Media Transfer Protokoll benutzt (MTP), dieses wird in der Regel von Handies,

Kameras und MP3 Playern benutzt und ermöglicht den Zugriff auf Dateien mit einem universellen Dateisystem was nicht Betriebssystem spezifisch ist. MTP wird von Windows ab Vista (und XP mit Media Player 10 update), MacOS, manchen Linux Versionen die libmtp installiert haben. Ich habe gelesen es gibt auch für AmigaOS einen Treiber, aber da beißt sich die Schlange in den eigenen Schwanz 😉

 

Die neue Firmware stellt ein Laufwerk zur Verfügung das sich formatieren lässt und mit Drag & Drop ADF Dateien von der Diskette erzeugen kann, aber auch auf eine Diskette schreiben kann. Die ADF-Datei wird einfach auf DF0: gezogen und der Schreibvorgang beginnt, bitte nicht auf das Icon von ADF-Drive ziehen, sonst gibts Murks beim schreiben. Wenn man im DF0: Verzeichnis ist muss man ggf. F5 drücken damit der Diskettenname aktualisiert wird.

Die Funktionalität das es sich auch von der App steuern lässt ist weiterhin vorhanden, nur man sollte nicht beides gleichzeitig versuchen, das kann zu ungewollten Ergebnissen führen.

Die neue Firmware findet sich wie immer im Downloadbereich.

ADF-Copy auf dem ESP32

In den letzten Wochen hab ich ein wenig mit dem ESP32 rumgebastelt, dies ist ein Mikrocontroller mit 2 CPUs, ne Menge RAM und integrierten WiFi. Mittlerweile läuft die ADF-Copy Firmware auf dem kleinen Ding 🙂

Verkompliziert wurde die Portierung durch mehrere Faktoren:

  • auf dem Ding läuft RTOS, steht für Real Time Operating System, dies wird u.a. benötigt damit die 2 CPUs zusammen laufen können und das WiFi funktioniert, leider verkompliziert das die Sache ein wenig.
  • die Interruptlatenz ist gigantisch, teilweise bis zu 700ns. Das ist zwar für einen Menschen eine unfaßbar kleine Zeitspanne, aber wenn man bedenkt das die Transitionen bei einer HD Diskette einen Abstand von 2µs (2000ns) haben können ist das schon gewaltig. Und die Interrupt Routinen die das Arduino Framework zur Verfügung stellt machens nur noch schlimmer.
  • die Timer können kein Input Capture. Bei einem Input Capture weißt man einem Timer einen Eingang des Chips zu der bei einem Wechsel (z.B. LO->HI) des Eingangspegels einen Interrupt auslöst und gleichzeitig den Zähler des Timers in ein spezielles Register sichert während der Timer weiterlaufen kann oder von Null neu startet.
  • zum Schreiben einer Diskette benutzte ich auch einen Timer der alle 2/4µs (HD/SD) einen Interrupt auslöst, mit der Latenz von bis zu 700ns natürlich auch keine Lösung.
  • Erschwerend kam noch hinzu das das RTOS alle 1ms den SystemTick (Uhrzeit) aktualisiert und mir dazwischen gehackt hat.

Bisherige Lösung ist es alles von Hand zu machen ohne Interrupts zu benutzen, ist nicht schön aber bisher die einzige Lösung die ich gefunden habe.Grob gesagt mache ich folgendes:

  1. Das Multitasking abstellen
  2. Alle Interrupts abstellen
  3. Timer starten
  4. Warten bis die Leseleitung auf High wechselt (Read ist negiert und somit low aktiv)
  5. Warten bis die Leseleitung auf Low wechselt (Transition der Magnetisierung der Diskette)
  6. Auslesen des Timers, Zähler auf Null setzen und neu starten
  7. Auswerten des Zähler -> 4,6,8µs Transition (oder 2,3,4µs bei HD) und ablegen im Streambuffer
  8. Auswerten ob gerade ein Sektoranfang vorliegt (Magicbytes) und merken.
  9. Prüfen ob der Streambuffer voll ist, wenn nein weiter bei 4.
  10. Interrupt wieder anstellen
  11. Multitasking erlauben.

Hiernach wird der Streambuffer anhand der gemerkten Sektoranfänge decodiert.

Ähnlich läuft das schreiben ab, bloss das ich dort ständig den Timer auslese ob 4µs (2µs bei HD) vergangen sind und ich das nächste Bit schreiben kann.

Ich hab noch nicht geprüft ob die WiFi Verbindung dadurch abbricht da ich den ESP32 für 200ms „dumm“ stelle, aber erstmal mussten die Grundfunktionen laufen.

Ziel ist es ein Standalone Gerät zu haben auf das man mit einem Webbrowser zugreifen kann um ADFs zu lesen/schreiben, Disketten formatieren, vielleicht sogar einen FTP Server drauf laufen zu lassen.

Mal sehen wie weit ich komme.

Neue Version der Applikation mit Multiplatform Support

Ich war mal wieder fleißig und habe in das Frontend Support für Linux und Raspberry Pi hinzugefügt. Ebenso das Interface mit hübscheren Buttons versehen und etwas schlanker gemacht.app_0967

Die App setzt auf allen Systemen eine saubere Java Runtime Envoronment (JRE) 8.x Installation voraus. Ich habe auf folgenden Platformen getestet:
Raspberry Pi 3 Model B, Ubuntu 16.04.1 Desktop amd64, Windows 7 32 bit, Windows XP Home, Windows 10 Home.

Bei WIndows XP und vermutlich Vista ist darauf zu achten das man die Seriellen Treiber für den Teensy installiert – http://www.pjrc.com/teensy/td_download.html

Bei Linux sollte man die udev rules installieren weil man sonst ohne root rechte nicht auf den seriellen Port des Teensy zugreifen kann.

Die App gibts im Download Bereich.

Have Fun!