Skip to content

Instantly share code, notes, and snippets.

@btb
Last active April 12, 2024 17:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save btb/18a7da84ff37ebcd76e1522620b4cd44 to your computer and use it in GitHub Desktop.
Save btb/18a7da84ff37ebcd76e1522620b4cd44 to your computer and use it in GitHub Desktop.
Using a TEAC FD-505 in a Shugart-style floppy chain

Using a TEAC FD-505 in a Shugart-style floppy chain

The TEAC FD-505 is a combination high-density 5.25-inch drive and 3.5-inch floppy drive, in a half-height form factor. I have one and wanted to use it for floppy drive imaging with a Greaseweazle. This is trivial to hook up, using the default jumper settings, and selecting each drive using the --drive A or --drive B Greaseweazle options.

However, I want to add a third drive into the mix (a double-density 5.25-inch drive). Greaseweazle supports using three drives, but only as long as they can use "Shugart" style signaling.

The FD-505 doesn't have the "DS0, DS1, DS2" jumpers normally required for this. Because it has only a single 34-pin floppy connector, it also can't use the presence or absence of a twist to differentiate each drive. Instead it has a unique set of jumpers which can more or less recreate the cable twist on the control board.

On a Shugart-style controller, the drive 0 select is pin 10, the drive 1 select is pin 12, and the drive 2 select is pin 14. If you trace these pins to the jumper block, they correspond to row D, row C, and row A, respectively. The actual select inputs for each drive are in row B, with the 5.25-inch drive on the right (column 1) and the 3.5-inch drive on the left (column 2). Therefore whichever side has a jumper across rows B and C will be drive 1, and whichever side has a jumper across rows A and B will be drive 2. It's plausible that if one devises a jumper from D to B then that drive could be drive 0 but we are not dealing with that here.

There are also the motor-on signals for each drive to deal with. PC-style floppy controllers have the drive A motor-on signal on pin 10, and the drive B motor-on signal on pin 16. Shugart-style controllers, however, only use a single motor-on signal, on pin 16. On the jumper block, row E is the motor-on signal for each drive, again with the 3.5-inch drive on the left side, and the 5.25-inch drive on the right side. If we trace pin 16, it corresponds to row F. As we saw before, pin 10 goes to row D, but we want to ignore that and put a jumper across pins E and F in both the left and right columns.

Now that we've assigned these two drives to drive 1 and drive 2 of the Shugart chain, we can add one more. Assuming it's a normal drive with jumper positions for "DS0" "DS1" etc, just set it to DS0, and it will be drive 0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment