Simple FloppyShield

Designed to be cheep and easy to make.
I have a stack of floppy drives sitting around and I figured I could use them to experiment with :slight_smile:
I figured header pins would be cheaper then a full connector

Wire jumper needed between jp5 and 6
Took a bit of research to figure this all out.

there should probably be another jumper selection for JP4 to connect the step pin to pin 13 on the arduino for more experimenting.

just starting to work on the rough code for this

please post comments suggestions and or errors I have made

nice idea, I guess… but do I get this right: you want to connect a 3.5" floppy drive to the Arduino? My floppy cables have 2x17=34 pins… is this the same connector that you created?

nice idea, I guess... but do I get this right: you want to connect a 3.5" floppy drive to the Arduino? My floppy cables have 2x17=34 pins... is this the same connector that you created?

yes this is the same connector, all the odd pins are ground so they are not all needed. X marks the usual key

So where's the firmware? Can you use the FAT code from SD-card apps, or is that strictly FAT16 (floppies use FAT12, right?)

(I've been having second thoughts about how much effort ought to be expended toward "obsolete" technology...)

And on the third hand, how about going the other way? Make an arduino with a sizable eeprom or SD card LOOK like a floppy to a host computer. I've heard that there have been actual commercial efforts along these lines...

Make an arduino with a sizable eeprom or SD card LOOK like a floppy to a host computer. I've heard that there have been actual commercial efforts along these lines...

I've just finally thrown away a smart media card adapter that pretended to be a floppy disk (after last seeing a floppy disk drive about ten years ago), so it's definitely possible. I wouldn't have thought it's easy though, interfacing with the read/write head...

Andrew

interfacing with the read/write head...

I meant an arduino circuit that acted as the whole floppy drive, not just the disk. No need to talk to the heads!

I meant an arduino circuit that acted as the whole floppy drive, not just the disk. No need to talk to the heads!

Ah. That would be easier...

What would be even easier still is to shove the SD card into your PC's card reader but I guess that would be cheating.

Andrew

So the Arduino will synthesise the signal that would normally have been produced by the floppy disk head and read amplifier? If so, this'll be a useful device for the classic computer collectors who want to keep old machines running!

this’ll be a useful device for the classic computer collectors who want to keep old machines running!

Yes, exactly. (I too have a pile of floppy drives, and disks, but they collect dust and stuff, and I have doubts that they’d work all that well in another decade. An all-solid-state, no-moving-parts simulator would probably last better…)

If you can get this to work, make sure you support 3", 3.5", 5.25" and 8" simulated drives! And how about adding a speaker for the authentic ‚Äúclunk‚ÄĚ from the larger sizes?

Plus a little pager motor to make the thing vibrate, too. ;)

the main trick is to figure out how the original floppy controller timings worked. with a lot of trial and error I have some ideas but not the full picture figured out yet.

int ledPin = 13; // led

//mappings of floppy connector
int Head_select = 2;
int Read_data = 3;
int DRP = 4; //Drive write protected
int IAT0 = 5; //Is at track zero
int En_write = 6;
int Write_data = 7;
int Step_dir = 8;
int Spin_on = 9;
int Drive_A = 10;
int Drive_B = 11;
int Index = 12;

int drivebuffer = 0;     // data read / written goes here

void setup()
{
  Serial.begin(9600);
//Outputs
  pinMode(ledPin, OUTPUT);  
  pinMode(Head_select, OUTPUT);
  pinMode(En_write, OUTPUT); 
  pinMode(Write_data, OUTPUT);
  pinMode(Step_dir, OUTPUT);
  pinMode(Spin_on, OUTPUT); 
  pinMode(Drive_A, OUTPUT);
  pinMode(Drive_B, OUTPUT); 
//Inputs
  pinMode(Index, INPUT);
  pinMode(IAT0, INPUT); 
  pinMode(DRP, INPUT); 
  pinMode(Read_data, INPUT);  
 //###########   Logic Inverse!! ###############
  digitalWrite(Head_select, 0); // Top head?
  digitalWrite(En_write, 1);  //No Write!!
  digitalWrite(Write_data, 1); //No Write!!
  digitalWrite(Step_dir, 0); // 0= step forward 1 = step back on index
  digitalWrite(Spin_on, 1); // start the drive spinning
  digitalWrite(Drive_A, 0); // Select Drive A
  digitalWrite(Drive_B, 1); // Drive B off
  digitalWrite(ledPin, HIGH);
}

void loop()
{
  drivebuffer+= digitalRead(Read_data);
  Serial.println(drivebuffer);
}

my first test. I wired everything up on a bread board. First thing I noticed is I forgot to add the ability to disable the stepper motor so they heads are stepping every rotation of the disk X_x

I couldn't read any info from the disk at all. I was seeing was 0 on the serial output. is the write_data pin also the data pin for reading? and the read pin a switch to enable read?

http://www.hermannseib.com/documents/floppy.pdf

Hi all. I've found this thread almost by chance, and I would like to know if there's someone who can give me instruction about the project in object.

Hope it's not too late :) I've just received a bunch of old pc drives, so I wanted to know if they could be used in some way.

Thank you all,

Luca

Most classic computer buffs who have odd floppy drives or whatnot, and don't have original hardware (or need to transfer data to a PC and don't have any other way) use one of these devices:

http://www.jschoenfeld.com/products/catweasel_e.htm

Hopefully, one of these days, they make it USB compatible (hell, even PCI would be nice); most other enthusiasts have other ways of transferring their data (null modem cable is popular).

Now something else that might be interesting would be hooking up an IDE hard drive the the Arduino:

http://mylinuxisp.com/~jdbaker/oldsite/SmallSys/8bitIDE.html

Of course, once again, SD cards just make the most sense if storage is your goal; I think what would be a nice update to the library is if there were a way for the Arduino to create the file on the fly, instead of it needing to be pre-existing...

Yesterday I found that there are ide to compact flash adapters. I wonder if is maybe possibile to use one of these things to treat the ide interface like a cf card. I've seen more resources for cf rather than pure ide interfaces.

Bye, Luca

The CF interface and pinout is almost identical to IDE; really, those adaptors are almost straight-through devices. Still, doing this would only be useful to the point of saying "I did it", which may be enough for your purposes; really, I think sticking with an SD card is the better way to go (and honestly, working on the library and giving it the capability to write files and deal with fragmentation would be the best thing to do).

:)

Thank you for suggestions, cr0sh. In fact, i'm not sure I'm skilled enough to treat pure engineering topics like fragmentation and disk sector management. I just wanted to try playing with my old floppies, 'cause I discovered that arduino-IDE implementations are not so documented on the web. It would be cool to experience with new devices.

So, it would be amazing to have some starting hints about floppy interfaces. I found a nearly completed report about PIC and IDE connections. here is the link:

http://www.pjrc.com/tech/8051/ide/wesley.html#8255con

Unfortunately i don't already know how much reliable is this stuff, applied to my project idea, and what parts are reusable. I will give a better look this days, then I'll see.

Bye, Luca

A relatively low cost ($USD55) USB interface for reading/transferring a large number of legacy floppy disks to your PC is Device Side Data's FC5025.

I have one on order for transferring some disks from the long-deceased TI 99/4A home computer. I'll report back on results.