The problem with the difference isn't that it's byte swapped, its that the byte swapping isn't respecting the data types inside the structure. It fixes all of the "short" entities, but it re-orders the fields that happen to be two chars next to each other, and the "shorts" that are part of the two "ints" for lba capacity and capacity values are in the wrong order, even though the bytes within the "shorts" are in the right order. So, when the fixup code in ide.h is run, the values are still wrong. old ---- 0070: 3f0010fc fb000001 80ac7e03 00000704 "?.........~....." 0080: 03007800 78007800 78000000 00000000 "..x.x.x.x......." new--- 0070: 003ffc10 00fb0100 ac80037e 00000407 ".?.........~...." 0080: 00030078 00780078 00780000 00000000 "...x.x.x.x......" proper--- (after fix up). 0070: 003f00fb fc100001 037eac80 00000407 ".?.......~......" 0080: 00030078 00780078 00780000 00000000 "...x.x.x.x......" Ken