IDE knowledge anyone?

Oliver Lehmann lehmann at ans-netz.de
Wed Dec 30 13:01:58 CST 2015


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




More information about the cctech mailing list