No XT-IDE users?

Chuck Guzis cclist at
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 

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


More information about the cctech mailing list