Skip to content

Shadocko/beaglefloppy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

beaglefloppy

Floppy disk preservation using a BeagleBone Black

This is a quick-and-dirty project based on an idea borrowed from Christian Zietz of using a computer-driven logic analyzer to capture raw flux data from a floppy drive for software preservation.

Instead of using a USB logic analyzer and an FTDI adapter as GPIO, this project is using a BeagleBone, leveraging onboard PRU through beaglelogic to acquire flux data, and embedded GPIOs to control the floppy drive.

Raw floppy data is written in SuperCard Pro image file format, which can be read by many MFM emulation programs, like e.g. HxC Floppy Emulator.

I had a stash of Commodore Amiga disks with data I did not want to lose, but no working Amiga to read them, hence this project. For this reason, some values are hard-coded for Amiga DD floppy preservation, but feel free to fork and improve this project!

Wiring

Connecting BeagleBone outputs to floppy inputs requires a buffer with open-collector outputs; SN7407 is a classic reference.

Connecting floppy drive outputs to BeagleBone logic inputs only requires a pull-up resistor to the 3.3V line, any value around 1000 Ohms should do it.

Everything can be powered with a single 5V DC supply capable of delivering 2-3 Amps. There is normally no need to supply 12V to 3.5" floppy drives.

BeagleBone pins used for data acquisition (all pins on P8 header) must be disconnected at the time of booting the board.

For an IBM/PC floppy drive, wiring will be:

  • P9_11 (GPIO_30) ---[buffer]---> floppy pin 32 (SIDE1)

  • P9_13 (GPIO_31) ---[buffer]---> floppy pin 18 (DIR)

  • P9_15 (GPIO_48) ---[buffer]---> floppy pin 20 (STEP)

  • P9_12 (GPIO_60) <---[1K pullup to P9_3]--- floppy pin 26 (TRK00)

  • GND ------> floppy pin 10 (MOTEA)

  • GND ------> floppy pin 14 (DRVSA)

  • P8_39 (GPIO_76) <------ DGND

  • P8_40 (GPIO_77) <------ DGND

  • P8_41 (GPIO_74) <------ DGND

  • P8_42 (GPIO_75) <------ DGND

  • P8_43 (GPIO_72) <------ DGND

  • P8_44 (GPIO_73) <------ DGND

  • P8_45 (GPIO_70) <---[1K pullup to P9_3]--- floppy pin 30 (RDATA)

  • P8_46 (GPIO_71) <---[1K pullup to P9_3]--- floppy pin 8 (INDEX)

All odd-numbered floppy drive pins must be connected to ground. Other pins shall be left floating.

Building and running

To build the program, just run

gcc beaglefloppy.c -o beaglefloppy

Beaglelogic will be needed to run the program. The easiest solution is to use a readily available boot image like this one.

To perform a floppy capture, as root, just run

./beaglefloppy image.scp

Enjoy!

About

Floppy disk preservation using a BeagleBone Black

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages