NowhereMan: OS.ZIP --> ATA.ASM --> ataIdentify --> Floating Bus? 
Author Message
 NowhereMan: OS.ZIP --> ATA.ASM --> ataIdentify --> Floating Bus?

Hello

 First. I'd like to say that I'm finding your OS.ZIP incredibly educational!
... A kind of ATA-Spec in Motion.

I was following your code for the ataIdentify function (ata.asm). I was
baffled by a couple of lines and I was hoping you (or anyone reading this
post) could elaborate on their significance:

...Status register is read

cmp al, 0FFh        ; floating bus?         <====== (Line #289)
je ataIdentifyFail  ;
cmp al, 07Fh        ; floating bus in disguise? <===== (Line #291)
je ataIdentifyFail  ;

...Identify Device Command is sent

The Floating Bus. This is the reference in your source (so far) that baffles
me. I've referenced a couple sources (Ralf Brown's INT list, ATA/ATAPI-4
Spec, et al) and couldn't find a reference to using the Status Register as a
test for a Floating Bus --much less a Bus in disguise ;)

SRedman



Sat, 13 Jul 2002 03:00:00 GMT  
 NowhereMan: OS.ZIP --> ATA.ASM --> ataIdentify --> Floating Bus?


Quote:
> Hello

>  First. I'd like to say that I'm finding your OS.ZIP incredibly
educational!
> ... A kind of ATA-Spec in Motion.

Gee, thanks. That's hardly what Hale Landis (www.ata-atapi.com) 'ATA guru'
would have said if he saw that source code :)))

Quote:
> I was following your code for the ataIdentify function (ata.asm). I was
> baffled by a couple of lines and I was hoping you (or anyone reading this
> post) could elaborate on their significance:

> ...Status register is read

> cmp al, 0FFh        ; floating bus?         <====== (Line #289)
> je ataIdentifyFail  ;
> cmp al, 07Fh        ; floating bus in disguise? <===== (Line #291)
> je ataIdentifyFail  ;

> ...Identify Device Command is sent

> The Floating Bus. This is the reference in your source (so far) that
baffles
> me. I've referenced a couple sources (Ralf Brown's INT list, ATA/ATAPI-4
> Spec, et al) and couldn't find a reference to using the Status Register as
a
> test for a Floating Bus --much less a Bus in disguise ;)

The test for FFh and 7Fh is based on situations I've seen when the ATA host
adapter is suddenly removed from the I/O space (by disabling a PCI IDE
controller for instance) or if there isn't an IDE host at the given address
at all. The value 7Fh has been observed when reading the slave status
register when no slave device was attached on a machine.

The ATA status register (normal or alternate) for all four legacy locations
(1F0h, 170h, 1E8h, 168h) will NEVER contain one of the above values if the
adapter is present, but it may contain those values if the adapter is not
present.

The floating bus term, may be wrong, but that's what it's called when no
device is driving the bus or responding to I/O read cycles at a given I/O
address.

My code can get away with such a quick check, because it assumes that the
BIOS has set up the IDE controllers and that the drives are powerred-up,
spinning and ready for action. This quick check stops me from having to use
a time-out on the identify command.

Regards,
Thomas.



Sat, 13 Jul 2002 03:00:00 GMT  
 
 [ 2 post ] 

 Relevant Pages 

1. HELP>>>>>>>Fortran-Pascal Linking

2. >>>>>>>FROM SMTK TO C++

3. ><><><><>Heeeeeeeeeeeeeeelp on INT 14!><><><><><>

4. <<<<<YOU MUST CHECK THIS OUT >>>>>>>>>> 2103

5. >>>>>AVL tree

6. >>>>>How to read a IMAGE file?(BMP, GIF)|||||||||

7. ANNOUNCE>>>>>TOTAL FrameWork from Cincom

8. Slow/No Speed>>>>>>>>>

9. BCC->ASM->OBJ->EXE ??

10. >>>>VHDL tutorial text: Summary >>>>

11. Graphics>>Rectangle>>intersects: erroneous code

12. **>>CO Smalltalk Developer!!>>**

 

 
Powered by phpBB® Forum Software