OK,
detatching the power cord of the disk from my PC while
running FreeBSD and reattaching it also brings up error
code 4 on the next access. This does not happen with
other drives. So it must be some sort of initialisation
the OS or BIOS does which readies up the drive.
Oliver Lehmann <lehmann at ans-netz.de> wrote:
  OK, I just got my Logic Analysator and traced the
 communication on my PC while forcing it to do PIO
 instead of DMA.
 I then changed my AVR code to do the exact same
 commands and nearly the same timings and... nothing
 changed - the drive still responds with error code
 0x04 after the read sector 0x20 command is issued.
 On the PC:
 I noticed a time frame of 115,230ns between the
 0x20 Command and the first alternate status register
 read. during that time, INTRQ goes high so the drive
 "is done" and wants the host to interact with it
 again. IORDY is the whole time high from the host.
 The status read is 0x58 on the PC.
 On the AVR:
 IORDY is the whole time low (it is not connected),
 INTRQ stays low the whole time, and the first status
 read back is 0xD0 for a long time and then it goes to
 0xD1 and then 0x59.
 Things I plan to try next:
 - power down the drive on the pc, power it up and then
   try to access sector 1 again and see what happens.
   Maybe some magic "initialization" is done on bootup
   what I don't do.
 - make IORDY high on my AVR too