   
 TREX Version   << number in ..\Trex\Trex1.Cpp >>

ver    when   for what
191 a03/20/08 dvo Added Cypress and Mercury.
     04/07/08 dvo Added Pinnacle HF, Atlantis HF and Gekko.
    b04/23/08 dvo Added Spartan RE.
     05/12/08 dvo Added Pinnacle PATA, Atlantis PATA, Mars HF, Pinnacle E, 
                  Atlantis E, Gekko E and Kermit E.
    c06/02/08 sso Check for buffer overflow in SmartRdLog and RdLogX.


190 a11/15/07 r-m Add NativeSerial & NativeSerialStr, derived from VSCID
                  command.
     11/20/07 DNA Added Mars_RE.
     11/30/07 DNA Added EMERALD.
    b12/11/07 dvo Check for 16-bit family ID. If the ID byte (LSB of ID word
                  133) is 0xFE, look at word 134.
    b01/15/08 dvo Added STG_YUKN, Troy, Yukon and Kermit.
     01/16/08 dvo Added SIOSpecVer, which is the SIO Spec version (0-7) from
                  spew response byte, bits 5-7.
     01/18/08 dvo Add Rigel.
     01/25/08 dvo Add Saturn.
    c01/28/08 dvo Add Pinnacle RE.
     01/30/08 dvo Add SMART attributes 241 & 242.
     02/14/08 dvo Add Venus.
     02/29/08 dvo Slight change to HBAReset for Promise NCQ adapters.
189 a11/13/07 dvo Change Hulk RE to Hulk_RE.
188 a10/17/07 d-t Change name for T2_PMR_RE and T3_PMR_RE to T2PMR_RE and 
                  T3PMR_RE.
    b11/02/07 r-m Add AppMajor, AppMinor, AlphaRev, AppType, AppTypeAlpha,
                  AppTypeBeta, AppTypeOffical and KernelRev.
     11/06/07 dvo Fix -T option to display new family names.
     11/07/07 dvo Add YOSE_RE and ATLAN_RE.
     11/12/07 dvo Switch to extended commands for LBA >= 0x0FFFFFFF (was
                  0x10000000).
187 a10/12/07 r-m Move Promise 300 TX2 as non-NCQ capable.
186 a08/13/07 c-g Support Promise 300 TX4.
     08/13/07 dvo Setup Promise 300 TX2 and Promise 150 TX4 as NCQ capable.
     08/14/07 dvo Add NativeModel and NativeModelStr, derived from VSCID
                  command.
     08/15/07 dvo Add Mars.
     08/21/07 dvo Add Nemo.
     09/04/07 dvo Add STG_MERC.
     09/10/07 r-f Fix command code for non-volatile cache commands.
     09/17/07 dvo Add Sequoia RE, Tornado2 PMR RE, Tornado3 PMR RE, Hulk RE 
                  and Spider RE.
    b09/19/07 dvo Truncate native model string.
     09/26/07 dvo Add Sequoia PPMR.
     10/05/07 d-t Change family strings to 8 characters max.
     10/05/07 dvo Add Sequoia PMR 2M.
    c10/11/07 r-m Increase stack from 49152 to 65536.
185 a07/17/07 c-g Add FPDMAPriority bit.
     07/25/07 dvo Add Atlantis.
     07/26/07 dvo Add Denali.
     07/30/07 j-r Modify waiting for IRQ flag.
     08/13/07 dvo Add Pinnacle.
184 a06/11/07 t-t SmartStat doesn't return data to RBFR, so the decoding of the
                  buffer isn't required.
     06/11/07 dvo Add TD3_PPMR.
     06/13/07 dvo Add Spider.
     06/14/07 dvo Add STG_KODK.
     06/15/07 d-g Add SIO_RESEND (0x50) and UNLOAD_ERR (0x51) constants.
     06/25/07 d-g Report UNLOAD_ERR instead of UK_ERROR for some HBAs.
     06/29/07 dvo Rename STG_RGL to Viking.
     07/02/07 lkl Fix RdLogDmaX and WrLogDmaX false failures.
     07/09/07 sso Automatically enable interrupts for RdLogDmaX and WrLogDmaX.
     07/12/07 d-g Add DisableAAM and EnableAAM <byte>.
     07/12/07 r-m Fix for nVidia crash when AHCI is enabled.
183 a01/19/07 dvo Add Lynx.
     01/25/07 d-g Set 'ResetIssued' flag in ComReset statement.
    b02/13/07 dvo Kernel 511 build.
     02/15/07 j-p Fix AHCI reading of RSECC & RSECN (for EESA cmds).
     02/19/07 dvo Add ID_STG_VPMR and ID_STG_DNLI.
     02/23/07 g-g In SIO mode, set baud rate to 115200 after a VSC Hard Reset
                  and before spewing to re-detect the drive.
     02/28/07 dvo Added TD2_PMR.
    c03/05/07 g-g Set default value of SIOResetBR to 1.
     03/07/07 g-g SIO mode improvements for reset / VSCHReset to re-establish
                  at the prior high-speed baud rate.
     03/12/07 dvo Added SEQ_PMR.
     03/12/07 g-g Attempted fix for an SIO retry event inside a command.
     03/20/07 s-g Added 'Max28BitLba' to specify the maximum 28 bit LBA. If a 
                  command's last block is greater than this value, the command
                  will be promoted to an extended command.
     03/21/07 dvo Fix for ICH8R in RAID mode.
     03/29/07 r-m 'SioMode On' won't setup a non-existant com port.
    d04/03/07 c-s Add SioSpewPsvChar (default = 0x7F). Add SioSpewDetectChar
                  (default=0xFF). Add SioSpewResetChar (default=0xAA).
     04/05/07 dvo Detect AHCI interface CRC error.
     04/06/07 j-p Added 'IBMCDC <Tray>, <Cap Point>, <Password>' command. 
                  Issues an IBM Change Definition Command.
     04/12/07 dvo Added Yosemite.
     04/17/07 a-m Decode SIO ATA Command complete message.
     04/17/07 mcv Increase zones entries to 256. Some T3 drives have invalid
                  zone table data (number of zones), causing memory overflow.
    e04/25/07 sso Decode error register 48h and return ECC Error.
                  Decode error register 18h and return IDNF Error.
                  Decode error register 0Ch and return CMD Error.
     04/27/07 dvo Add TD2_PPMR.
     05/01/07 b-l Enable legacy ports on Asus motherboard with ICH8.
     05/02/07 a-m Add SioAtaVsc flag to control which SIO protocol to use.
     05/02/07 dvo Add STG_RGL.
     05/07/07 dvo Add non volatile cache commands: NVCAddLbas, NVCDisable, 
                  NVCEnable, NVCFlush, NVCQueryMisses, NVCQueryPinSet, 
                  NVCRemoveLbas, NVCRetPwrMode and NVCSetPwrMode. Add 
                  ATA_NV_CACHE constant (0xB6).
     05/10/07 sso Improve NForce4 timing (CmdDuration & CmdElapsed) window.
     05/11/07 dvo Add TD3_PMR and Hulk.
    f05/14/07 dvo Added ATA Trusted Security commands: TrustRecv, TrustSend, 
                  TrustRecvDMA, TrustSendDMA and these variables: 
                  TrustSecProto and TrustSpData.
     05/17/07 dvo Scan will NOT filter ID buffers when PUIS is enabled.
     05/17/07 dvo Add Cougar.
     05/17/07 dvo Check WWN to also determine if the disk drive is a WD drive.
     05/23/07 dvo WTFX will no longer look at the LBAMODE flag, it'll assume
                  LBAMODE is true.
     05/23/07 dvo Changed Cmd - It will be assumed to be a non-data transfer,
                  non-extended command. Added:
                  CmdX - Issue a non-data transfer extended command.
                  CmdDMAIn -  Issue a non-extended command and send data using
                  DMA protocol.
                  CmdDmaInX - Issue an extended command and send data using DMA
                  protocol.
                  CmdDmaOut - Isse a non-extended command and receive data
                  using DMA protocol.
                  CmdDmaOutX - Issue an extended command and receive data using
                  DMA protocol.
                  CmdPIOIn -  Issue a non-extended command and send data using
                  PIO protocol.
                  CmdPIOInX - Issue an extended command and send data using PIO
                  protocol.
                  CmdPIOOut - Isse a non-extended command and receive data
                  using PIO protocol.
                  CmdPIOOutX - Issue an extended command and receive data using
                  PIO protocol.
     05/24/07 dvo Add Danu and STG_Yosemite.
182 a09/29/06 dvo Bump rev - Kernel version 492 fixed rtestyle.
    b10/03/06 j-m Attempt to support Promise FastTrak Sz4060.
     10/03/06 dvo Add SCTDataIn, SCTDataOut, SCTRdTmr, SCTRL, SCTSendKey, 
                  SCTStat, SCTW, SCTWL and SCTWrTmr.
     10/10/06 dvo Add ATA_RD_LOG_DMA_EXT, ATA_WR_LOG_DMA_EXT, ATA_WR_UNC_EXT, 
                  ATA_TRUST_RCV, ATA_TRUST_RCV_DMA, ATA_TRUST_SEND and 
                  ATA_TRUST_SEND_DMA.
     10/11/06 k-c Update sector count for WUNCX command.
     10/16/06 j-p Add SioCacheSize & SioCacheDump to cache SIO xmt & rcv data
                  and display it.
     10/16/06 j-p For SIO, after a successful soft reset, Trex will change
                  the PCI baud rate to 115200.
     10/16/06 dvo Add 'Windex' command (same as 'Trex').
     10/18/06 j-p Add 'SioResetDly' to delay this many ms after reset ack.
     10/18/06 j-p Do a spew after reset ack when the baud rate changes.
     10/20/06 dvo Add TD2_PATA.
     10/24/06 j-p Set default value of SioResetDly to 200 (200 ms). 
                  Set default value of SioResetBR to false.
                  Always spew after reset. Spew will happen after the 
                  SioResetDly.
     10/25/06 j-p Cache SIO data transmitted via script's pcicombyte.
    c10/26/06 j-p Fix "No PCI Com Card" message on UART system.
     10/26/06 s-r Improve ICH8 in non-AHCI mode.
     11/13/06 dvo Add Stg_Twin.
     11/13/06 d-g Fix SecSetPW (broke on 7/10/06, retry all commands when a
                  CRC error occurs).
     11/13/06 c-c For RStrmX (read PIO Stream), return if stream error set 
                  and DRQ clear (prior version didn't check DRQ clear).
    d11/14/06 c-c Better fix for RStrmX.
     11/15/06 j-p For SIO, don't send an ACK if Ctrl-X breaks from VSCStat.
     11/16/06 g-g Increment SioResend when an SIO data transfer needed a 
                  retry.
     11/16/06 dvo Add FAbout to show version info to message window/log file.
     11/21/06 dvo Undo interrupt handler change on 10/26/06.
     11/22/06 dvo SIO additions per spec 0.9 draft.
     11/22/06 dvo Undo check for reset change (slowed down DMA).
    e11/30/06 dvo For RStrmX, return with error if busy is clear immediately
                  after the data transfer. If busy is set, wait for not busy
                  or interrupt (int off / int on respectively).
     11/30/06 l-l Fix SioAckSize, data is limited to 1k max, so loop and
                  send ABN + 1k max + CRC until the appropriate Ack Size has
                  been transferred.
     12/01/06 l-l Validate ABN number.
     12/01/06 s-h For RStrmX, return with error if busy is clear and DRQ is
                  clear.
     12/01/06 l-l Report "SIO bad ABN" if a bad ABN is detected.
     12/01/06 l-l Add timeout when waiting for each ABN, not just the first
                  ABN.
     12/01/06 l-l Mask IRQs 2-15, except for PCI Comm card, when receiving SIO
                  data.
     12/04/06 l-l Add 'PciComSts2' which latches the PCI comm status byte
                  immediately after unmasking IRQs upon an error. It's value
                  must be -1 to re-latch the next error.
     12/13/06 dvo Add TD3_PATA.
     12/13/06 j-p Fix for timeout > 214 seconds (3 min, 34 seconds) for some
                  host bus adapters (AHCI, SI3124, MV 6080, NForce4).
     12/14/06 d-g Add interrupt handler for ICH8 in non-AHCI mode.
181 a04/19/06 r-y Add SIORTF & SIORTFX to read task file (ext).
     04/19/06 d-g Go to active sata power management prior to a partial or 
                  slumber.
     04/20/06 j-p SIO fixes: SIORTF & reset (won't recursively call another
                  reset).
     04/24/06 j-p Another attempt to fix a reset endless loop.
     04/24/06 dvo Added SIOReqBR to issue a request bit rate command.
     04/24/06 dvo Added SIOSetBR to issue a set bit rate. Currently, only
                  setting to 115200 is implemented on Trex's side.
     04/25/06 ckm Change Aquarius6 to STG_ARIS.
    b04/25/06 aaa Swap STG_ARIS & Aries.
    c05/02/06 j-p For SIO, have reset and VscStat return 0xD000 if the timed-
                  out. If VscStat got a checksum / CRC error, return 0x5184.
     05/04/06 j-p For SIO, when verbose bits 2 & 3 are set, add a linefeed
                  every 16 bytes. Also, fix for ChkReady.
     05/05/06 j-p Improve SIO Verbose = 3 output.
     05/09/06 dvo Add support for PCI serial port. Current clock speed is 
                  assumed to be 14,745,600 Hz. Use PciComClk = <hz> if the
                  PCI serial port is not 14,745,600 Hz prior to SioMode On.
     05/17/06 c-s Handle 3 level of SIO retries (resend, spew, reset). Can't
                  do a Power On Reset within Trex.
     05/22/06 dvo Added STG_1K.
     05/23/06 dvo Add 'SioPsvMode' which will spew 0x7F to an SIO drive.
     05/24/06 dvo Fix SioAckSize.
     05/26/06 s-r Disable AHCI upon startup (ICH8 has a BIOS entry to boot
                  with ACHI enabled).
     05/29/06 j-p Return SIOReqBR data in buffer.
     05/29/06 s-r For Intel ICH8, during Scan, do a comreset - it seems to 
                  improve DMA commands.
     05/31/06 pjg Incorporate Oxford high-speed serial card for SIO.
     06/01/06 c-s SioSetBR will spew upon success.
     06/01/06 c-s SioMode on will set the baseport to the serial 'base port'.
     06/01/06 c-s Add SioPort0, SioPort1, SioPort2 & SioPort3 (1, 2 & 3 not
                  yet supported with high-speed card).
     06/02/06 dvo Add SioMsgFnc (read-only last message recieved) and 
                  SioErrCode (read-only error code from last SIO protocol 
                  error.
     06/08/06 d-p Fix incs when in virtual mode.
     06/13/06 j-p Fix SIO timeouts.
    d06/13/06 r-y In SIO mode, wait 10 seconds after a VSCHReset command.
     06/15/06 j-p Fix SIOMode on creating a random baseport.
     06/15/06 dvo Flush SIO receive buffer prior to any spew sequence.
     06/15/06 dvo Add STG_PATA family ID.
     06/18/06 dvo Add Unicorn6.
     06/27/06 d-w Handle WD / ATA Command response message, instead of 
                  generating an error.
     06/27/06 dvo Increment receive counter when verbose mode is off.
     07/10/06 sso FRTF will show 48 bit content if the last command was a 48
                  bit command.
     07/10/06 s-g Retry all data transfer commands that return a 5184 ICRC
                  error, if CRCFix is > 0.
     07/12/06 j-p SIO VscStat will return an error.
     07/12/06 dvo Set SioXmtDly to 0 and SioXmtDlyCnt to 0 (no delay).
     07/13/06 b-l Fix ICHx RDMA IRQ timeout when AHCI was enabled.
     07/14/06 d-c Support Fujitsu notebook with ATI & O2Micro controllers.
     07/14/06 c-s Set the default PCI serial port clock frequency to 20 MHz.
     07/25/06 b-l Reset AHCI controller when quitting Trex (7/13 fix didn't
                  really work so well).
     07/25/06 s-g Retry all data transfer commands that get an ICRC error if 
                  CRCFix > 0. Previously, retried only DMA commands.
     07/27/06 dvo Change high-speed pci SIO baseport.
     07/28/06 dvo Add Leo & STG_VANC familys.
    e08/03/06 d-s For zone table 1000h (VDT), allocate a minimum of 128 zones.
                  Seems, some drives have an incorrect parameter in this 
                  field.
     08/03/06 dvo IdleUnload will return 'Unload Err' instead of 'UK Error'.
     08/10/06 r-k VscRevXlate will show absolule LBA instead of relative LBA.
    f08/16/06 dvo Fix VDT number of zones.
     08/28/06 bec Add WUncX command - Write Uncorrectable Ext.
     08/28/06 dvo Add RdLogDMAX and WrLogDMAX.
     08/29/06 dvo Add Seq_PATA.
    g08/30/06 dvo Add Jup_Zuma.
     09/01/06 dvo Support IDE controller in Acer notebook.
180 a04/10/06 d-g Change ComReset when IPM is active / slumber.
     04/10/06 j-p Don't send SIO retry (0x28) for VStat. Add SioResend 
                  variable.
     04/11/06 d-g Change ComReset when IPM is active / slumber - fixed for
                  ICH6/7 in AHCI mode.
     04/11/06 j-p Cleanup SIO verbose messages.
     04/11/06 d-v Change VSC max transfer blocks back to 255 (problem found
                  with DX drives).
179 a12/22/05 dvo Fix SIL 3124 when turning SIOMode on / off.
     12/22/05 dvo Improve VSCStat robustness (SIOMode). Show 5104 when the
                  SIO WD key phase is aborted. Show 5184 when the WD key
                  phase has a CRC error in the payload. Handle VSCHreset.
     12/28/05 m-k For streaming PIO commands, check status register bits 4
                  (deferred write error) and 5 (stream error) when a DRQ 
                  Timeout is caught.
     01/03/06 dvo Return error code for VSC read CHS.
    b01/06/06 dvo Add 'SioSpewDly' that adds a delay between each 0xFF or
                  0xAA for spew or reset.
     01/14/06 dvo Use the same SioSpewDly, but in millisecond units, for
                  a delay for SIO ATA reads between the drive's first ACK
                  and Trex's Transfer Request message.
     01/17/06 r-y For SIO, remove delay above, wait for a new message from
                  the drive (2Ch - ATA Command Response) for data transfer
                  commands.
     01/18/06 r-y Fix SIO ATA write commands.
     01/20/06 dvo Add Tornado drive program.
     01/24/06 s-r Via 8251 in AHCI would scan very slow. Changed timeout 
                  from 'timeout' seconds to 10 ms per port.
     01/25/06 dvo Support AHCI command list override in 'reset' command.
     01/27/06 dvo Add STG_MKLY and Seq_Zuma.
     02/03/06 dvo Add Cricket.
     02/06/06 d-g Compare errors will not call OnEtc if reportlvl is 0.
     02/08/06 l-b Change ComReset to send only 1 COMRESET pulse.
     02/17/06 m-r Change name of some SMART attributes.
     02/21/06 mcv For ICHx / AHCI controllers, allow SATA status, error 
                  and control register access. Add SECodeMsg to show Sata 
                  error messages. Add SEFlag that get set when RSERR is non
                  zero after a command.
     02/28/06 dvo Don't crash when accessing SIO variable when not in SIO 
                  mode.
     03/01/06 dvo Add Tornado3.
     03/01/06 j-p Remove baseport 3F8h when SIOMode is turned off.
     03/02/06 dvo Improve scan for PATA bus, slave only (no master).
     03/02/06 d-t Add error codes 5 (BFR_MISCMP) & 6 (CHKSUM_ERROR) for 
                  VscCheckFile.
     03/03/06 r-m Set some pointers to NULL when switching user drives.
    c03/06/06 dvo Change Tornado to Tornado2.
     03/06/06 dvo Add 'LstFamily' command.
     03/07/06 aam Add 'WWN' to display the world wide name. Add 'WWNStr'
                  user string.
     03/10/06 dvo Set SioSpewDly default to 100. Fixes for SIO Mode.
     03/13/06 dvo Set default SioSpewDly to 500. Add 'SioSpewCnt' spew byte 
                  counter.
     03/14/06 dvo Fix recursive stack crash in VscHReset & HReset.
     03/14/06 dvo Do a reset instead of a spew when a SIO protocol error 
                  happens. 
     03/15/06 dvo Synthesize RSTAT/RERR for SIO ATA commands.
     03/16/06 dvo Synthesize RSTAT/RERR for RESET (0x5001) and timeouts 
                  (0xD000).
     03/16/06 c-l Fix streaming DMA commands.
     03/16/06 c-l Fail RCMD for controllers that are not supported.
     03/16/06 d-g Add RLBALow (RSECN), RLBAMid (RCYLL) and RLBAHigh (RCYLH).
     03/22/06 b-l Fix soft reset (clears 2nd FIS memory block) bug on AHCI.
                  If a FPDMA command with tag=1 was ever issued, that FIS
                  would be transmitted after asserting SRST bit.
     03/28/06 s-h Add these SATA set features commands: AsyncNotify, AutoAct,
                  DIPM, GIODD and NonZeroOfs.
     03/26/06 j-p Don't flush com port for a reset or SIO Spew sequence.
     03/29/06 j-p Fix SIO timeouts.
     03/29/06 j-p For VSCDataIn & VSCDataOut, use 256 instead of 255.
     04/04/06 sso Add VSCDebugStop to force a debug stop.
     04/05/06 b-l Don't set LBA bit for IDC command on packet controllers.
     04/06/06 dvo Add STG_ARLB.
     04/06/06 r-y For SIO, WD commands will update RSECC/RSECN with the
                  SIOPriErr if the command fails, SIOTFData if the command
                  succeeds.
     04/07/06 c-l Fix RCYLX for nVidia in AHCI mode.
178 a08/10/05 dvo Don't read the status register if the drive wasn't 
                  asserting an interrupt.
    b09/06/05 m-s Add CFA commands (CFAErase, CFAReqSense, CFAW, CFAWM and 
                  CFAXlate and WV).
     09/06/05 dvo Add Aquarius.
     09/06/05 r-k Improve AHCI performance when multiple SDB FISes interrupt.
     09/06/05 c-j For streaming PIO commands, don't abort a data transfer 
                  if the stream error bit is set.
     09/07/05 r-h Improve Scan for AHCI on an ASUS chipset - Trex won't look 
                  for a slave drive and it will delay 100ms after enabling 
                  the port.
     09/08/05 dvo Improvements for Broadcom Raidcore SATA controller.
     09/09/05 dvo Fix 3Ware Escalade 'scan' bug.
     09/12/05 s-d Allocate 8 blocks for VSCVirt zone table buffers.
     09/13/05 d-s VSCHReset will not show an error if a 'DRQ Not Expected'
                  status is seen immediately after the command is accepted.
     09/13/05 s-s Fix interrupt handler for some Promise controllers (when
                  a non-disk drive interrupt hits).
     09/13/05 dvo Add Jupiter and Sequoia.
    c09/16/05 s-r Support a Promise 0x3577 chipset.
     09/19/05 dvo Add SIOMode flag.
     09/19/05 m-m Don't fail VSCHReset if ChkReady was set, and the drive
                  didn't set the ready bit in the status register.
     09/22/05 dvo Add Starling and Glacier.
     09/26/05 g-g Add IdleUnload command to idle and unload the heads.
     09/29/05 dvo When SIOMode is enabled, VSCStat, VSCSendKey, VSCDataIn
                  and VSCDataOut will NOT use ATA Smart Read / Write Log to
                  transport the data. VSCStat will map to code 29h. The 
                  others will map to code 20h.
     09/29/05 dvo Don't show taskfile regs if a SIO WD command was the last
                  command performed.
     10/04/05 r-y SIOMode will set issue comSet 1, 8, 0, comParOff, baud115k2.
     10/04/05 r-k Fix crash with legacy queue commands on Promise NCQ 
                  controllers (eg TX4200).
     10/06/05 r-y If S=0xBE or 0xBF, SmartRdLog and SmartWrLog will use the
                  SIO WD command protocol, not the SIO ATA command protocol.
     10/11/05 j-p Fix bug with both a Promise NCQ and SI 3124 controllers 
                  present.
    d10/17/05 dvo Check if IdleUnload returns 0xC4 in RSECN / LBA low.
     10/19/05 dvo Add SIOVerbose flag.
     10/19/05 s-w Increase blocks for VscVirt from 8 to 64 (for zone tables).
     11/02/05 dvo Try to improve SIO protocol.
    e11/14/05 s-w Re-compute ZSPT values for the zone table for VDT formats.
                  It appears that the logical zone table returned from the 
                  drive is not as I expected.
     11/15/05 j-g SIO can transfer more than 0x400 bytes per CRC.
                  Add SIOAckSize variable.
     11/17/05 dvo For SIO, use 1K max data per CRC bytes.
     11/30/05 dvo For SIO write commands, don't wait for an ACK after the last
                  transfer.
     11/30/05 dvo Implement DownloadOfs. 
     12/01/05 dvo Add Aquarius6, Aries and McKinley.
    f12/13/05 dvo Do an SIO spew sequence if message CMD_ERROR (0x04) is 
                  received.
     12/14/05 dvo Check if the ABN is 0xBE, then receive the command. If it's
                  a ERROR_CMD, send the spew and stop. All other messages 
                  will just report an error (bad ABN) and stop.
     12/21/05 dvo Add Starling2 and Hawk2.
177 a05/16/05 r-h Support Promise TX2200 and TX4300.
     05/18/05 dvo Add basic support for 3Ware. No B > 256. No DMA.
     05/19/05 sso Improve interrupt error handling when transistioning from
                  NCQ to non-NCQ commands.
     05/23/05 dvo Add Odyssey and Hercules SAE.
     05/27/05 dvo Add 'HResetDisp' flag, if set, shows the seconds remaining
                  for a (VSC)HReset command. If false, won't show the time.
                  Default is TRUE.
     05/31/05 d-g Fix WaitForCaptive with SI3124 adapter.
     06/06/05 m-k ComReset, mask of SATA speed bits when waiting for ready.
                  Support WDMAFX for SI3124 adapter.
     06/08/05 d-g Add these constants: ATA_WDMA_FUA_EXT, ATA_WDMA_Q_FUA_EXT,
                  ATA_DCO, ATA_W_MULTI_FUA_EXT and ATA_FLUSH_EXT.
    b06/09/05 s-s Fix SI 3112 problem with IRQ timeout.
     06/09/05 b-b Add Promise SATA300 TX2 Plus.
     06/09/05 dvo If scan finds a slave drive with the same ID buffer as
                  a master on the same baseport, it won't be added as a new
                  drive. 
     06/10/05 dvo Support VSCDataIn on AHCI & NForce4 (AHCI mode) with B > 1.
     06/13/05 dvo Change handling of Promise NCQ boards and errors when NCQ
                  commands are pending.
     06/15/05 dvo Don't start NCQ timeout timer until NForce4 HBA begins 
                  processing the tag.
     06/21/05 dvo Share IRQ with AHCI controller.
                  Support SI 3132 HBA (NCQ capable).
    c06/23/05 r-p Possible AHCI hang fix, caused by another hardware 
                  interrupt on same IRQ as disk drive.
              c-s Do a port reset for Promise NCQ controllers after a hard 
                  reset. ITR 33880 & 34438.
              d-g Fix WaitForCaptive=off for AHCI & SI 3124.
     06/29/05 j-p Add IDATAPI. Updates Model, SN, FW etc.
     07/08/05 r-p Enable IRQ sharing for AHCI controllers.
     07/11/05 c-j Write feature reg & extended for Configure Stream command.
     07/13/05 c-b Add ChkSum32 and ChkSum32Ofs for 32 bit checksum. Default
                  offset is 12 (decimal).
     07/15/05 s-b Support SIIG with Silicon Image 3114 SATA chip.
     07/21/05 dvo Start code conversion for VDT zone tables (Mosquito).
     07/25/05 r-m Fix Scan when it is issued from DUT > 0.
     07/26/05 dvo Add AlphaRev, read-only, non-zero for alpha revisions.
     08/02/05 dvo Add ShareIntrHit flag. If it's non-zero, a non-disk drive 
                  interrupt was detected (supports only DMAT==4 and 13).
     08/02/05 dvo Add STG_ZUMA.
     08/03/05 d-g Fix NForce4 VSCHReset bug.
     08/05/05 dvo Support VDT (partially tested).
    d08/08/05 dvo VDT table will check for logical zones starting at the same 
                  physical cylinder.
176 a02/15/05 dvo Fix false 'reset sig' errors when ChkReset=True for Promise 
                  TX 4200 / 2300 NCQ capable controllers.
    b02/22/05 r-k Rebuild to support 32 queue depth for Promise TX 4200.
    c02/22/05 dvo Rebuild to support 31 queue depth for Promise TX 4200. (see 
                  change done on 01/07/05).
     02/24/05 e-c Don't init an AHCI port for a slave drive (no connection).
     02/25/05 dvo Reset AHCI controller after a FT command.
     02/25/05 dvo Add ID_STD_VDT and ID_ZEUS.
    d02/25/05 dvo Improve when/how to chain interrupts (sometimes a network
                  card uses the same IRQ line as the IDE controller).
     02/25/05 m-b Reset AHCI if error detected in interrupt service routine.
     03/02/05 m-b For Promise TX 4200/2300, if an interrupt arrives and busy
                  is still set, don't set IFLAG.
    e03/04/05 dvo Update the reset aspect bit in the Reset command for SIL 
                  3124 & AHCI.
     03/09/05 sso Fix duplicate tag problem for FPDMA commands on AHCI 
                  controller.
     03/14/05 dvo NVidia nForce4 supported. For NCQ, need 'AHCIOn' statement.
     03/16/05 d-g COMRESET will clear SATA errors while waiting for busy to
                  clear.
    f03/17/05 sso Add PromNCQDepth. Setting this to 32 allows for 32 NCQ 
                  commands, but an error SDB FIS will not interrupt Trex.
                  Setting to 31 (default setting) will allow error interrupts
                  to be seen, but limit the queue depth to 31.
     03/18/05 dvo Fix for PromNCQDepth. Block interrupts momentarily for 
                  Promise TX4200 / TX2300 when sending an NCQ command.
     03/18/05 dvo Reverse order of updated RSACT and sending an NCQ command
                  for AHCI controllers.
     03/18/05 l-b Decode Marvell Dongle errors: "Dongle CRC" for 0x5105 and
                  "Dongle Err" for 0x5114 or 0x510C.
     03/21/05 dvo Add Sargus.
     03/22/05 dvo Don't setup NCQ variables until after busy is cleared.
                  Always setup NCQ variables.
    g03/30/05 dvo Begin to support Promise SATA 150 SX8 (Carmel) HBA. Doesn't 
                  do IPM or BIST.
     04/01/05 dvo Support 10000h blocks for AHCI, PacDig, 3Ware, and nForce4.
     04/06/05 dvo Call OnIRq if an SDB FIS arrives with SActive==0 and the
                  error bit is set.
     04/07/05 dvo Improve FPDMA error decoding. Fix NCQTO start time for 
                  nForce4.
     04/18/05 dvo Change source of RSACT for SIL 3124 HBA.
     04/19/05 dvo Add more SMART attributes.
                  Add Taurus.
    h04/19/05 dvo If HOB=1, show extended registers for RSECC, RSECN, RCYLL 
                  and RCYLH for AHCI and SI 3124 controllers.
     04/20/05 dvo Also fix RCYLX if HOB=1 for AHCI and SI 3124 controllers.
     04/21/05 sso Don't reset the HBA if an error is detected in the interrupt
                  handler. Instead, set a flag and fix it prior to the next 
                  command. This prevents RSACT from clearing when an error
                  stops queued commands.
     04/21/05 dvo Fix AHCION causing duplicate baseport entries for some 
                  controllers.
    j04/25/05 d-g Clear HBA errors when no NCQ commands pending (see 4/21/05
                  change).
    k05/02/05 s-h Report 'Tag out of range' if a queued command attempts to
                  use a tag > 31.
     05/02/05 sso Don't increment CmdQueue if a RFPDMAQX fails immediately
                  (sent failure via D2H FIS vs releasing bus and later sending
                  an SDB FIS).
     05/05/05 d-g Allow RCMD and fix CMD, WTF, WTFX etc. for NForce4.
175 a12/13/04 dvo Support Promise TX 2300.
     12/15/04 dvo Support more DUTs.
     12/15/04 dvo Added 'DCM' and 'DCMStr'.
     12/17/04 d-g Fixed WTF & WTFX for the AHCI & Silicon Image 3124.
    b12/17/04 dvo Support Intel ICH5R & ICHR6 BIST command (added PCI 
                  vendor / device).
     12/23/04 m-m Don't lock SI 3112 vendor specific commands within VSCON or
                  SMARTOL.
     12/23/04 dvo Add 'BPIndexes' which returns the number of baseport
                  indexes.
     12/23/04 b-l If B > 256 and C < 65536 and LBAMode is off, convert to 
                  an extended command and convert CHS to LBA and issue with
                  LBA not CHS addressing.
     12/30/04 dvo Improvements for Marvell 6080 SATA controller (HBAReset
                  and starting to implement NCQ).
    c01/04/05 dvo Improving Marvell 6080 SATA NCQ.
     01/07/05 dvo Implement Promise TX 4200 workaround for NCQ command and
                  still interrupting the host. This limits tags to 31.
     01/10/05 dvo Reset will poll the master drive for busy to clear, then
                  poll the current drive for busy to clear.
     01/11/05 dvo Add ID_STG_DFH.
    d01/13/05 j-c Add 'LogXFeat' to set the feature register word for 
                  RdLogX / WrLogX commands.
     01/17/05 m-k Check if SATA Active command sets the detected bits.
     01/18/05 dvo Fix PIO data out for nVidia GForce with int's off.
     01/18/05 d-s Fix VSCHRESET for AHCI in AHCI mode.
     01/19/05 dvo Add PUISEnable, PUISDisable and PUISSpinup for the power up
                  in standby feature set.
    e01/26/05 dvo Support VSCID data structure version 2.
     02/03/05 r-p Update QFlags[] and QState[] for FPDMA commands.
    f02/05/05 r-w Promote to extended when LBA > 0x10000000 - B instead of 
                  LBA + B > 0x10000000 to prevent large LBAs (0xFFFFFFFF) from
                  wrapping.
     02/09/05 dvo Add airflow temperature attribute 190.
174 a09/10/04 dvo Fix bugs introduced in Trex r1.173.354 with regards to
                  the Promise TX4200 NCQ operation.
    b09/??/04 dvo Improvements for AHCI (Trex NCQ only).
    c09/17/04 pjg Change La Jolla to Unicorn.
    d10/04/04 dvo Add Mosquito.
                  Fix Trex_ncq using large block counts with Silicon Image
                  3124 controller.
    e10/05/04 dvo Add SATA power management.
    f10/08/04 dvo Improve Promise TX4200 NCQ.
     10/14/04 dvo Exclude EESARdTmr, EESAWrTmr, HOB and RDIN from (f)lstvar.
     10/14/04 dvo Added RdLogX and WrLogX commands.
    g10/19/04 dvo Add IsNCQ, set if HBA supports NCQ commands.
     10/19/04 dvo Improve SI 3124 NCQ commands.
    h10/19/04 d-s Add SATASpd. Return 0 for unknown/PATA, 1 for SATA gen 1
                  (1.5 GB) and 2 for gen 2 (3.0 GB).
     10/20/04 dvo Improve Trex_ncq with register writes.
     10/20/04 dvo Fix Marvell 6080 DMA commands (getting 2 interrupts per
                  command, needed to look for device completed).
    j10/26/04 dvo Promise TX4200 changes.
     10/27/04 dvo Added Catalina and Unicorn2.
    k11/01/04 dvo Added 'FWMajor' and 'FWMajorStr' retrieved from native, 
                  VSCId or SmartId commands.
     11/02/04 dvo Add 'AHCIOff' and 'AHCIOn' to enable the AHCI controller.
     11/02/04 dvo Support SI 3124 and ACHI SATA controllers.
    m11/03/04 dvo Added 'GlobalRegs' and 'PortRegs' read-only variables for
                  memory mapped controllers.
     11/04/04 dvo Added 'BIST p1,p2,p3' to send a BIST FIS on AHCI, Silicon
                  Image 3124 and Promise TX 4200 SATA controllers.
    n11/05/04 dvo Support Silicon Image 3124 as 010400h class code.
     11/08/04 dvo Support Broadcom RAIDCORE with interrupts off. Crashes with
                  interrupts on. Need spec to resolve.
     11/09/04 dvo Fix SI 3124 & AHCI RDMAA/WDMAA etc (all commands).
    p11/12/04 dvo Fix AHCI hard hang during NCQ commands.
     11/12/04 dvo Support 8 bit PIO transfers (PIOX=8).
    q11/12/04 dvo Remove COMRESET in BIST command.
     11/12/04 dvo Add 'COMRESET' statement.
     11/15/04 dvo Fix AHCI int on/off bug.
     11/17/04 dvo Add HResetDelay for VSCHReset delay before looking at the
                  alternate status.
     11/17/04 dvo Add Sirius.
    r11/17/04 k-p Add SecOfs for RdLogX/WrLogX. Goes into RCYLL.
     11/23/04 dvo Support BIST for Intel ICH5/6, Promise RAID and MV6080 based
                  SATA controllers.
     11/29/04 r-p Add ASPECT_NCQ_CAPABLE, ASPECT_NCQ_PEND and ASPECT_EESA.
                  Add 'FUAR' and 'FUAW' to set/clear FUA for RFPDMAQX/WFPDMAQX 
                  commands. FUA will set/clear both at the same time.
     11/29/04 j-r Write 0 to feature register for Read/Write Log Ext.
     11/30/04 d-g SmartOL command supported on a SI 3112 SATA controller.
    s12/06/04 m-b Reset HBA if a FPDMA sends an SDB FIS with an error.
     12/06/04 dvo Fix RdLogX / WrLogX on SI 3124 & AHCI.
    t12/07/04 dvo Don't detect and support the Promise Carmel (SATAII 150 SX8).
     12/07/04 dvo Added Hawk, Antares and Orion.
173 a05/20/04 dvo Don't build SG list for each command. Instead, it'll be 
                  passed in as a parameter.
    b05/21/04 dvo More error checking with regards to the SG list and transfer 
                  buffer.
    c05/26/04 lsh Change WM/WMX/WMFX busy timeout from 'MDRQTO' to 'TIMEOUT'
                  units. Note: MDRQTO default is 5000 (5 ms), TIMEOUT is 15 
                  (15 seconds).
    d05/28/04 dvo Fix NextTag, so tag's won't be re-used.
    e06/02/04 myl Don't use 'ER/RETRIES' to set bit 0 for legacy queued 
                  commands.
     06/03/04 n-c Add 2 new reserved area ABA / CHS translators. Sabre, 
                  Scorpio and Mammoth M use 21 bit encoding. Hercules uses
                  20 bit encoding.
    f06/08/04 t-m Find PCI devices regardless of whether a 32 bit pointer is 
                  present.
    g06/14/04 dvo Don't show family in LstDrv (OEM builds). Don't hard-code
                  TrexVerStr. Rely on <AppName>Str.
     06/17/04 dvo Silicon Image 3124 improvements (Trex_ncq only).
    h06/21/04 dvo Always use LBA addressing for RXA, RVXA, RDMAXA, RMXA, WXA, 
                  WMXA, WDMAXA (do extended all).
     06/21/04 dvo Add HBAReset to reset some SATA controllers.
     02/22/04 dvo Add Avalon.
    j07/21/04 dvo Improve support for Marvell 508x/608x HBAs.
    k07/22/04 dvo Support Pacific Digital NCQ card (not yet for NCQ).
                  Support a different Sil 3124 PCI device type.
    m08/02/04 dvo Don't allow DMA commands on a Marvel 50xx HBA (unsupported)
                  or a Pacific Digital controller.
     08/02/04 n-c Support 8 headed VSC zone table format 0x100.
     08/05/04 dvo Support Pac Dig in automatic mode.
    n08/06/04 dvo Preseve last command name in event handlers.
     08/06/04 hyc Add a bit more error checking for all drive commands (rva, 
                  ra, wa etc.) if the error location is outside of the 
                  requested range.
    p08/09/04 hyc Don't allow OnErr/OnEtc/OnTO/OnTEM to be re-entered.
     08/13/04 dvo Right justify the SN in DID, SNStr etc.
    q08/19/04 dvo Improve Promise TX4200 NCQ performance.
    r09/01/04 dvo SActive bits shall be set when a SDB FIS is received. Trex 
                  expects bits in SActive to be cleared in the OnIRq handler.
     09/02/04 dvo Excluded Silicon Image 3124 from Trex (only useful for 
                  Trex_ncq).
     09/02/04 dvo Added Xbox 2.
     09/02/04 m-v FUA will only toggle RSDH bit 7 for RFPDMAQX & WFPDMAQX.
                  FUA will default to off.
     09/03/04 dvo Fix RSCTL & RSSTS for Promise TX4200.
172 a02/05/04 dvo Support Silicon Image 3124 card in custom Trex.
    a02/16/04 dvo Support Promise PDC20378 found on Asus SK8N motherboard.
    b03/01/04 r-m Change RFeat to return last value written to the feature 
                  register, not the current error register value.
    c03/03/04 dvo Prevent crash in 'chksum' command, if the 'B' exceeds the
                  buffer size.
    d03/05/04 pws Update Errors variable if reportlvl bitmaps has rptlvlerrs 
                  sets.
    e03/09/04 s-s Support Promise TX4200.
     03/10/04 m-m Fix DID SPT output in native/VSCVirt mode.
    f03/16/04 dvo Support ICH6 in AHCI mode - with legacy PCI mode. 
                  THIS IS NOT USED FOR NCQ.
    g03/23/04 bcg Add WD custom IDE controller card.
    h03/25/04 dvo Added Sabre LC.
    j03/29/04 dvo Support Promise FastTrak 376 in RAID configuration.
    k04/02/04 dvo Add ATA-7 streaming commands: CfgStrm, RStrmX, RStrmDmaX, 
                  WStrmX, WStrmDmaX, StrmAdd, StrmAU, StrmDir, StrmFlush,
                  StrmHSE & StrmNS.
                  Add ATA-7 FUA commands: WDMAFX, WDMAQFX, WMFX and QUEUE
                  WDMAFX.
                  Build PRD tables for RFPDMAQX & WFPDMAQX commands.                  
    m04/06/04 dvo For Trex_ncq, don't turn off the HBA when a command is 
                  'done.' This fixes the first party DMA holding data 
                  transfers.
    n04/20/04 dvo Added Hercules.
    p04/22/04 dvo Fix a few AHCI / NCQ bugs.
    q04/28/04 dvo Additional AHCI / NCQ fixes.
    r05/04/04 dvo Additional NCQ fixes.
    s05/05/04 dvo Additional AHCI / NCQ fixes.
     05/11/04 dvo Add Buccaneer.
    t05/17/40 dvo Improvements to NCQ for Sil3124.
171 a12/16/03 dvo DOWNLOAD command will use IRQs if interrupts enabled.
    b12/17/03 dvo Remove Python. Change Sabre from 84 to 83.
     12/29/03 k-d Support ACard IDE controller chip (Artop).
    c12/30/03 dvo Prevent Promise NCQ card from interrupting when SATA device
                  is unplugged / plugged (also from VSCHReset).
     01/05/04 dvo Add code to recover from a drive error on a Promise SATA 
                  controller.
    d01/06/04 dvo NCQ cleanup performed in 'Queue Service' or 'Queue wait' 
                  commands.
     01/07/04 shl Fix SMARTRPT.
    e01/08/04 dvo Call OnIRq when a NCQ command has interrupted host.
     01/12/04 dvo Support Promise FastTrak 150TX4.
    f01/14/04 dvo Decrement QueueDepth when an NCQ command has interrupted
                  the host.
    h01/16/04 dvo Fix all VIA chipsets just like version 169.
    j01/23/04 dvo Support Promise / MAXTOR SATA/PATA combo card.
170 a11/10/03 dvo Fix TREXWIN.EXE RBDMA/WBDMA.
    a11/11/03 dvo Add 'DownloadFeat' variable used to set the feature register
                  value for the 'Download' command.
    b11/13/03 dvo Added Python and Sabre drives.
    b11/14/03 dvo Added 'RFPDMAQ', 'WFPDMAQ' & 'FUA' - but not yet functional.
    b11/17/03 dvo Assume reserved type is 'new 20 bit.' This will setup LBA /
                  ABA translation for negative cylinder calculations for VSC 
                  R/W commands.
169 a10/01/03 cbo Ignore a 'Still Busy' error while in VSCHReset.
    b10/08/03 j-m Eclipse2 users 16-bit physical cylinder values.
    c10/13/03 j-m Support OnScrnUpd event handler when the user / native
                  screen is drawn.
    d10/14/03 dvo CIDB won't call OnErr twice.
    e10/21/03 dvo Block interrupts, then clear IFlag.
    f10/28/03 dvo Added Scorpio Mammoth & Scorpio Aspen.
     10/31/03 dvo Fix VIA chipset hang (by clearing the bus master command
                  register when Trex starts).
168 c08/20/03 a-t Add BusyGlitch flag bits
    e09/09/03 rgm Add HdFlag.
    f09/15/03 a-t Remove BusyGlitch flag bits.
167 a08/20/03 dvo Build with Krnl version 303.
    b08/21/03 dvo Added Scorpio.
166 a07/29/03 lsh Add 'ChkDRQ' flag to err / warn when a command is being
                  issued with DRQ asserted. Default is warn (same as before).
    b07/31/03 m-v Temp: Issue a NOP command (sub command 1) to allow the drive
                  to assert SERV.
    c07/31/03 myl Too many NOP's, so added a polling rate (QNopPoll).
    d08/02/03 a-t Back out NOP's (b&c) and don't issue a new command unless
                  SERV bit set.
    e08/05/03 dvo Back out waiting for SERV bit set (d).
    f08/07/03 dvo Add CmdStat2 variable. Status taked after a queued command 
                  (only with QMaskIntr set).
    g08/08/03 dvo Temp: Issue a NOP command (sub command 1) to allow the drive
                  to assert SERV.  
    h08/13/03 wad Added EESA commands: EESADataIn, EESADataOut, EESARdTmr, 
                  EESARL, EESASendKey, EESAStat, EESAW, EESAWL and EESAWrTmr.
165 a06/12/03 myl Reset timeout after each service command in 'Queue wait'.
    b06/14/03 dvo AVWDMA / AVRDMA writes feature register value with 
                  continuous, stream and urgent values.
                  Added 'AllocQPRD' command to allocate PRD tables for 32
                  queued commands.
    b06/16/03 dvo Call OnErr instead of OnTO handler for 'Still Busy' error.
    c06/18/03 msr Fix RDMAA getting IRQ timeouts after an error.
     06/19/03 mfv Arm the bus master prior to issuing queued commands - SATA
                  may not send a status update FIS when not releasing the bus.
    d06/19/03 aat VSCHReset selects and waits for a drive upon a BUSY_TIMEOUT
                  or IRQ_TIMEOUT condition.
    e06/19/03 a-m Don't bother masking int's when writing a queued command.
    f06/19/03 a-m Don't poll after writing queued command. Mask int's.
    g06/20/03 a-m Don't bother masking int's when writing a queued command.
    h06/20/03 a-m If status shows DRQ asserted, wait for interrupt in queued
                  command.   
    j06/23/03 wad Update QRelIntr after an ID command.
    k06/24/03 dvo Mask interrupts when sending a queued command.
    m06/25/03 myw Fix 'CIDB' hex/dec labels in header.
    n06/27/03 dvo Got SATA with command queuing working. Set lower 3 bits in
                  RSECC for a queued DMA command. Later checks of the same 
                  bits are same (assume no update from the drive happened.)
    p06/28/03 dvo Clean up some debug code. Add ISRStat & ISTBMStat (Status 
                  detected in ISR) and CmdStat (status prior to writing a 
                  command).
    q07/02/03 dvo If queued command is interrupted, re-arm BM DMA controller.
    r07/02/03 dvo Remove q revision of re-arm BM DMA Controller.
                  Added flag to enable / disable masking interrupts for queued 
                  DMA commands. If flag is set, Trex will block interrupts to 
                  the host microprocessor, set bit 1 of RFixD, wait 
                  FixPortDelay units (100 ns per unit), update task file & 
                  issue command, wait 400 ns, clear bit 1 of RFixD, read 
                  RSTAT (to force Int Req low), allow interrupts to the host.
                  Added FixPortDelay to control wait after disabling/enabling
                  interrupts when writing a queued DMA command. Default is 20
                  (2 micro seconds). 
    s07/03/03 a-m When bus is released, wait for the service interrupt before 
                  issuing another command.                  
    t07/03/03 m-v Don't read RSTAT after enabling interrupts for queued 
                  commands.
    u07/03/03 m-v Enable interrupts as soon as possible.
    v07/03/03 m-v When polling, read RSTAT to clear a pending interrupt, and
                  clear IFLAG.
     07/03/03 dvo Report ICRC error correctly for service errors.
    w07/08/03 dvo Add 'SIHoldOff' which is the number of microseconds to 
                  delay after receiving a service interrupt before sending
                  another queued command.
     07/09/03 cbo Fix number of blocks sent on last set of blocks for RMX / 
                  WMX.
    x07/11/03 dvo Try not to poll status after an interrupt.
    y07/14/03 dvo Wait for another interrupt if a queued DMA command returns an
                  alt status of 0x00, or alt status is busy, or sector count is
                  still the same (lower 3 bits written as 1's).
    z07/16/03 a-a Fix HighPoint SATA controller with WDMA tri-stating taskfile.
   aa07/21/03 dvo When ChkPtr is enabled, don't fail for QState[] & QFlags[] 
                  accesses.
     07/22/03 dvo Added 'ID_TRAILBLAZER_EAGLE'.
     07/22/03 dvo When a service interrupt hits before a command interrupt,
                  check RAStat every 100us to look for a completed command, in
                  addition to waiting for a command interrupt.
   ab07/29/03 dvo Added 'ID_POLARIS_EAGLE'. 
                  Remove debug code for Queued DMA analyzing.
 164 06/04/03 dvo Add 'ShareIntr' flag to enable / disable shared interrupt
                  handling. Default is disabled.
     06/09/03 myl Promote to an extended commands if in CHS mode with B>256.
     06/12/03 myl Ensure proper Bus Master scatter/gather tables for B>0xFC00.
 163 05/16/03 a-t Add flag to control the handling of pending service
                  while in a 'queue' command.
     05/19/03 w-g Set IFlag unconditionally.
     05/21/03 l-l Update physical heads after a native command.
     05/23/03 r-p Update CB1stErrOfs upon a CIDB/CWWWB error.
     05/24/03 dvo Fix VSCHReset on a SATA drive - was returning 0x7FFF.
 162 05/01/03 glb QUEUE_TIMEOUT's bump TERRORS instead of DERRORS.
     05/05/03 glb Set QFlags[] bit 2 prior to calling OnQRel. Set QFlags[]
                  bit 0 prior to calling OnQDone.
     05/05/03 dvo Added Safari SE.
     05/06/03 dvo Changed QFlags[], bits 7:3 no longer represent the tag.
                  Bit 3 is now defined as a queued 48 bit command.
     05/07/03 dvo Allow NextTag assignment.
     05/09/03 dvo Exclude Adaptec SCSI from list of baseports.
     05/15/03 r-p Update FamilyID byte after being in native mode.
 161 04/15/03 dvo Added Aspen.
     04/16/03 j-m "Smart Err" reported if a SMART command returns 0x5110.
     04/17/03 dvo Support Intel ICH5 in 'Soft RAID' configuration.
                  Support interrupt sharing.
     04/18/03 dvo Allow shared interrupts.
     04/24/03 dvo Better handling of service interrupts.
     04/24/03 dvo Add 'ChkServ' to enable / disable checking if the SERV
                  bit is set after a queued DMA command.
     04/24/03 dvo Added ID_ECLIPSE2.
     04/25/03 l-b Support Eclipse2 zone table.
 160 04/11/03 r-n VSCRevXlate supports new format (0x0002).
     04/11/03 cbo WM failing because of interrupt flag not being cleared.
     04/14/03 dvo Support Intel SATA on the motherboard (ICH5 chipset).
 159 04/07/03 dvo Clear interrupt flag in Native command.
     04/10/03 dvo Add 'ChkRSecC' to enable / disable checking of RSECC
                  after a queued command releases the bus or completes
                  a data transfer.
                  Fix queued commands and enable / disable release
                  interrupts.
 158 03/24/03 dvo Added ID_POLARIS.
     03/27/03 dvo Change QFlags into QFlags array. Added QState array.
                  Added ServIntr counter.
     03/31/03 dvo Added Nova.
     04/03/03 r-p Fix hang bug in 'scan' command. 
     04/04/03 dvo Improve 'scan' time with SATA controller cards.
 157 03/12/03 myl Check sector count register after a DMA Queue command.
                  Ensure tag has an associated PRD, I/O is correct (for
                  Service command) and C/D is valid.
     03/17/03 s-w Report TAG out of range.
     03/21/03 dvo Added OnQRel, OnQXfr and OnQDone, called from a queued
                  DMA command when the bus is released, before a data
                  transfer and after a data transfer, respectively.    
 156 02/04/03 pjg Sync with Krnl update.
     02/06/03 j-m Fix C=65535;H=15;S=1;B=256;LBAMODE=OFF bug. Trex promoted
                  to an extended command.
     02/19/03 dvo Show a warning when RWPRE is read (since it's RErr when 
                  read).
     02/21/03 dvo Removed Elapsed@CCT, Duration@CCT and replaced with 
                  CmdElapsed & CmdDuration.
     02/25/03 s-g Change BMStat from read-only to read-write access.
     03/06/03 myl Write FEAT register correctly in extended queue DMA cmds.
 155 01/20/03 mjr Add LDBits, LEGACY_BLOCK_NATIVE & LEGACY_BLOCK_PASS_THRU
                  to block legacy commands. Test if the drive is in native
                  mode prior to a RevXlate command.
     01/20/03 myl Rename 'Qd DMA Serv' error to 'Serv Bit=1'.
     01/23/03 t-h Assign altport for an unknown baseport to baseport + 0x206.
 154 01/02/03 dvo Fix VSCVirt and VSCGetZones commands - error parsing the
                  zone table.
 153 12/19/02 d-s Fix incc in zone 20.
     12/19/02 g-s Add CMD controller class code.
     12/19/02 dvo Add HDA Temperature (194) to SmartRpt (introduced on 
                  Safari).
     12/23/02 lmy Time each 'high level' command using a named timer 'CCT'.
 152 12/05/02 dvo Fix VSCDelFile (SOC only). 
     12/05/02 dvo Highpoint controller fix for interrupt hangs. Add BMStat,
                  read only bus master status from prior DMA command.
     12/10/02 dvo Added VSCDataIn (SMART read log for VSC data), 
                  VSCDataOut (SMART write log for VSC data), VSCSendKey
                  (SMART write log for VSC key sector), IsVirt (TRUE if in
                  VSC virtual mode) and EdV (Edit VSCKeySector).
     12/13/02 j-g Support SIIG UDMA133 controller.
     12/17/02 dvo Updated some command descriptions.
 151 10/23/02 dvo Added ID_PIONEER_V (Pioneer V).
     10/29/02 dvo Added VSCVirt to run in virtual CHS mode. In this mode, 
                  R, RL, SK, W & WL will call VSCR, VSCRL, Action code 18, 
                  VSCW & VSCWL respectively. The drive is still in user mode, 
                  and all other commands operate the same as user mode (RM/WM, 
                  RDMA/WDMA etc). VSCNative will issue: *ID, *VSCON, 
                  VSCGetZones & VSCID (* Only if these haven't been
                  previously issued).

                  Note: The current Puma FW (06.00R06.02.12.02R) does not
                  return the correct zone table data (end lba in zone 20),
                  so this command isn't working.
     10/30/02 dvo Added RV to VSCVirt mode. 
     11/04/02 dvo Added VSCChkFS (check file system), VSCRDir (read file 
                  system), VSCAddFile (create resident file), VSCDelFile
                  (delete resident file).
     11/06/02 pws Update internal buffer size variable when SecSiz changes.
     11/06/02 j-m Fix VSCRevXlate (it was truncating a 32 bit cylinder to 
                  16 bits).
     11/07/02 dvo Added ID_MAMMOTH (Mammoth).
     11/12/02 r-h Renamed VSCSK to VSCSKX (seek to user extended LBA) and 
                  created VSCSK to seek to a virtual cylinder & head.
     11/18/02 dvo Add Xenon & higher family id's to the '32 bit physical
                  cylinder' list.
 150 09/26/02 lsh Setting D=?, DUT=?, BASEPORT=? etc will always update RSDH.
                  Also, when setting D=?, also set baseport for object.
     09/26/02 m-m Attempt to fix VSCR/RL/W/RL reporting of errors.
     10/01/02 m-m Subtract 1 from VSCR/RL/W/RL error reporting.
     10/07/02 dvo Update PciBusDvc value at startup.
     10/08/02 dvo Allow any baseport. Should follow command with new altport
                  and irq.
     10/08/02 dvo Fix reported dut/drive for slaves & 28 bit addresses.
     10/11/02 cbo Allow baseport(s) to be removed with -P-xxxx command line
                  argument.
     10/17/02 j-g Fix incs/decs in native mode. Introduced with 149's native
                  mode SPT fix.
     10/17/02 sso Add an optional parameter to VSCHReset for parameter 1
                  (see VSC spec for functional behavior). Defaults to 1.
 149 09/20/02 j-m Add XlateC, XlateH, XlateS & XlateW variables, which gets 
                  updated after a (VSC)Xlate command. Add RevXlateLBA which
                  gets updated after a (VSC)RevXlate command. ReportLvl can be
                  used to disable visible messages to (VSC)Xlate.
     09/20/02 lsh In native mode SPT works for any selected head (H).
 148 09/16/02 tat Report DRQ TO-ECC (ECode 28h) when RL/WL ECC bytes have a 
                  DRQ timeout.
     09/16/02 cbo Added DumpVSCKey to display data from previous VSC command.
     09/16/02 cbo Added VSCKeySector buffer, which is used by VSC commands.
     09/17/02 tat Fix SetMax & RdMaxAddr look at AutoExtend & b48Mode flags
                  correctly.
     09/17/02 dvo Fix error report location bug, introduced in 147.
 147 08/22/02 dvo Fix SMARTAUTOON function (enabled by default) to turn 
                  SMART off if it was off.
     08/23/02 g-y CRC retry for DMA commands will use PIO transfer (except
                  for queued commands).
     08/23/02 sso Take out fix on 08/19/02 'Assume IRq 15 for a new baseport'.
     08/29/02 dvo Added Expedition.
     09/03/02 n-l Suspect VSCW may not be returning blocks in RCYLX.
     09/04/02 mjr SmartOlEcc issues a Smart Read Log with a sector count of
                  0xC0 instead of a vendor unique command (sub command of 
                  0xDC).
     09/05/02 j-g Reset will select the master drive after busy clears 
                  regardless of whether the current drive was a slave.
     09/09/02 dvo Parse VSCStat buffer to determine if VSC is enabled or 
                  disabled. Sets these ASPECT bits: ASPECT_IN_VSC & ASPECT_VSC.
                  Also set these aspect bits if any Trex VSC command succeeds.
     09/10/02 m-m VSCR will return data even with an ECC/DAM error, and report
                  virtual CHS for VSCR, VSCRL, VSCW & VSCWL.
     09/11/02 m-m Added VSCRV - read verify a virtual CHS.
     09/12/02 a-i Remove FTX, SEEKX/SKX, RLX & WLX.
 146 08/21/02 m-r Updates per VSC spec 1.19.
     08/21/02 dvo Don't issue RL/WL commands for LBA > 0x0FFFFFFF. Returns 
                  no op-code error.
     08/22/02 cbo Report ICRC errors for ext DMA commands (was reporting bad
                  sector).
 145 08/12/02 q-d Allow extended commands to issue CHS commands (temp feature).
     08/12/02 m-v Remove 145a. Fix WM/WMX, to wait for busy to clear prior to
                  waiting for DRQ to be asserted.
     08/12/02 m-v Change timeout value while waiting for DRQ for WM/WMX.
     08/12/02 dvo Change timeout value while waiting for DRQ for PIO out 
                  protocol for all other PIO writes (W/WX, SMARTWRLOG etc).
                  Transfer B+1 data sectors for VSCRL/VSCWL commands.
     08/14/02 sso Add AutoExtend flag to stop auto promoting to extended 
                  commands. Default is on.
     08/15/02 r-h VSCW needs to look at RCYLX instead of 'B'.
     08/16/02 tat Fix CIDB to set eflag if reportlvl was 0.
     08/19/02 sso Fix the reported drive from an extended error.
     08/19/02 dvo Assume IRq 15 for a new baseport (up to 4 can be added).
 144 08/01/02 tey Allow \r in (f)printf.
     08/02/02 dvo Added Queue commands.
     08/05/02 r-w DMA all commands (RDMAA/WDMAA etc.) now program the UDMA bus
                  master with correct transfer size for final sector.
     08/06/02 r-h VSCRFile/VSCWFile work with B > 255.
     08/08/02 cbo Change VSCHReset to similar code to HReset.
 143 07/27/02 n-c Modified adaptive KFCI format.
     07/29/02 kmc Fix VSCWFile (was only writing first sector).
     07/30/02 cbo Fix Xlate (native version) for 32 bit cylinders.
     07/31/02 n-a Fix VSCR, VSCW, VSCRL & VSCWL with an optional 
                  buffer:offset that has a non-zero offset.
 142 07/26/02 dvo Added BPIndex. Modified LstPorts to show this value.
 141 07/16/02 dvo Undo VSC Get Drive Physical Parameters structure change in
                  version 1.140.xxx
              n-c Use only physical heads when parsing an adaptive zone table.
     07/17/02 tat Don't promote sk, rl or wl to 48 bit equivalents when 
                  b48mode is on.
     07/17/02 c-p If ID buffer, word 3 (number of heads) is zero, substitute 
                  1. If word 6 (number of sectors per track) is zero, 
                  substitute 1. If either is zero, can't do a LBA to CHS or
                  CHS to LBA translation.
     07/23/02 sso RL/WL will also check for DRq asserted between bytes.
     07/23/02 cbo VSCHReset on latest chip will result in a 7Fh status. Trex
                  now waits for a 0x50.
     07/23/02 sso ECC follows setting from the drive.             
     07/24/02 cbo Fix VSCHReset.
     07/24/02 lsh Report CIDB miscompares better (when unable to convert BCD
                  into decimal) and use CBELmt to stop report miscompares.
     07/25/02 r-m FT sets RSECC to SPT instead of B (ATTF does the same).
     07/25/02 k-s Improve CIDB miscompare output.
     07/25/02 k-h Service shouldn't decrement queue size unless it succeeds.
 140 06/13/02 s-s Tsunami instead of Tsuname.
     06/14/02 msr VSCClrLogs now requires an agent code.
     06/25/02 clj Issue extended commands if B > 256.
     06/25/02 wcg Add TrexVerStr, returns Trex version string.
     06/26/02 cbo VSCClrLogs takes an optional Agent Code (default is 1).
     06/27/02 mjr Modify VSC Get Drive Physical Parameters structure.
     07/08/02 dvo Added 'RBDMA' & 'WBDMA' to transfer data via the DMA 
                  protocol.
 139 06/04/02 dvo Fix Family strings for Neo, Xenon, Safari, Tsuname, Cyclone
                  and Puma.
     06/04/02 p-w Added 'NC' command (negative cylinder).
     06/04/02 a-i Added 'b48Cmd' read only flag set when an extended command
                  has been issued.
     06/05/02 dvo Added VSCSK to seek to user LBA (action code 35).
     06/06/02 cbo VSCRL/VSCWL setting internal 'B' value to 2, causing pat to
                  fail for 'fill would overflow buffer'.                 
     06/07/02 c-d Native command will always read zone table.
     06/07/02 cbo VSCRL & VSCWL will set B to 2.
     06/07/02 r-m Use Native ID word 130 to determine if 32 bit physical
                  cylinders are supported.
     06/07/02 cbo VSCR/VSCW no longer uses 32 bit sector value, just 16 bit.
     06/10/02 cbo VSCRL & VSCWL no longer sets B to 2, but does set bytes to 
                  transfer to 1024.
     06/11/02 cbo RevXlate doesn't put data into buffer, taskfile regs used.
 138 05/07/02 dms Added Tsuname & Cyclone. Renamed Explorer to Safari.
     05/08/02 b-b Don't scan for PCI devices if a PCI BIOS isn't found.
     05/10/02 clj Fixed revxlate for Pioneer drives (48 bit drives).
     05/10/02 bob Don't report 'UK_ERROR' when status register returns 0.
     05/15/02 sso Added ALI chipset.
     05/16/02 dvo Report correct status reg content when a Reset Sig happens.
     05/19/02 lsh Added ChkRdy to check if ready bit is set after command
                  completes. Default is off.
     05/23/02 dvo Added SmartChkFile. Force Download to use RFeat=7.
     05/24/02 i-o Decode 'Seeking' errors (if SC bit cleared & error bit set).
     05/24/02 dvo Added ECodeMsg.
     05/28/02 msr Added Extended Seek VSC command.
     05/29/02 dvo SmartRdLog & SmartWrLog no longer issue Read Log Ext & 
                  Write Log Ext when b48mode is true.
     05/31/02 cbo Fix VSCWL, VSCRevXlate & VSCXlate.
     05/31/02 dvo Added SIIG controller (doesn't support UDMA, yet) & Promise
                  RAID controller.
     06/04/02 dvo Added Puma.
     06/04/02 sso Modified CRCFix to a number variable, setting the limit of 
                  ICRC fixes per location.
 137 04/12/02 dvo Fixed RMX / WMX when B = 65536.
     04/12/02 dvo Modified 'all' commands.
     04/16/02 r-c Fixed DecH/DecC/IncH/IncC in reserved area.
     04/17/02 dvo Fixed DecS/IncS when switching between reserved & user data.
     04/17/02 n-c Add adaptive KFCI zone table.
     04/22/02 d-s Add Explorer family string/id.
     04/23/02 lsh Fixed VSCId (was returning UK_ERROR)
     04/24/02 d-s Pioneer modified the 'Xlate' command to use 48 bit lba
                  style of writing task file registers.
     04/30/02 dvo Replaced Xtreme VL40SE with Stinger.
     04/30/02 m-r Change VSC Read / Write Long from user LBA to virtual CHS.
     05/01/02 r-h For HReset, show time left in seconds.
 136 03/13/02 dvo Added code to help detect debug stops: 'ChkReset' flag, if
                  true, will force Trex to generate a message if 50?1h is
                  detected prior to issuing a command. 'ResetIssued' is a flag
                  that a user can set when an intentional external reset (ie 
                  Pin 1, power cycling etc) is performed. Trex automatically 
                  sets the flag for 'reset', 'hreset', 'diag', etc.
     03/14/02 dvo Added ASPECT_RESET, which is similar to ResetIssued flag.
     03/15/02 dvo Fixed pat id when PTA wasn't default.
     03/19/02 clj Fix Trex -s option, so ID/DID wouldn't report a 'DUT Map 
                  Corrupted' error.
     03/21/02 m-k Allow scatter/gather entries to break 4K boundary (for 65536
                  block DMA transfers).
     04/04/02 dvo Changed default 'Select' flag to 0 (works better in PSVmode).
                  Changed default 'SelectMask' from 0x88 to 0x80 (issues a
                  command when busy is cleared, vs busy & DRQ cleared).
                  Issue warning if Cmd Issued with DRQ asserted.
                  Fixed bug with Mav Marvell 7200/Mav Marvell 5400 names.
                  Allow Ctrl-X to break out of HReset.
                  Added Neo & Xenon family strings & Id bytes
     04/11/02 dvo Fix zone info from a native command in psv mode.
 135 02/21/02 dvo Automatically switch to extended commands when LBA > 28 bits.
     02/22/02 dvo Report extended / non-extended errors correctly.
     03/01/02 dvo Added VSC support (but untested): ASPECT_IN_VSC, PatVSC, 
                  VSCChkFile, VSCClrLogs, VSCGetZones, VSCHReset, VSCId, 
                  VSCOff, VSCOn, VSCStat, VSCRFile, VSCRevXlate, VSCWFile and 
                  VSCXlate.
     03/04/02 r-m Report physical cylinders minus number of reserved cylinders.
     03/05/02 dvo Check if LBA + B will exceed the maximum 28 bit lba, and if 
                  so, issue an extended command. Applies to reads & writes, but
                  not smartrdlog, smartwrlog, seek (checks if LBA exceeds max),
                  flush rdmaxaddr and setmax.
     03/05/02 j-m Fix 'all' commands with LBAMode off and C > 0xFFFF.
     03/05/02 lsh Fix native mode seek to reserved cylinders.
     03/05/02 tey Report native mode errors in in CHS format instead of ABA.
 134 02/19/02 cbo Fix Scan.
     02/19/02 r-m Fix 32 bit cylinder code. Fix Ctrl-X hang during a sk.
     02/20/02 r-m Change 32 bit cylinder zone table structure. Display
                  32 bit values for ZMinC / ZMaxC (instead of 16 bit values).
 133 02/07/02 dvo Added Maverick Marvell 7200 & 5400.
     02/07/02 kah Added 'resetnowait' and 'resetpulse'.
     02/11/02 cbo Continue scaning RASTAT for 'timeout' seconds if it's 0x00.
     02/13/02 pjg Allow a 48 bit start/end ABA address in the zone table.
     02/13/02 dvo Extended commands will always use LBA (not CHS) addressing.
                  Note, mapped commands may use both, but CHS mode shouldn't
                  be allowed by drive's FW (Maxtor does).
     02/13/02 dvo Change error Reporting style when changing 'b48Mode'.
     02/15/02 j-m Incs/Decs fixed for native mode, zone 0 vs zone 1-20.
     02/15/02 sso SmartRdLog(X) puts 'B' into RSecC.
     02/15/02 r-h Native seek will put bit 16 of 'C' into bit 3 or RSDH.
 132 01/23/02 j-m Update C, H, S, & B when ChkFile <id> is called, regardless
                  if it succeeds or fails.
     01/25/02 dvo When 'D', 'DUT' or 'BASEPORT' changes, RSDH shall be updated
                  and a 'RTF' performed automatically.
     01/28/02 m-l Scan should find slave only configurations (no master).
     01/30/02 dvo Added 'aspects' and several constants. Aspects show whether
                  an ID has been performed, it it's a WDC drive, it native
                  mode has ever been entered, etc.
     02/06/02 dvo Fix WaitB to use current value of Timeout, not the default.                  
 131 01/04/02 cbo Add 'ChkDRq' flag to enable/disable checking of the DRQ 
                  still asserted upon command completion.
     01/05/02 pjg Fix RAStat & RFixD (was hard-coded to baseport + 0x206).
     01/10/02 r-p Added Voyager family ID.
     01/10/02 dvo Check if transfer size > src/dst buffer size.
     01/10/02 s-t Update task file data correctly for Extended commands.
     01/10/02 dvo Added 'FRTFX' and 'RTFX'
     01/11/02 lsh Capactity will reported correctly, up to 48-bit Max LBA.
     01/11/02 bll Fix problem in Native command with larger drives, when the
                  physical cylinder exceeds 0xBFFF (49151).
     01/18/02 cbo Fix Promise Serial ATA controller card detection of bus 
                  master IO port.
 130 01/03/02 cbo Add Promise Serial ATA controller card.
 129 12/05/01 lsh SmartStat shall report 'SMART ERR' if command is successful,
                  but reports a problem.
              mec Check for Ctrl-X when waiting for DRQ.
     12/20/01 sso Added 48 bit address commands: FlushX, RX, RXA, RDMAX, 
                  RDMAXA, RMX, RMXA, RDMAQX, RVX, RVXA, SmartRdLogX, 
                  SmartWrLogX, WX, WXA, WDMAX, WDMAXA, WMX, WMXA, WDMAQX.
 128 12/04/01 r-n Minor FW string incorrect when a '.' wasn't in the field.
                  No, it's hard coded to look at ID buffer offsets at 0x1C2, 
                  0x1CA and 0x1D2.
 127 11/28/01 a-y Change OEM version to not show references to family id
                  family string etc.
 126 11/07/01 sso Fix AVR & AVW.
     11/14/01 r-p Added Eclipse 5400 & 7200 families.
     11/15/01 mec Added ECCXfr to set the RL/WL ECC bytes independently of
                  issueing an ECC Set Features command.
     11/15/01 c-p Added 'Select' to not care if RSTAT has a 0x50 status.
                  Helps when the drive is in PSV mode. Default is ON, set 
                  to OFF when in PSV mode.
     11/15/01 dvo Don't report error if RSTAT == 0x40 for non DMAQ commands,
                  and report an error if a DMA queued command sets RSTAT
                  == 0x50 with no queued commands.
 125 10/23/01 rkm Change Crusader to Pioneer.
     10/24/01 dvo Don't assign family ID byte to non-WD drive.
     10/24/01 dvo Report status & error for a 'NOT SELECTED' failure.
     10/24/01 dvo Don't show invalid info in a 'DID' command if ID failed.
     10/26/01 sso Have 'SmartId' enable smart if it isn't (and disable after- 
                  wards). Also added 'SmartAutoOn' flag (default's TRUE) to
                  control this (as well as for 'SmartRFile' & 'SmartWFile'
     10/30/01 e-c Detect Pacific Digital ADMA controller.
     10/31/01 sso Change 'cache' to modify both read & write cache settings.
 124 10/05/01 j-m Seek error was being reported as an aborted command. 
     10/09/01 sso 'Unplug' will show '?' for UDMAMODE.
     10/19/01 dvo Xlate will use another word for physical cylinders >16 bits.
 123 09/20/01 dvo Fix DcSet with int's on.
     09/28/01 dvo Added RDMAQ & WDMAQ, Tag.
     10/01/01 dvo Added NoOp, NextTag and LastTag.
     10/02/01 dvo Added support for 48-bit read & write log.
 122 09/12/01 k-h WrBfr fixed.
 121 08/31/01 dvo Add ATA literal constants for extended commands (ATAPI-6)
     08/31/01 dvo Fix NativeA to report correct number of heads.
                  Set CYL equal to value from zone table, not from RCYLX.
     08/31/01 dvo Erase screen where 'CAPACITY' is written when it changes.
     08/31/01 a-s RDir correctly sets 'B'.
     09/06/01 a-t Fix Multi so it doesn't interfere with 'B'.
 120 08/16/01 sso Fix incorrect value of LBAs (cap) when it's not the product
                  of CYL * HEADS * SPT.
     08/16/01 n-c Native should be compatible with upcoming >16 bit physical
                  cylinders values, untested, however.
     08/24/01 sso Added SmartRFile (read overlay file via user mode smart 
                  command), SmartWFile (write  overlay file via user mode 
                  smart command), SmartId (get native information via smart
                  command).
     08/27/01 t-t Don't report scan results if reportlvl is not 2.
     08/28/01 sko Report the correct D & DUT in error reporting (usually 
                  correct, but may be incorrect with direct task file writes).
     08/29/01 dvo Added Centurion Talon LE and Invader XL5 family strings and
                  ids.
     08/30/01 dvo Replaced Invader XL5 with Crusader.
 119 07/24/01 l-l Fix native hang when running in Windows (don't issue int
                  off command & don't parse zone table if it's all zeroes).
     07/25/01 sso If ECC is set to 4, select 4 byte ECC mode (rFeat = 0xBB),
                  otherwise, set vendor unique ECC mode (rFeat = 0x44).
     07/26/01 dvo Added bit more comments to the literal values.
     07/27/01 sso Added a checksum offset variable (chksumofs), to set the
                  location where the chksum puts the checksum byte (default
                  is 3).
     08/02/01 dvo Added device configuration commands: DCFrLk, DCId, DCRestore
                  and DCSet.
     08/02/01 dvo Added IsDir, set after RDir is successful.
     08/02/01 dvo Fix SecFrLk (was issueing SecErPrep).
     08/13/01 m-l Scan VClk in SmartOlImm.
     08/15/01 c-s rDir expanded from 64 to 125 entries (1 sector to 2 sectors)
 118 07/12/01 a-t Fix SmartOL (Enable/disable values placed in RSecN)
     07/12/01 dvo Add 48 bit lba & 16 bit sector count support. Add b48Mode
                  to enable this.
     07/20/01 dvo Turn int's off in Native command.
 117 06/04/01 dvo Update RCmd on screen after an RCMD command.
     06/04/01 dvo Fix CheckPowerMode to support future CmdLog.
     06/04/01 dvo Fix RCMD, RB & WB in TrexWin.exe.
     06/14/01 dvo Added Centurion Talon XL2. Added ATA_NOP, ATA_DEV_RESET,
                  ATA_DOWNLOAD, ATA_SERVICE, ATA_RNMA & ATA_SET_MAX,
                  ATA_RDMA_Q, ATA_WDMA_Q constants.
     06/18/01 bll ITR: 10146. Fix Native (repeated called would get an out of 
                  memory failure in GetZoneTbl (Tbl)).
     06/19/01 dvo Add xlate.
     06/19/01 j-m Enable Ctrl-X check during waitb/waiti etc.
     06/19/01 dvo Add reset before ID when scanning for drives.
     06/20/01 pjg Add NativeA, just does a native command.
     06/20/01 dvo Added RevXlate.
 116 05/15/01 dvo Added "IFlag" which is TRUE if an interrupt hit. Use only
                  after "RCMD" since "CMD" will wait for the interrupt and
                  clear IFlag.
     05/18/01 dvo Native will return UK_ERROR is Family ID byte is 0
     05/18/01 lsh All WaitNotBusy (W, R etc) with interrupts disabled will
                  poll RSTAT instead of RASTAT, to clear pending interrupt.
     05/21/01 rsh Fixed IncX & DecX in native mode.
     05/24/01 e-c Default value of ER bit incorrectly set to 0. Now, it's 1.
     05/30/01 cbo WaitB will not wait for an interrupt if int on. WaitI will
                  either wait for an interrupt, if int on; or wait for not 
                  busy, if int off.
 115 04/30/01 cjg Display CHS errors properly when C >= 65536.
     04/30/01 dvo Update task files before error handler called (may 
                  terminate, with task files not refreshed).
     05/01/01 sso Update screen after scan.
     05/02/01 dvo Added ID_<Family> constants.
     05/04/01 t-h Fix SmartWrLog (didn't put S into RSecN).
     05/08/01 dvo Added SmartRpt to display smart attributes, thresholds &
                  warranty info.
 114 04/18/01 dvo Added Centurion_Talon, Centurion XL2, and Centurion Protege.
     04/20/01 sso Added CapacityStr, FamilyStr, FWStr, FWMinorStr, ModelStr
                  and SNStr.
     04/23/01 clj WaitB, WaitSC & WaitI now allows an optional timeout 
                  parameter. Defaults to current Timeout value.
     04/24/01 j-m Write PIO sometimes gets DRq timeouts, added wait for not
                  busy before wait for DRq.
     04/24/01 sso Inadvertantly issueing UDMAMODE during an ID command.
 113 04/12/01 dvo Change RDMA/WDMA to always create a page table equal to the
                  block count (vs buffer size).
 112 03/19/01 dvo WFile, TSetKey & TShowKey fixed.
     03/21/01 sso DID command will always issue an Id
     03/22/01 j-m Fix SmartRdLog - CHS value would have been auto-translated
                  to an LBA address if C >= 65536.
     03/22/01 dvo Added HPA commands: RdMaxAddr, SetMax, SetMaxFrLk, 
                  SetMaxLock, SetMaxPass & SetMaxUnlock
     03/27/01 dvo Changed screen replace "DMAMODE" with "UDMAMode". Each 
                  variable still acts the same (DMAMODE manipulates the
                  motherboard's DMA controller, UDMAMODE issues a set feature
                  command to the drive).
     04/04/01 e-c WDMA random hangs, possibly due to unitialized ptr.      
 111 03/09/01 dvo Added "ChkFile <Id>" - checks an overlay via native cmd
                  RSecC = <Id>; RSecN = 0; RCylX = 0xE001; Cmd 0xE0
     03/09/01 j-m Fix RM & WM with int on, only 1 IRq shall be asserted.
     03/12/01 j-m Fix IRq timeout problem.
 110 02/16/01 dvo Added WINBUILD support.
     02/19/01 ssy Added WaitForCaptive (defaults to ON) for SmartOlImm <#>
                  when bit 7 of <#> is set.
     02/20/01 sso Fix HReset. Fix Reset for slave drives.
     02/21/01 dvo Fix "delete" & "scan" of drives
     02/26/01 ayl Allow "CYL", "Heads" & "SPT" to be set by user
     02/27/01 sko A failed "multi" cmd will keep prior multi setting
     03/06/01 dvo Added "download" microcode (ata cmd 0x92)
     03/06/01 dvo Don't truncate B to 8 bits
 109 02/15/01 rhc Added ResetDelay ... the delay time, in 10us units, to 
                  wait after a reset. This is to accomodate older drives.
 108 02/05/01 gby Override family ID strings via cmd line option -T[<file>]
                  Defaults to FAMILY.TXT.
 107 01/25/01 dvo Don't write rSecN, rCylL or rCylH for Idle, IdleT,
                  Stdby, StdbyT, Sleep, Diag and Flush.
 106 01/24/01 dvo Begin implementation of > 28 bit LBA addressing
 105 01/24/01 sso SecSiz will round up
 104 12/05/00 dvo Fix DMA cmds when changinging the baseport.
     12/05/00 j-w Added Triones PCI controller
     12/05/00 sso Fix FT command.
 103 12/04/00 sso Fix RFile <expression> followed by a comment.
 102 11/17/00 sso CMD will loose the SDH original contents, now, don't
                  select the device.
     11/22/00 sso RFile will call a native command (rcylx 0xE001, cmd 0xE0)
                  and report errors, if any before reading the file.
     11/28/00 scy Sk in native mode will use CHS addressing.
     11/29/00 scy Incc/Inch/Incs/Decc/Dech/Decs works for user or native
                  mode.
 101 10/08/00 dvo Fix bug in CRC fix - tested & works for RDMA (block box
                  injection tester).
              sso Fixed SmartOL = <expression>
              sso Fixed SmartAutoSave = <expression> (Unclear is RSecC =
                  0xF1 or 0xF8. ATA spec is 0xF1, TRM's is 0xF8).
     11/09/00 sso DId would not put data in bfr if Id preceeded it.
              sso Added FWMinor
              dvo Set initial CHS to 1008, 16, 63.
     11/10/00 sso Scan [<Baseport>]. If <Baseport> is not given (or zero),
                  scan all ports.
              dvo Put common code from Native, User and ID into a new 
                  rtAddNewDut
              dvo User will copy ID data into buffer
     11/14/00 dvo Add RDir, RFile & WFile (read directory, read overlay &
                  write overlay)
              dvo Change error report in native mode to always report in 
                  CHS.
              dvo Added ChkSum to create a checksum byte at offset 3.
     11/15/00 sso Added FRTF - shows task files to message window / log file.
 100 11/08/00 sso Added SMART commands. 
              gby Added CRCCount & CRCFix variables.
                  If CRCFix is true (defaults to false), for each UDMA CRC 
                  error, the command will be re-issued only once. If it fails
                  twice, errors will be reported. If retry succeeds, no error
                  message will be displayed. EFlag won't change. CRCCount will
                  always be bumped. Zero will clear it.
              sso Added RdyOff, RdyOn
              sso Added UDMAMode
              dvo Replace DMAMode33 to UDMA33, DMAMode66 to UDMA66 and 
                  DMAMode100 to UDMA100. Removed DMAModeOff AND DMAModeOld
              sso Changed ECC to also issue a set features command
              sso Added HReset
              sso Added SetAMD, SetAML and SetAMH
              sso Added ClrEvt to clear the event log (drive must be in native
                  mode, or an abort cmd will result).
              sso Added ClrDRM to clear the DRM log (drive must be in native
                  mode, or an abort cmd will result).
 ==1.1========================================================================
 001 10/30/00 s-o If Multi, Native or Cmd failed, update task files.
 000 10/27/00 dvo Formal Initial Release
 ==1==========================================================================
 004 10/25/00 s-o Multi will now report errors. Multi limited to 8 bits.
 003 10/24/00 dvo Setting Upd to -1 will prevent screen updates and it will
                  not refresh the display. Useful for enter Native without
                  displaying the native data.
 002 09/06/00 mcv Block count (B) limited to 8 bits.
              mcv Pressing Ctrl-X won't leave drive with DRQ / Busy set -ie 
                  current command will complete (maybe after a timeout).
              dvo Added "Flush" which issues a Flush Cache (E7h) command
 001 09/05/00 dvo Support > 33.8GB drives
 000 09/01/00 dvo Alpha 4 release 
 ==A3=========================================================================
 013 08/31/00 dvo Scan task list in xall (ra, rma, rdmaa, etc)
              dvo Fix ZSPT
              dvo Modify 0x8000 to a define in rtReportATA 
              dvo Added "ReportErr"
 012 08/29/00 dvo Implement TSetLock & TAuthenticate.
 011 08/28/00 dvo Implement TShowKey, TSetKey, TComputeHash.
 010 08/24/00 dvo Implement MSelect / MSense
              dvo Return TRUE or FALSE for continuous, stream & urgent vars
              dvo Clean up DMAMODE on screen
 009 08/22/00 dvo LogSN implemented.
                  Scan will update screen with DUT info
 008 08/22/00 dvo Change Interrupt handlers in DT32 lib
 007 08/21/00 std WWW data kept for each drive.
 006 08/17/00 t?w Added VIA chipset for PCI DMA controller (same as Intel)
 005 08/17/00 dvo Added RFeat, same as RWPre
     08/16/00 dvo Added IsNative, FamilyWord, Piox, delete, unplug, lstdrvs &
                  did.
                  CIDB will look at ReportLvl before reporting
                  Added 'ETC Met' or 'TEM Met' if no error handlers present.
 004 08/15/00 dvo Implemented format track: "FT". User responsible for Bfr.
 003 08/11/00 dvo Each time a baseport, d, or DUT is changed, update the bus
                  master vars.
     08/10/00 dvo Added ScanPCI to scan for PCI devices.
 002 08/09/00 mvi Added pCrntCmdPckt as parameter in GetFamilyId, ID, Reset
 001 08/08/00 dvo ReportLvl = 0 will suppress error msgs, but still set EFlag
 000 08/08/00 dvo Next candidate release 
 ==A3=========================================================================
 008 08/04/00 dvo Added lexResolveStar
                  Setting DRQTO/MDRQTO to 0 changes it to default
 007 08/04/00 dvo Native updates ABAMODE on screen
                  Don't issue a set multi cmd each time a drive is selected.
 006 08/04/00 dvo WaitXXX won't update LastCmdStr
              wad ZMINC & ZMAXC will be relative
              wad Recal in native mode will set CHS to 0, 0, 1
              dvo Update screen correctly in user / native mode
              dvo Keep drv's Cylinder, Heads & SPT locally, so switching
                  between user & native will work faster.
              dvo Added SwitchDrive to easily update when DUT, BasePort or D
                  changes
              dvo Eliminate reduntant flag: bNativeScrn, opposite of 
                  bUserModeScrn
              dvo Write screen won't enable / disable ints, now in SwitchDrive
                  and won't change LBA / CHS addresses
 005 08/03/00 dvo Fixed rtAllDrive when Ctrl-X is pressed
                  Improved timeout error reporting
 004
 003
 002 07/25/00 mvi Change msgPrintCondLF to rtPrintCondLF
                  Updated error report for LBA mode
                  Add message to end of rtAllDrive
 001 07/24/00 dvo Fixed WCache var, fixed rtAllDrive ... rva wasn't working
                  Our drives don't update RSecC for errors (not x-ferring 
                  data).
 000 07/24/00 dvo Next candidate release 
 ==A2=========================================================================
 000 06/30/00 dvo Save as A0.005, Alpha Release 1
 ==A1=========================================================================

 005 06/29/00 dvo Removed funny char before log file name.
 004 06/28/00 mvi updates for alpha1 release (per Wayne's input)
 003 06/27/00 mvi updates for alpha1 release
 002 06/09/00 pjg touch up marias code for initial screen test
 001 06/01/00 pjg new numbering scheme - revise application version spec

 ==A0=========================================================================
