Imported hardware project from GitHub.
Loading README and project media…
ALPHA VERSION
IBM PS/2 computers from the late 1980s and early 1990s typically used an IBM-proprietary disk interface called DBA-ESDI (Direct Bus Attach - Enhanced Small Device Interface). It is not the same as the industry-standard ESDI drives (which had a separate controller); instead, it is more like an IDE drive, but the register interface is not compatible and it uses the Micro Channel bus instead of the ISA bus.
These special DBA-ESDI drives are getting harder to find and often don't work due to mechanical problems or damage from leaking electrolytic capacitors. DifNif is my solution to this problem. It uses an SD card for storage and modern electronics to implement the DBA-ESDI interface. DifNif is named after the Micro Channel POS ID commonly used by these drives (DF9Fh).
SCSI cards can be found for older PS/2 systems but aren't always compatible with software, particularly old versions of OS/2.
Many PS/2 systems require an IML (initial microcode load) partition located at the end of the disk, and these systems will often only be able to do this with DBA-ESDI drives.
This project more or less functions but only on the Thinkpad 700C. There's another form factor designed to fit 50Z-style desktop PS/2s, but timing issues seem to prevent it from working properly.

This is an advanced construction project that you should only attempt if you are comfortable with surface mount soldering. You'll also be flashing two programmable devices, so it helps to have some experience with that. And you'll probably have to do some debugging, so you'll want an oscilloscope and a logic analyzer.
Data Loss Note
This is a hobby project. I don't have the resources for an entire QA team, so it is entirely possible to experience data corruption if you use this with your computer. I recommend keeping backup copies of all disk images. This is also an alpha version and I don't have the time to support it, so if you attempt building it, I hope you know what you're doing.
There are a number of separate PC boards and 3D printed fixtures associated with them.
First, the pcb_thinkpad directory contains the board files for the main Thinkpad 700C 2.5" form factor drive. There is a 3D-printable sled that the board attaches to, see mech/df9f_carrier.stl. The board has a 2mm header that is designed to attach to the flex cable harvested from a stock IBM 2.5" drive for the 700 series Thinkpads. The flex cable has the special connector that plugs into laptop.

To make debugging easier, I built a board called the Fing Longer (IYKYK) that fits into a 3D-printable sled and held in place with two small clips. Typically you will make more than one of these. One acts as an extender card to bring the connector forward and the second one acts as a breakout board so you can connect logic analyzer probes to the MCA bus lines. The DifNif plugs into the end of both Fing Longers.

The second version of the DifNif is a 72-pin card that is designed for machines like the 50Z and others which have a riser card bridging the DBA-ESDI connector to the Micro Channel bus. Debugging this version requires a card that plugs into a spare MCA slot. I use a spare Snark Barker MCA board because it has the proper logic analyzer connectors on it already.
The Teensy software is relatively easy to load with the Arduino IDE and the Teensy 4.1 extensions. Nothing unusual there.
The FPGA bitstream is built using the ICE40 yosys/nextpnr toolchain. You can use iceprog and an FTDI adapter just like for the Graphics Gremlin. See that readme for information about building the project and programming the EEPROM.
There are several source files in the project:
To assemble a fresh disk image, use dd to generate a blank file. The file must be a multiple of 512 (?) bytes. Put the file on the SD card in the Teensy (for now it must be named "disk0.img"). On the Thinkpad, use the reference disk to create the IML and reference partitions, and then run the DOS installer to partition and format the rest of the disk.
I've written a diagnostic utility for DBA-ESDI drives. It works by accessing the drive hardware directly at a very low level. Don't use it on drives containing data you care about! It can be useful for troubleshooting dead drives, however.
It compiles using the Borland C++ compiler with the Large memory model.
Menus:
This design is secured under the CERN Open Hardware Licence Version 2 - Strongly Reciprocal.