When I saw the title, I thought it was going this way.
Or, more specifically, a driver to turn an IDE port into GPIO pins that PC programs can control. Closing the gap on making a feature-complete Windows 95 arduino core.
I think you can do this directly, the linked project just tells the kernel "this is a parallel port here", and it just uses normal I/O instructions. The IDE port is already exactly that, though I think the data-direction register controls the whole port at once, rather than one bit at a time.
An interesting project I found on twitter. Interfacing PATA/IDE directly to Raspberry Pi’s GPIO is pretty trivial and manages to transfer 500 KiB/s. Enough to play CDs. The driver code is around 500 LOC.
It hadn't occurred to me that PATA/IDE could be so simple to speak. Now I'm excited about the possibility of being able to dump a 25 or 30-year-old IDE drive I have that my USB adapter doesn't want to talk to (via another SATA-to-IDE adapter).
The README says this option relies on the kernel's "ATA framework" (presumably for the protocol/non-interfacing logic?). Is that part of the "talking to a drive" stack very much to have to implement? Or do you know of any existing code for microcontrollers?
Depends on what you want to do :)
If you just want to read/write sectors of 512 bytes at a time, it's pretty easy to implement even on a simple MCU.
There's a couple of registers which need to be set:
https://wiki.osdev.org/ATA_PIO_Mode
and you can then just read/write the data from the parallel lines.
Here's a similar project using an ATmega32:
https://github.com/zwostein/idetrol
(i used this code, ported to ARM to check my hardware before I wrote the kerneldriver)
Wow, that's amazing. Nowadays a 3$ board from aliexpress can do the same (with SD card or USB drive instead) and much more - more formats supported, Bluetooth etc. How the technology progressed.