



Usually, when you get the 2 messages in Windows 10, an I/O device error exists. If your external hard drive shows a disk I/O error, you are unable to transfer computer data to and from the external hard drive. It can appear on the internal hard drive (HDD or SSD), external hard disk, USB flash drive, SD card, CD/DVD, etc. An I/O device error is an issue with the device that stops Windows from reading its contents or writing on it. Part 3: 3 Steps to Recover Data from External Hard Drive.Part 2: 3 Solutions to Fix External Hard Drive I/O Error?.If you wish to read a book about it, I wrote such a book a while back with all the juicy details. Anyway, do a search for FDC, DMA, etc., things I wrote of here. For one thing, if you can do it (reliably) in 512 bytes, I would like to see it. I am not saying it is impossible to do, I am just saying it is improbable. All FDC and DMA code, at least a minimum read service, must be in the first sector of the disk. For example, you can't have your DMA code in the second sector of your boot code expecting to call it, since you have to use that DMA to load that sector in the first place.

If you don't have all of the FDC and DMA code within the first 512 bytes of the floppy, the 512 bytes the BIOS loaded for you already, there is no way to load the remaining sectors. Now you have to also program the DMA to make the transfers. This isn't to difficult to do, but now you have to have some way for the ISA bus to communicate with the FDC and the main memory. (For fun: Did you know that the FDC was originally capable of handling four drives?) (Please note that a single I/O address can be two registers if one is a read and one is a write.) You read and write to these registers to instruct the FDC to do things, such as start the motor for drive 1. These controllers had twelve (12) registers using eight (8) I/O Byte addresses, Base + 00h to Base + 07h. The original 756 was a common FDC, with later (still really old to today's standards) controllers following the 82077AA variant. The FDC came in many variants, but most followed a standard rule. The FDC (Floppy Disk Controller) is of the ISA (Industry Standard Architecture) era, back when I/O ports were hard coded to specific addresses. Is it solely because you want to, maybe to learn how to program the FDC? I'm okay with that.) (Which BTW, why do you want to do such a thing? The BIOS was made specifically so you don't have to do this. As 0andriy has commented, you will have to communicate with the floppy controller directly, bypassing the BIOS.
