Maker Pro
Maker Pro

help needed to understand floppy drives


May 27, 2011
May 27, 2011
I need some help understanding exactly how data is sent to and retrieved from a floppy disk drive. (For reference, I am planning to program an Atmel micro as a floppy disk controller).

After a bit of googleing (and 3 hours spent tapping wires togther on a floppy drive), this is what i have so far;

Density Select (pin2) (cont > fdd)
this pin selects whether we are using double density (40 tracks per side) or high density (80) disks. I'm not sure whether it's high state or low for high density.

Index (pin8) (fdd > cont)
This is a pulse from the drive that occours once per revoloution. it is used for syncronisation.

Motor enable A(pin10) B(pin16) (cont > fdd)
this sets the fdd motor spinning. active low.

Drive Select A(pin14) B(pin12) (cont > fdd)
This selects the drive and makes the light on the front light up. active low.

Direction (pin18) (cont > fdd)
this controls the direction that the floppy heads move when a step signal is sent.

Step (pin 20) (cont > fdd)
this pin makes the floppy disk heads step in and out. direction controlled by pin 18. i'm not sure if this is active low or high, but i think active low. im not sure if it moves in stepper motor steps or floppy disk tracks, but i think the latter.

Write Data (pin22) (cont > fdd)
this pin contains the data to be written to the disk.

Write Enable (pin 24) (cont > fdd)
when this pin is active data is written to the disk. when it is not active data is read from the disk. i think it is active low, but im not sure.

Track 00 (pin26) (fdd > cont)
this signal is active when the drive heads are in posotion 00 (which i belive is in the centre)
i think it is active low.

Write Protect (pin28) (fdd > cont)
active when the write protect hole in the disk is open. once again, i think its active low.

Read Data (pin 30) (fdd > cont)
this is the data read from the disk.

Head select (pin 32) (cont > fdd)
tells the drive which side of the disk to read from / write to.

Disk Change / Ready (pin 34) (fdd > cont)
im not sure whether this is asserted whenever thair is a disk in the drive or whether its asserted when the disk motor has reached a stable speed.

so yeah, thats what i have on floppy drives so far.
if anyone has any more information about how the data is encoded/decoded (perticulay if its amiga format, since this is my eventual goal) please add it to this post so that other people can use it too.

i promis that if i find out a lot on this subject then ill post it all togther somewhere online.