>My first Foxpro Advisor article referred to the work of Tom Lewinson who theorized that Rushmode builds a bitmap where each record matching the condition is represented by a 1 and the non matching records by a zero. This bitmap would have to be in physical record sequence. Any other sort order will make it impossible to just jump from record to record.
SET SPECULATE ON
My understanding of the theory is that an entry in an index tag consists of two parts: the key value and the record number. I've been actually reading the hex dumps of some CDXes in my time, and this seems to be the case, though the record numbers were laid out in a funny three-byte integer format. Now the only reasonable scheme, IMO, would be to have the bitmap represent the record numbers in the physical order, regardless of Set Order. The bitmap is manipulated according to the logical conditions in the Where or Four clause of the command, and the bits are set on or off depending on them, always in physical order.
Now the difference would come when the bitmap is finished, and the records should be retrieved. If there's no order set, the records can be retrieved sequentially, as they are laid out in the bitmap. If they're not, the active tag should be consulted in a reverse manner (or any other unnatural manner) to fetch the records based on the bitmap in the set order. It may require consulting each entry in the current tag to see if it's contained in the bitmap, or pulling down all the records in their physical order and sorting them to the current order.
So, the difference appears _after_ the bitmap is created.
SET SPECULATE OFF