I checked now with MS-DOS and issuing a simple "DIR D:\" command with
a power cycled disk:
Command: C4h (Read Multiple)
-> 51h, 51h -> 04h
Command: 10h (Obsolete???)
-> 50h, 50h -> 04h
Command: 91h (Initialize Drive Parameters)
-> d0h, d0h, d0h, .... 50h
Command: C6h (Set Multiple Mode)
-> 50h
Command: C4h (Read Multiple)
-> 58h
The first C4h Command returns the same error, but
after this it seems like the drive is "initialized"
and then the 2nd C4 command afterwards works! Great.
I guess C6h is only needed because read multiple is
used, so I probably have to do only the 10h and
91h stuff... just need to find out more about it.
Does anyone know what command 10h is? The documentation
I have only states "obsolete".
Oliver Lehmann <lehmann at ans-netz.de> wrote:
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