Skip to content

inmbolmie/FloppyBird

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FloppyBird

Disk interface to adapt an PC floppy drive to an IBM 31SD/51TD controller

Floppybird

Introduction

This adapter will allow to connect a regular PC Floppy to an IBM 8" host like those that use the IBM 31SD and 51TD diskette drives.

Diskette S38 Datamaster Displaywriter

The target device is a Gotek emulator running FlashFloppy, but in theory it should be possible to use a real 5,25 1.2MB floppy drive, as they have 80 tracks (only 77 are needed to emulate an IBM Diskette) and they rotate at 360 RPM like the regular IBM 8" diskettes.

Note that a newer Gotek with the AT32F435 controller is required as older devices with the STM32F105 and AT32F415 controllers are not powerful enough to emulate IBM diskettes reliably. The adapter has only been tested with the FlashFloppy firmware and HFE disk images generated with the HxC software.

The current version is capable of reading, writing and formatting Diskette 1 (SSSD), Diskette 2 (DSSD) and Diskette 2D (DSDD) types on a AT32F435 Gotek.

If you like it or want to make your unit drop me a message to inmbolmie [AT] gmail.com

Note that this project is still work in progress in the prototyping phase.

Usage

  • Assemble your board and flash the promicro with the provided firmware
  • Update the AT32F435 Gotek to FlashFloppy version >= 3.44
  • Configure these parameters on your FF.CFG file:
interface = ibmpc
host = unspecified
max-cyl = 77
side-select-glitch-filter = 0
track-change = realtime
write-drain = realtime
index-suppression = no
head-settle-ms = 10
motor-delay = ignore
chgrst = step
  • Generate your HFE file from the HxC application, for example from a source IMD file.
  • Connect the 36-pin IBM host IDC connector to the adapter on the side labelled as "IBM Host diskette connector". The connector is usually keyed, but take a look for the correct orientation of pin B1. This connector provides +5V power to the adapter on pin B1 so no external power is needed.
  • Connect the 34-pin PC Floppy connector to the adapter on the side labelled as "PC Floppy drive connector". The connector is sometimes keyed, but take a look for the correct orientation of pin 1.
  • If you are using a Gotek, you can get power for it from the "Gotek power" connector using an appropriate cable, like a Molex to PC Flopply power adapter cable. Do not use this connector to power other devices like real floppy drives.
  • Put the diskette mode switch to the correct mode depending on your diskette type to be emulated (Diskette 1 for one side, Diskette 2 for two sides).
  • Put the drive selection switch to the correct value depending on your floppy drive letter, A or B
  • You normally want to put the motor control switch on the "motor always on" position to better emulate a real 8" drive.

Now your floppy emulator is ready to be used.

Note that the adapter will honor the PC floppy disk protection signal, so if the disk is write protected it will prevent it to be written by the IBM host. The IBM host does not have any provision to manage "write protected" diskettes though, so in that case it will generate an error if it tries to write to the diskette.

Apart from HFE images, IMG disk images also work partially. They have the problem that if a sector is marked as "control field" there is no way to store the correct Address Mark on a IMG disk image, so the Gotek will fail to write that data properly and will result in a write error.

Hardware

Adapter Board

The adapter board providing supply to a Gotek AT32F435 drags around 350 milliamps from the IBM host through the +5V rail.

Schematics

Note that this is work in progress. Subject to further modification.

schematic schematic PDF

PCB

Sample image of the PCBs from Kicad. Note that this board is work in progress.

PCB

Software

You can get the Arduino source code for the ProMicro in the FloppyBird directory. You can program it using the regular Arduino IDE.

KiCad Project

You can get the current project files in the KiCad directory. (TBD)

Operation

These are the main points that need to be carried out for conversion:

Logic levels

The PC floppy signals are open collector low-level active, while the IBM signals are push-pull high-active. The 74 series chips provide most of the conversion.

Track addressing

The PC floppy adresses tracks by a direction and step signal, and gets a track_0 signal when the head is placed at such track. The IBM interface lacks a track_0 signal and you control direcly the stepper motor signals access_0 and access_1. The ProMicro initializes the head position at track 0 at startup. From there it gets track of where the head is actually positioned and translates the required signals on both sides.

Read data signal.

The read_data_signal is gated by the head_engage signal. It is essentially the same sinal for both systems but with reversed polarity.

Write data signal.

The PC floppy write data signal generates a full pulse (falling and rising edge) for each magnetic flux transition that needs to be recorded on the disk surface, while in the IBM interface the write_data signal records a magnetic flux transition for each signal level change (rising or falling edge). The conversion is made via a homemade edge detector (74LS04 + 74LS86) followed by a pulse generator (TLC555). The TLC555 is used over other 555 variants due to its superior speed and stability.

The write_gate and erase_gate signals are terminated with 90 ohm resistors like in the original IBM drives to prevent phantom writes. Those signals control the write_data signal going to the PC floppy and they are feed back to the IBM controller on the write_erase_sense signal

Drive selection signals.

Contrary to the PC Floppy, an 8" drive is permanently turning, so the PC drive should be by default always rotating to emulate this and generate the index signal continously. Optionally a swith is provided to make the drive rotation conditional to the head_engage signal.

3D-printed case

TBD

About

Disk interface to adapt an PC floppy drive to an IBM 31SD/51TD controller

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages