exkor
I think, that it is better to work with 'clear' devices, so I prefer to reset them. The only problem is that accordingly to software reset protocol Device0 may wait Device1 to answer up to 31 seconds -- it is too much. But I never met such long pauses.
I don't consider DEVICE_RESET command, since it is for ATAPI devices. Setting SRST bit reset all devices on channel, so there is no reason to select a device.
HDD detection
You could of course change your code to reading 200 words, then check if it reads away the last 56 correctly, or something. Then prey it helps for > 256 :).Mikae wrote:About more than 256 words -- (...) A way to avoid it, is to check DRQ bit after reading 256 words, and just read until it is reset in an empty loop. Hope, it will help (I can't check it since I never deal with such situation).
JAL