No XT-IDE users?

Chuck Guzis cclist at sydex.com
Sun Aug 16 20:50:39 CDT 2015


On 08/16/2015 06:18 PM, Steven Hirsch wrote:

> What is the "Chuck mod"?

I'll try to make this brief (ha!).  One of the problems with the 
original XTIDE  is that the data bus on a regular ATA drive is 16 bits. 
  (There used to be a mode that could be set to allow an ATA drive to 
support 8-bit transfers, but that's long gone from most drives, now 
almost solely present in the CF interface).

So the XTIDE would latch half the 16-bit bus on a read and make it 
available at a different I/O address IIRC, 8 locations higher). 
Reading, therefore became a matter of issuing an IN al,dx instruction, 
storing the byte, then adjusting the address in dx (XCHG DX,some other 
register) and repeating for the rest of the 16-bit word, adjusting dx 
again back to the original and looping...

I observed that if the addressing of the drive was slightly modified by 
swapping I/O address bits 0 and 2, one could put the two halves of the 
16-bit register ad adjacent I/O addresses and let the 8088 (or V20) BIU 
handle the input as a word operation.  This means that the entire read 
loop on an 8088 collapses to a "in ax,dx / stosw/ loop" 
three-instruction sequence.  On a V20, it's even simpler "rep insw". 
The last I recall, writes couldn't use the BIU trick because of the way 
the latch clocked data to the drive. You can't win 'em all.  At least it 
was no slower than the old way--and code tends to do far more reads than 
writes.

Of course, this results in the other ATA registers being a little out of 
normal sequence, but that's a simple code change.

--Chuck



More information about the cctalk mailing list