*  $Header:   N:\archs\upt2x\cfgcntr\cfgcntr.txv   1.4   01 Aug 1996 19:20:14   JERRYM  $
*  $Workfile:   CFGCNTR.TXT  $
                                                                       page 1


                  #====================================#
                  %                                    %
                  %  LOGISTICS CENTER TEST EXECUTABLE  %
                  %                                    %
                  #====================================#





                        RELEASE VERSION:  CC10513
                          DATE:  August 1, 1996
                                 BY: JGM





                            TABLE OF CONTENTS
                            =================


         1.0  RELEASE FILES

         2.0  COMMAND LINES

         3.0  CAUTIONS, WARNINGS and SPECIAL NOTES

         4.0  GLOBAL PARMS

         5.0  SCRIPTS in PRM FILE

         6.0  COMMAND LINE FLAGS and !VARIABLES

         6.1  COMMAND LINE FLAGS
         6.2  ENVIRONMENT VARIABLE
         6.3  !VARIABLES, COMMAND LINE USAGE
         6.4  !VARIABLES CREATED BY PROGRAM

         7.0  FUNCTIONS

         7.1  SCRIPT CONTROL
         7.2  AT STARTUP
         7.3  AT ONLY
         7.4  SCSI STARTUP
         7.5  SCSI ONLY
         7.6  DRIVE INIT & CONTROL
         7.7  CONFIGURATION COMMANDS
         7.8  TESTS
         7.9  DPA

                                                                      page 2



1.0  RELEASE FILES:
===================

   FileName____   Rev_  Description__________________________________________
   CFGCNTR.EXE    1.05  Test executable
   CFGCNTR.PRM    1.1_  Parameter file, also contains scripts.
   EXITCODE.ERR         Exit code table with exit messages.
   GENERAL.ERR          General drive error codes and messages. Used when
                        the drive specific table is not specified. Probably
                        wrong for all products, needed to start CFGCNTR.

   CCEUR.PRM            Europa product specific parameter file.
   CCFIR.PRM            Fireball product specific parameter file.
   CCTRB.PRM            Trailblazer product specific parameter file.
   CCVTX.PRM            Vortex product specific parameter file.
   CCSIR.PRM            Sirocco product specific parameter file.
   CCTMP.PRM            Tempest product specific parameter file.
   CCSAG.PRM            Saghuaro product specific parameter file.
   CCSTR.PRM            Stratus product specific parameter file.(NOT INCLUDED)

   EUROPA.ERR           Europa drive error codes and messages.
   FBALL.ERR            Fireball drive error codes and messages.
   TRB.ERR              Trailblazer drive error codes and messages.
   VORTEX.ERR           Vortex drive error codes and messages.
   SIR.ERR              Sirocco drive error codes and messages.
   TMP.ERR              Tempest drive error codes and messages.
   SAG.ERR              Saghuaro drive error codes and messages.
   STRATUS.ERR          Stratus drive error codes and messages.


   UseFileName    Product_CPG_Files________________________________________
   DW.CPG         Tempest, Saghuaro, Stratus ... AT and SCSI CPG's.
                  Starts with Release CC105102.
   EURA.CPG       Europa AT
   FBALLA.CPG     Fireball AT
   FBALLS.CPG     Fireball SCSI
   TRBA.CPG       Trailblazer AT
   TRBS.CPG       Trailblazer SCSI
   SIRA.CPG       Sirroco AT
   SIRS.CPG       Sirroco SCSI
   VORTEXA.CPG    Vortex AT
   VORTEXS.CPG    Vortex SCSI

  *************************************************************************
  * CAUTION:  You MUST specify at least FILES=10 in your CONFIG.SYS file. *
  *************************************************************************


                                                                      page 3



2.0  COMMAND LINES:
===================

   For a list of commands, parameters, variables, flags  >CFGCNTR HELP


3.0  CAUTIONS, WARNINGS and SPECIAL NOTES:
==========================================

 1) In your CONFIG.SYS file you MUST specify at least FILES=10 wheather
    running from FLOPPY or hard disk.

 2) Specify AT Primary/Secondary Port, SEE CreateATInterface under AT STARTUP.

 3) Specify AT Master/Slave, See CreateATInterface under AT STARTUP.

 4) Specify SCSI Target ID, See SetConnectionSCSI under SCSI STARTUP.

 5) Any PRM or SCR file variable may be predefined and preset from the DOS
    command line or with an Environment Variable.
    Command Line EXAMPLE:  >cfgcntr !AtAdd=0x0710
    Environment  EXAMPLE:  >SET ATADD=0x0170

 6) SEE UPT.HLP for parameters and command line arguments associated with
    specific TEST commands.


4.0  GLOBAL PARAMETERS:
=======================

  @(ChamberID           )= 0;          INTEGER     Undefined  Optional
  @(SCRVER              )= ;           STRING      Undefined  Optional
  @(PRMVER              )= 1.0;        STRING      Defined    Optional
  @(TESTID              )= ;           STRING      Defined    Optional
  @(skDelay             )= 0;          INTEGER     Undefined  Optional
  @(seekVIKING          )= 0;          INTEGER     Undefined  Optional
  @(UseDriveMeasTime    )= FALSE;      FLAG        Defined    Optional
  @(OVERHEAD_SEEKS      )= 1000;       INTEGER     Defined    Optional
  @(MODEL               )= ;           MODEL       Defined
  @(FormatFile          )= ;           FileName    Undefined  Optional
  @(SCAN_PRINTGRAPH     )= 0;          INTEGER     Defined    Optional
  @(SCAN_PRINTDEFECT    )= 0;          INTEGER     Defined    Optional
  @(SCAN_SUMMARYMODE    )= 1;          INTEGER     Undefined  Optional
  @(SCAN_MXHARDHEAD     )= 500;        INTEGER     Defined
  @(SCAN_MXHARDCYL      )= 0;          INTEGER     Defined
  @(SCAN_MXHARD         )= 1000;       INTEGER     Defined
  @(SCAN_MXTIME         )= 60000;      LONG        Defined
  @(SCAN_SEQXFERSIZE    )= 256;        INTEGER     Undefined  Optional
  @(MaxPrintMiscomp     )= 10;         INTEGER     Defined    Optional
  @(RNDOPS              )= ;           STRING      Defined
  @(RNDOPS_SEED         )= 99;         INTEGER     Defined    Optional
  @(RNDXFERSIZE         )= 4 256 ;     INTARRAY    Defined
  @(TOTALXFER_BE10_WRT  )= 0.00005;    FLOAT       Defined
  @(TOTALXFER_BE10_RD   )= 0.10000;    FLOAT       Defined
  @(DUMP_Recov          )= FALSE;      FLAG        Undefined  Optional
  @(N_Reass             )= 4;          INTEGER     Undefined  Optional
                                                                      page 4



  @(N_BadAD             )= 5;          INTEGER     Undefined  Optional
  @(N_Hware             )= 10;         INTEGER     Undefined  Optional
  @(N_Recov             )= 10;         INTEGER     Undefined  Optional
  @(NRML_ERR_REC        )= 1;          INTEGER     Undefined  Optional
  @(LOG_ChangeHeadRecov )= TRUE;       FLAG        Defined    Optional
  @(LOG_Allow_Reassigns )= FALSE;      FLAG        Defined    Optional
  @(LOG_Rewrites        )= 3;          INTEGER     Defined
  @(LOG_RetryRead       )= 3;          INTEGER     Defined
  @(LOG_RetryWrite      )= 3;          INTEGER     Defined
  @(DEF_MaxPrtPerHead   )= 400;        INTEGER     Defined    Optional
  @(DEF_ShortFormat     )= FALSE;      FLAG        Undefined  Optional
  @(DEF_ShowZone        )= FALSE;      FLAG        Undefined  Optional
  @(DEF_NOMERGE         )= 0;          INTEGER     Undefined  Optional
  @(DEF_POSVAR          )= 4;          INTEGER     Undefined  Optional
  @(DEF_SOFTTOHARD      )= 2;          INTEGER     Undefined  Optional
  @(WedgeHDRBytes       )= 0;          INTEGER     Undefined  Optional
  @(WedgePeriod         )= 0.00000;    FLOAT       Undefined  Optional
  @(MaxBPW              )= 0;          INTEGER     Undefined  Optional
  @(EXITCODES           )= EXITCODE.ERR; STRING    Defined    Optional
  @(VarFile             )= GENERAL.ERR;  STRING    Defined    Optional
  @(DriveErrorFile      )= GENERAL.ERR;  STRING    Defined    Optional
  @(DISPLAY_RAW_DATA    )= FALSE;      FLAG        Undefined  Optional
  @(No_Recal            )= FALSE;      FLAG        Undefined  Optional
  @(USE_SN_PERMANENT    )= TRUE;       FLAG        Defined    Optional
  @(CpgFile             )= DW.CPG;     STRING      Defined


                                                                      page 5



5.0  SCRIPTS in PRM FILE:
=========================

   Detect_SCSI    Sets up SCSI interface and finds drive.  ASPI interface is
                  the default.  For HSC host adapter put !HSC on the DOS
                  command line.  Used by StartUp script only.  See AT STARTUP
                  COMMANDS for more details.

                  EXAMPLE:  cfgcntr !HSC ... ...

   Detect_AT      Sets up AT interface and finds drive.  For a slave drive
                  put !AtSlave on DOS command line.  If the IDE interface is
                  not on the primary port use the DOS environment variable
                  TF_ADDRESS or DOS command line variables !AtAdd, !AtIRQ,
                  !AtDMA.  Used only by StartUp script.  See SCSI STARTUP
                  COMMANDS for more detail.

                  EXAMPLES:
                     cfgcntr !AT !AtSlave !AtAdd=0x170 !AtIRQ=11 !AtDMA=4 ...
                        or
                     SET TF_ADDRESS=0x170,11,4
                     cfgcntr !AT ... ...

   StartUp        Automatically executed on program startup.  Initializes
                  program, parameter default settings, finds and attaches to
                  drive.  Uses Detect_AT and Detect_SCSI scripts.

   SetOldConfig   Writes configuration from .CCP, .MOD and .ATA files in
                  .CPG file.  Used by SetConfig script.

   SetConfig      Script: Writes config & mode pages and AT config from .CCP,
                  .MOD & .ATA files in .CPG file or from .LCP file.  Uses
                  SetOldConfig script.

   CheckConfig    Script: Checks config & mode pages and AT config from .CCP,
                  .MOD & .ATA files in .CPG file.

   LearnIt        Script: Reads config pages & writes .CCP file, reads AT
                  config & writes .ATA file, reads mode pages & mode page
                  header & writes .MOD file.  Use CFGBIND to combine into
                  .CPG file.

   PutCP10        Writes CP10 from .BIN file in .CPG file.  Used in DWUpdate.

   PutCP16        Writes CP16 from .BIN file in .CPG file.  Used in DWUpdate.

   PutCP18        Writes CP18 from .BIN file in .CPG file.  Used in DWUpdate.

   RAMware        Loads Diskware to drive RAM only.  Use before DWUpdate
                  only if needed.

   DWUpdate       Script: Updates diskware and CP10, CP16, CP18 from .BIN
                  files in .CPG file.
                  * TRB does not write CP10.
                  * FBALL is only one to write CP16.
                                                                      page 6



   Capacity       Command: Changes drive capacity, uses .CCP file for CP7,
                  CP11 and for capacity in mode page header.

   OneLScan       Logical Scan script with Read only and short scan options.
                  !MiniLScan=90000 on the command line scans from LBA 0 to
                  90000.  !RDOnly on the command line will do a read scan
                  with no writes.  See the parameter file for this script.

   AutoArm        Scripts to set different aspects of drive behavior.  See
   DisableOFFc    The parameter file for specific settings for each script.
   EnableOFFc
   CorrectionON
   CorrectionMedium
   CorrectionLOW
   CorrectionOff
   EnableAutoTransfer
   WriteOnArrival
   ReadOnArrival
   NOFILE

   Sun            Sets special SUN configuration because of SUN special S/N.

   Generic        Returns SUN configured drive to generic.


6.0  COMMAND LINE FLAGS and !VARIABLES:
=======================================


6.1  COMMAND LINE FLAGS:
------------------------

   -strict     Strict Parameter checking
   -normal     Normal Operation
   -step       Step thru procedures
   -ClrFlags   Clear NoScreen, Quiet, Debug, V flags
   -NoScreen   Normal screen output off
   -quiet      Minimize output
   -debug      Debug mode output ON
   -v          Verbose mode output to screen

   Example Use:  cfgcntr -v ... ...    ;  turns on verbose mode.


6.2  ENVIRONMENT VARIABLE:
--------------------------

  SET TF_ADDRESS=0x0170,11,5  sets AT port parameters, typical alternate

  SET PCS1250=1               tells the program that you are using a PCS
                              power supply for drive power.

  SET NEW_BLUE=1              tells the program you are using a PCS blue
                              target and use the PCS led ports.

  SET PC_TYPE=ITU             tells the program it is running in an ITU so
                              pass/fail results are written in DRVSTST.TXT
                              and power control is through a serial port.

  SET variablename=value      will set that !variable to 'value' at program
                              startup.  Setting the !variable on the command
                              line or in the parameter file or your script
                              file will over ride the environment setting.

                                                                      page 7



6.3 !VARIABLES, COMMAND LINE USAGE:
-----------------------------------

   !AT                  specifies an AT drive is being tested.
   !AtAdd=0x0170        Port base address.
   !AtIRQ=11            Interrupt number.
   !AtDMA=4             DMA channel number.
   !AtSlave             Target is a slave drive.

   !HSC                 Specifies a HSC SCSI host adapter is being used.
                        APSI SCSI host adapter is the default.
   !SCSIID=4            Set SCSI ID, do not.

   !SSMode=4            Sets StartStop test to run in mode 4
   !QuickStop           Sets StartStop test to issue a Stop command, wait
                        3 seconds then turn power off to shorten spin down
                        time on power off/on testing.

   !NoHist              prevents the test history record from being written
                        to the drive.


6.4  !VARIABLES CREATED BY PROGRAM:
-----------------------------------

   !TRB        These product specific variables are defined by the D:name
   !FBALL      operator in the @(MODEL) strings for that product.
   !EURO
   !VORTEX
   !SIR
   !TEMP
   !SAG

   !SCSI       This is created when a SCSI drive is found.
   !AT         is usually created when an AT drive is found except we are
               not using auto detect so we specify it on the command line.
               See Section 6.3 above.

   !MAXPBA        These variables are created by the program to use in script
   !CYLS          control as needed.  Most names are self descriptive.
   !SNVALID
   !NEEDRAMWARE
   !MAXLBA
   !FAMILY
   !SYSTEMZONE
   !ZONES
   !SYSTEMHEADS
   !HEADS
   !WEDGES
   !SUPERSTATUS
   !XTARGID
   !MATCH         1 = an interface to drive match was found.
   !FIRSTRC
   !RC
   !TARGID
                                                                      page 8



7.0  FUNCTIONS:
===============


7.1  SCRIPT CONTROL:
--------------------

   #ifdef var     execute following if 'var' exists.
   #ifndef var    execute following if 'var' does not exist.
   #if flag       execute following if flag is true.
   #else          execute if flag is false or var doesnt exist.
   #endif         end of if

   !yourvar=26    Create and Set 'yourvar' to '26',
                  All variables are 32 bit signed integers.  See DumpVars.
   =              Assignment with variable
   ( )            Groups operations
   + - * / %      Integer Variable Operators
   = < > <> <= >= Boolean Operators, Equal LT GT NOTEQ LTE GTE
   ~ & | ^        Bitwist Operators, NOT AND OR XOR

   !cnt=0         Initialize loop counter, loop counter is a variable
   #begin         Begin Loop
      # doit      Command[s] to execute in loop
      !cnt=cnt+1  Increment counter
   #while cnt<6   End Loop, ends after 6 loops

   #script name   starts a script that goes to #ends.  Execute the script by
   #ends          using 'name' as a command.

   ;              Comment: Comments can be on a line by itself or at the end
                           of some script or parameter lines.

                  Comments can NOT follow: #script, #cmd, some # ..., and
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  most @(..)=.

                  #cmd 'comands'  and  most # 'commands' that accept arguments
                           can not be commented.
                  @(...)= parms that have multiple values, 0,900,1800,...
                           can not be commented.  These comments take runtime
                           RAM space.

   Tests          Command: Lists available embeded scripts and test commands.

   Help           Command: Lists scripts, tests and parameters.

   DumpVars       Command: Lists variables and current values in dec and hex.
                  # DumpVars    ; dumps all current variables & their values.
                  # DumpVars MyVar  ; dumps only current value in 'MyVar'.

 DumpVars [arg]   arg = VarName dumps VarName, no arg dumps all variables
 TESTS            Dumps a list of tests.
 HELP             Dumps a list of flags, tests and their parameters.
 Screen [arg]     arg = [], [ON], [OFF], [Toggle]
   RETURNS:    !SCREENSTAT = 1 for screen out on, 0 for screen out off.
                                                                      page 9



 UserTag arg1 arg2   creates a "@(arg1$)= arg2$ nn" line in the TEST.OUT
                     file to use as a secondary key for data collection.
                     The nn counter increments 1 for each time UserTag is
                     executed.

 SetFileName      ***
 Pause            Pause execution until any key is pressed.
 Delay [arg]      arg = seconds to delay.
 Time

 DumpDriveHist          dump drive history
 HistoryRecord [arg]    arg = dump ...  dump process test history.
  @(VIKING              )= 0;          INTEGER     Undefined  Optional
  @(NUMSECTORS          )= 10;         INTEGER     Undefined  Optional
  @(SECTOR              )= 5;          INTEGER     Undefined  Optional
  @(CYL                 )= -1;         INTEGER     Undefined  Optional
   HistoryRecord;Dump    on command line Dumps test history to TEST.OUT file.
   # HistoryRecord Dump  in script dumps test history to TEST.OUT file.

 HeaderUpdate     Update header data in TEST.OUT file.
 BufferFree       Free Main buffers used for drive I/O.
 BufferSetup      Buffer allocation control, Keeps nnK free on far heap.
  @(FarKeepFree)=40   Keep 40K free    INTEGER     Undefined  Optional

 ZoneToLBA
 DumpDIs
 ErrorLogClean
 ErrorLogDump     Dump test error log.
  @(SECONDARY_KEY)= 1_word$            INTEGER     Undefined  Optional
      This parameter allows an auto secondary key to keep track of each
      command execution.


7.2  AT STARTUP:
----------------

 InterrogateAT [arg]    arg = any arg gets CP 13
 CreateATDRIVE
 FindConnectionAT [arg] arg = any arg inhibits doing a reset.
  @(FindTime            )= 40;         INTEGER     Undefined  Optional

   PRM file script:              Command Line Usage   Description
   ----------------------------  -------------------  ----------------
   #cmd FindConnectionAt
      #ifdef AtTime
         @(FindTime)=AtTime      !AtTime=50           ....
      #endif
   # FindConnectionAt
                                                                      page 10



 CreateAtInterface   arg = no reset
  @(DMAChannel          )= 5;          INTEGER     Undefined  Optional
  @(SlaveDrive          )= 0;          INTEGER     Undefined  Optional
  @(Interrupt           )= 14;         INTEGER     Undefined  Optional
  @(Address             )= 0x01F0;     INTEGER     Undefined  Optional
     or
  Set environment variable TF_ADDRESS={port addr}, {IRQ}, {DMA Channel}
  SET TF_ADDRESS=0x0170,11,5           typical alternate

  NOTE: Parameters override Enviroment Variables.

   PRM file script:              Command Line Usage   Description
   ----------------------------  -------------------  -----------------
   #cmd CreateATinterface
      #ifdef AtAdd
         @(Address)=AtAdd        !AtAdd=0x0170        Port base address
      #endif
      #ifdef AtIRQ
         @(Interrupt)=AtIRQ      !AtIRQ=11            Interrupt number
      #endif
      #ifdef AtDMA
         @(DMAChannel)=AtDMA     !AtDMA=4             DMA channel number
      #endif
      #ifdef AtSlave
         @(SlaveDrive)=1         !AtSlave             Target is a slave drive
      #endif
   # CreateATinterface


7.3  AT ONLY:
-------------
 AT_RetryMode
 AT_MultipleMode
 AT_DMAmode
 AT_LBAmode
 ATconfigModify
  @(Word     )=offset |word &word      MODIFIER    Undefined  Optional
  @(Byte     )=offset |byte &byte      MODIFIER    Undefined  Optional
  @(WritePerm)=1=to disk 0=to RAM      FLAG        Undefined
      There can be multiple @(word) and/or @(byte) to modify several bytes
      with one execution.
   EXAMPLE: later


                                                                      page 11



7.4  SCSI STARTUP:
------------------
 CreateASPIInterface
 CreateHSCInterface

 SetConnectionSCSI   Used to set a specific SCSI ID.
  @(TargId)=6 sets SCSI Id to 6        INTEGER     Undefined  Optional

   PRM file script:              Command Line Usage   Description
   ----------------------------  -------------------  ------------------
   #cmd SetConnectionSCSI
      #ifdef SCSIID
         @(TargId)=SCSIID        !SCSIID=4            Set SCSI ID, do not
      #endif                                          scan ID's
   # SetConnectionSCSI


 FindConnectionSCSI     Looks for a SCSI drive connected.
  @(TimeoutMsec      )= 500;           LONG        Undefined  Optional
  @(DelayBeforeTrying)= 5;             INTEGER     Undefined  Optional
   NOTE: SCSI ID's are scanned from 7 down, the first ID to respond is
         assumed to be the drive under test.
         If this is not the case you must know the ID ahead of time and
         set the ID.

 CreateSCSIdrive        creates the SCSI drive object for the program.
 InterrogateSCSI [arg]  arg = any arg gets model from Config Page 13.
                              Default gets model from Inquiry Command.
  @(DOTUR       )=TRUE                 FLAG        Undefined  Optional
  @(WaitForReady)=30 seconds           INTEGER     Undefined  Optional


7.5  SCSI ONLY:
---------------
 LogSelect
 ScsiASync
 ScsiSync
 ScsiStop
 ScsiStart
 ModePageModify      Modify Individual bytes in a Mode Page
  @(PCF )=0                            INTEGER     Undefined  Optional
  @(Save)=FALSE or TRUE                FLAG        Undefined  Optional
  @(Byte)=offset |byte &byte           MODIFIER    Undefined
  @(Page)=page number                  INTEGER     Undefined


7.6  DRIVE INIT & CONTROL:
--------------------------

   NOTE:  See UPT.HLP for more information on these commands.
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 InitDefect          Initialize defect lists
  @(DEF_MAXQUIT)=max # of defects      INTEGER    Defined
                                                                      page 12



 ZONEFROMPAGE10      Sets up program zone table from CP 10.
  @(TRAILINGBYTES)=5 product specific  INTEGER     Undefined  Optional
  @(ZONESIZE     )=0    "      "       INTEGER     Undefined  Optional

 SuperOff            super mode off.
 SuperOn [arg]       arg = any arg ignores any error.  Super mode on.
 ReFormatInLine      TEST
 SetIoMode           TEST
 GetIoMode           TEST
 SRecal              TEST
 CylToPBA            TEST
 ZoneToCyls          TEST
 TUR                 TEST
 MicroStep           TEST
 RdCyl               TEST
 erasetk             TEST
 seek                TEST
 StopDrive           issues stop drive command.
 SpinUp              issues drive spinup command.
 Reset               sends reset command.
 ModelMatch          checks family code and serial number against MODEL strings
 MicroCmds           MicroMemory access
  @(SingleStep          )= FALSE;      FLAG        Undefined  Optional
  @(C                   )= ;           STRING_LIST Undefined  Optional

 RestoreDriveControlMode TEST
 SaveDriveControlMode   TEST
 DumpDriveControlMode   TEST
 SetDriveControlMode    TEST
  @(TransferBlk         )= TRUE;       FLAG        Undefined  Optional
  @(PostError           )= TRUE;       FLAG        Undefined  Optional
  @(StopOnError         )= TRUE;       FLAG        Undefined  Optional
  @(WrRetries           )= 8;          INTEGER     Undefined  Optional
  @(Save                )= FALSE;      FLAG        Undefined  Optional
  @(AWRE                )= FALSE;      FLAG        Undefined  Optional
  @(ARRE                )= FALSE;      FLAG        Undefined  Optional
  @(WriteCaching        )= TRUE;       FLAG        Undefined  Optional
  @(ReadCaching         )= TRUE;       FLAG        Undefined  Optional
  @(ECC                 )= TRUE;       FLAG        Undefined  Optional
  @(ECCSpan             )= 16;         INTEGER     Undefined  Optional
  @(Retries             )= 16;         INTEGER     Undefined  Optional

 DiskWareVerCk       TEST
  @(UPDBuf              )= 96;         INTEGER     Undefined  Optional

 DiskWare            TEST
  @(FLASH               )= FALSE;      FLAG        Undefined  Optional
  @(UPDBuf              )= 96;         INTEGER     Undefined  Optional
  @(Tries               )= 1;          INTEGER     Undefined  Optional
  @(Sscan               )= FALSE;      FLAG        Undefined  Optional
  @(Quiet               )= FALSE;      FLAG        Undefined  Optional
  @(Permanent           )= FALSE;      FLAG        Undefined  Optional
  @(File                )= ;           FileName    Undefined  Optional
                                                                      page 13



 Power               TEST
 ConfigPageDump      TEST
 WriteConfigStrings  TEST
 ConfigPageModify    TEST
  @(Word                )= ;           MODIFIER    Undefined  Optional
  @(Byte                )= ;           MODIFIER    Undefined  Optional
  @(Size                )= 0;          INTEGER     Undefined  Optional
  @(Name                )= no_name;    STRING      Undefined  Optional
  @(Page                )= 0;          INTEGER     Undefined
  @(ReadPerm            )= FALSE;      FLAG        Undefined
  @(WritePerm           )= FALSE;      FLAG        Undefined

 ConfigPageLoad      TEST
  @(File                )= ;           FileName    Undefined  Optional
  @(PERMANENT           )= FALSE;      FLAG        Undefined
  @(Name                )= no_name;    STRING      Undefined  Optional
  @(Page                )= 0;          INTEGER     Undefined




7.7  CONFIGURATION:
-------------------
 ActivityCheck       Checks FW versions against activity list.  ; Comments
  @(act                 )= ;           STRING_LIST Undefined  Optional

   EXAMPLE: @(act)=A03.0G3F 0x00000007    ; comments

   RETURNS: !ActDiff          = CPGVerAct ^ DRVVerAct
            !ActFileOverDrv   = (ActDiff ^ DRVVerAct) & ActDiff
            !ActStatus        = 0 = Both Versions Different & in list
                                1 = Both Versions Same & in list
                                2 = DrvVer NOT in list
                                4 = UPDVer NOT in list
            ActDiff and ActFileOverDrv return 0 if UPD or drive DW version
            is missing from the activity table.
---
 WRITE_IMAGE         Write an image from a file to drive at specified LBA.
  @(START_LBA)=0  Starting LBA         LONG        Undefined
  @(FILE_NAME)=filename.ext            STRING      Undefined

 WRITE_PATT          Write Pattern from first LBA thru last LBA on drive.
  @(END    )=700  Last LBA             LONG        Undefined
  @(START  )=0    First LBA            LONG        Undefined
  @(PATTERN)=0x00 pattern to 16 bytes  DATA_PATT   Undefined
      Pattern can be up to 16 bytes, specify each byte in order.
---
   These are used in SetConfig, VerifyConfig and LearnIt script.

 LOADATCFG           Loads ATAFlags from ATA file in CPG file
  @(FILE_NAME           )= ;           FileName    Undefined  Optional

 VFYATCFG            Checks ATAFlags from ATA file in CPG file.
  @(FILE_NAME           )= ;           FileName    Undefined  Optional

 LRNATCFG            Read ATAFlags and write 1st 40 bytes to ATA file.
                                                                      page 14



 DISPLAYMODE         Display mode pages
  @(FILE_NAME           )= ;           FileName    Undefined  Optional

 CAPACITY            Change capacity
  @(FILE_NAME           )= ;           FileName    Undefined  Optional

 VERIFYMODE          Read mode pages and compare to MOD file.
  @(FILE_NAME           )= ;           FileName    Undefined  Optional
  @(VERIFY_MOD_PGS      )= ;           INTARRAY    Undefined  Optional

 LOADMODE            Read Mode Pages from MOD file and write them to disk.
  @(FILE_NAME           )= ;           FileName    Undefined  Optional
  @(LOAD_MOD_PGS        )= ;           INTARRAY    Undefined  Optional

 LRNMODE             Read Mode Pages and write them to MOD file.
  @(FILE_NAME           )= MOD_PGS.BIN; STRING     Undefined  Optional
  @(FILE_VER            )= 0;          INTEGER     Undefined  Optional

 VERIFYCONFIG        Read Config pages from CCP file and compare to drive.
  @(FILE_NAME           )= ;           FileName    Undefined  Optional
  @(VERIFY_CFG_PGS      )= ;           INTARRAY    Undefined

 LOADCONFIG          Read config pages from CCP file and write them to disk.
  @(FILE_NAME           )= ;           FileName    Undefined  Optional
  @(LOAD_CFG_PGS        )= ;           INTARRAY    Undefined

 LRNCONFIG           Read Config pages from drive and write them to disk.
  @(FILE_NAME           )= CFG_PGS.BIN; STRING     Undefined  Optional
  @(FILE_VER            )= 0;          INTEGER     Undefined  Optional
  @(CFG_PGS             )= ;           INTARRAY    Undefined

 ConfigDrive         Copy the LCP file to the drive with the write buffer
                     command so set the drive configuration.
---
 CheckScrVer arg     arg = SCR file version string. Compares arg to SCR file.
 CheckPrmVer arg     arg = PRM file version string. Compares arg to PRM file.
 CheckExeVer arg     arg = EXE file version string. Compares arg to EXE file.
---
 Print  arg$         arg$ = string to print to screen & TEST.OUT.  ; Comments
 PrintV arg$         arg$ = string to print in verbose mode.       ; Comments
 PrintS arg$         arg$ = string to print to screen only/always. ; Comments
 PrintM arg          arg = [] or [B]oth, [S]creen, [V]erbose.      ; Comments
  @(PLine)=string to print ; Comments  STRING_LIST Undefined  Optional
      PrintM prints multiple lines, one for each PLine string.
      Option specifys to TEST.OUT & Screen, Screen Only/Always, or Verbose Mode.

   EXAMPLE: # PrintS  Hey MAN this is GREAT!  ; or is it
            #cmd PrintM          ; this is my title
               @(PLine)=DW Update and ReConfiguration
               @(PLine)=.                 ; a blank line requires 1 character
               @(PLine)=By ME  for YOU.
            # PrintM b     ; we print 3 lines here
---
                                                                      page 15



 UserYN arg$         arg = prompt string to screen only.  ; Comments

   EXAMPLE: # UserYN Press 'Y' to continue, any other key to exit.  ; comment
   RETURNS: !YNKEY = 1 for 'y' or 'Y', for any other key !YNKEY = 0.
---
 UserKey arg$        arg = prompt string to screen only.  ; Comments

   EXAMPLE: # UserKey Press '1' to loadDW, '2' to load config, '3' for both.
   RETURNS: !KEYIN = the ASCII code of the key pressed.
            REMEMBER: !!!  UPPER & LOWER CASE letters are DIFFERENT  !!!
---
   ***  OBJECT handling functions  ***

   OBJECTS: oldDefList, NormList, CHS[s], LBA[s], CPg#, KPg#, MPg#, ATAFlags
               ! ->N -> !         !       !       !!->K>!     !     !
               DL       NL        CHS     LBA     CP    KP    MP    ATA

            These functions use a static or stick object buffer.
            All these functions ALLOW ';' delimited COMMENTS.

      NOTE: DefList  is a READ ONLY object, it can not be written !!!
            NormList is a READ ONLY object, it can not be written !!!
            MP, mode page, is a SCSI ONLY object !!!
            ATA, ATA Flags, is an AT ONLY object !!!

 FreeObj       releases object buffer space which returns !OBJLEN = 0 on
               success, frees static buffer space, & clears object structure.

 RdObj obj args   READ data from object and write to static buffer.
   obj arg = RDOBJ CHS cylinder head sector #sectors
             RDOBJ LBA lba #lbas
             RDOBJ CP nn   or   KP nn   ; Config page read
             RDOBJ MP nn     ; Mode page, This is a SCSI ONLY object
             RDOBJ DL bytes  ; old customer mode defect list read command,
                                 This is a READ ONLY object
             RDOBJ DL -1     ; new customer mode read defect list command,
                                 This is a READ ONLY object
             RDOBJ DL 0      ; same as NL, This is a READ ONLY object
             RDOBJ NL        ; normalized super mode read def list command,
                                 This is a READ ONLY object
             RDOBJ ATA       ; Read ATA Flags, This is an AT ONLY object

      RdObj releases the current static buffer, Opens a new static buffer of
      the object size + 4 bytes, Reads object into buffer and sets object
      valid, and Returns size of object in bytes in !OBJLEN, 0 = failure

 GetLong offset   Get long at offset from buffer, !OBJDATA = long @ offset
 GetWord offset   Get word at offset from buffer, !OBJDATA = word @ offset
 GetByte offset   Get byte at offset from buffer, !OBJDATA = byte @ offset

 DmpObj offset len [tag$]     Hex dump object from offset for len, lines are
                              @(tag$)= ofst nn nn nn ...  aaaaa... with
                              16 values per line.  offset = buffer offset.
                                                                      page 16



 SeeObj [tag$]    Hex dump all of object. 16 values/line look like
                  @(tag$)= ofst nn nn nn nn nn nn ...  aaaaa...

 PrtObj           Print object info in verbose mode only.  This function is
                  called in RdObj, DmpObj, and See Obj.
          -v  VERBOSE MODE adds more output to TEST.OUT for debugging.

***  THESE WILL BE ADDED LATER  ***
 PutByte offset   Puts low byte in !OBJDATA into buffer @ offset.
 PutWord offset   Puts low word in !OBJDATA into buffer @ offset.
 PutLong offset   Puts !OBJDATA into buffer @ offset.

 WTOBJ            WRITE data in static buffer back to object on drive.
                  Objects are specified in RDOBJ command.
                  CHS, LBA, CP (CfgPg), MP (ModePg), ATA (Flags)
         ObjType, CHS Len, LBA Len, were specified in RDOBJ command
   RETURN:  size of object in bytes in !ObjLen, 0 = failure

   CAUTION:  DefList, DL & NL, are READ ONLY objects, they will NOT be
             written to the drive !!!
***    ***

   OBJECT EXAMPLE USAGE:

      ; Do work
      # RDOBJ CHS -2 0 14 5            ; read raw defect list
      !offset = 0                      ; offset and loop counter
      !increment = 4                   ; data item size
      !thislength = OBJLEN             ; loop termination value
      do
         GETLONG offset                ; !OBJDATA = buff[offset]
         #if OBJDATA & 0x00030000      ; Test for bits set
            !BadList = TRUE            ; List test failed
            !offset = thislength       ; I'm done
         #endif
         !offset = offset + increment  ; word length
      while (offset < thislength)      ; end loop
      ...
      ...
      #if BadList                      ; Did the List test Fail
         DoSomething                   ; Subscript to handle !BadList error
      #endif


7.8  TESTS:      SEE UPT.HLP for more details.
-----------
 perr                TEST     RRO & NRRO
  @(SettleTime          )= 0;          INTEGER     Undefined  Optional
  @(RRO_NRRO_MAX_PERCENT)= 100.00000;  FLOAT       Undefined  Optional
  @(RRO_MAX_PERCENT     )= 7.5000000;  FLOAT       Defined
  @(NRRO_MAX_PERCENT    )= 7.5000000;  FLOAT       Defined
  @(RO_RETRIES          )= 0;          INTEGER     Undefined  Optional
  @(REVS_MEAS           )= 200;        INTEGER     Defined    Optional
  @(CYLS                )= 0 900 1800 2700 3600 4500 5400 -1 ;
                                       INTARRAY    Defined
                                                                      page 17



 ECC                 TEST     Test for ECC correction
  @(MAX_INTERLEAVE      )= 3;          INTEGER     Defined
  @(MAX_CORRECTABLE     )= 2;          INTEGER     Defined
  @(ECC_SPAN            )= 16;         INTEGER     Undefined  Optional
  @(PATTERNS            )= ;           DATA_PATT   Defined
  @(CYLS                )= 5400 ;      INTARRAY    Defined
  @(SAMPLES             )= 5;          INTEGER     Defined

 qSS                 TEST     Quiet Start-Stop test
  @(StopFWcmd           )= FALSE;      FLAG        Undefined  Optional
  @(StopOnFatalError    )= FALSE;      FLAG        Undefined  Optional
  @(DELAY               )= 3;          INTEGER     Undefined  Optional
  @(MAX_READY           )= 18;         INTEGER     Defined
  @(WAIT_STOP_FW        )= 0;          INTEGER     Undefined  Optional
  @(WAIT_STOP           )= 50;         INTEGER     Defined
  @(LOOPS               )= 3;          INTEGER     Defined    Optional
  @(WAIT_STOP_S         )= 0;          INTEGER     Undefined  Optional
  @(WAIT_STOP_P         )= 0;          INTEGER     Undefined  Optional
  @(TIMES_SUPER         )= 1;          INTEGER     Undefined  Optional
  @(TIMES_POWER         )= 1;          INTEGER     Undefined  Optional
  @(MODE                )= 2;          INTEGER     Undefined  Optional

 SS                  TEST     Start-Stop test
  @(StopFWcmd           )= FALSE;      FLAG        Undefined  Optional
  @(StopOnFatalError    )= FALSE;      FLAG        Undefined  Optional
  @(DELAY               )= 3;          INTEGER     Undefined  Optional
  @(MAX_READY           )= 18;         INTEGER     Defined
  @(WAIT_STOP_FW        )= 0;          INTEGER     Undefined  Optional
  @(WAIT_STOP           )= 50;         INTEGER     Defined
  @(LOOPS               )= 3;          INTEGER     Defined    Optional
  @(WAIT_STOP_S         )= 0;          INTEGER     Undefined  Optional
  @(WAIT_STOP_P         )= 0;          INTEGER     Undefined  Optional
  @(TIMES_SUPER         )= 1;          INTEGER     Undefined  Optional
  @(TIMES_POWER         )= 1;          INTEGER     Undefined  Optional
  @(MODE                )= 2;          INTEGER     Undefined  Optional

 Memory              TEST     Test memory range by Wr/Rd/Cmp
  @(UseMMcmd            )= FALSE;      FLAG        Undefined  Optional
  @(PATTERN             )= ;           DATA_PATT   Defined
  @(LOOPS               )= 1;          INTEGER     Defined    Optional
  @(END                 )= 122880;     LONG        Defined    Optional
  @(START               )= 28672;      LONG        Defined    Optional

 HeadSwitch          TEST
  @(HdSw_Only           )= TRUE;       FLAG        Defined    Optional
  @(SeekUClimit         )= 7.000000;   FLOAT       Defined
  @(SeekMax             )= 7.000000;   FLOAT       Defined
  @(SeekMin             )= 0.100000;   FLOAT       Defined
  @(HdSwUClimit         )= 7.000000;   FLOAT       Defined
  @(HdSwMax             )= 7.000000;   FLOAT       Defined
  @(HdSwMin             )= 0.100000;   FLOAT       Defined
  @(UCpercent           )= 95.000000;  FLOAT       Defined
  @(BinStart            )= 1.000000;   FLOAT       Defined    Optional
  @(BinSize             )= 0.500000;   FLOAT       Defined    Optional
  @(BinNum              )= 15;         INTEGER     Defined    Optional
  @(LOOPS               )= 2;          INTEGER     Defined    Optional
                                                                      page 18



 rand                TEST
  @(UseLbas             )= 0;          INTEGER     Undefined  Optional
  @(Samples             )= 3000;       INTEGER     Defined    Optional
  @(MAXMAX              )= 2000.00000; DOUBLE      Defined    Optional
  @(AVGMIN              )= 1.000000;   DOUBLE      Defined    Optional
  @(AVGMAX              )= 20.000000;  DOUBLE      Defined    Optional
  @(MeasureEachHead     )= FALSE;      FLAG        Defined    Optional
  @(HeadZeroOnly        )= FALSE;      FLAG        Undefined  Optional

 FIXED               TEST
  @(HEAD                )= 0;          INTEGER     Undefined  Optional
  @(CHART               )= TRUE;       FLAG        Defined    Optional
  @(STROKE              )= ;           STROKES     Defined

 DumpDefectList      TEST     Display master defect list
  @(Def_StatType        )= 1048575;    LONG        Undefined  Optional
  @(Def_Stat            )= 0;          INTEGER     Undefined  Optional
  @(Def_Graph           )= 1;          INTEGER     Defined    Optional
  @(Def_List            )= 2;          INTEGER     Defined    Optional

 LSCAN               TEST
  @(IDSIZE              )= 9.000000;   FLOAT       Undefined  Optional
  @(IDSPERSECTOR        )= 0.547000;   FLOAT       Undefined  Optional
  @(IDseparate          )= FALSE;      FLAG        Undefined  Optional
  @(REQD_PASSES         )= 0;          INTEGER     Undefined  Optional
  @(PASS                )= ;           LOG_PASS    Undefined
  @(MAXTIME             )= 0;          LONG        Undefined  Optional
  @(LOOPS               )= 1;          INTEGER     Undefined  Optional
  @(HI_ADDR             )= -100;       LONG        Undefined  Optional
  @(LO_ADDR             )= -100;       LONG        Undefined  Optional
  @(SoftRateID          )= 0.00000;    FLOAT       Undefined  Optional
  @(SOFTRATE            )= 1.00000;    FLOAT       Undefined
  @(MXGROWN             )= 0;          INTEGER     Undefined  Optional


7.9  DPA:        SEE  UPT.HLP for more details.
---------
 InitDpaLog          TEST
 CompareThresholds   TEST
  @(CMP_THR             )= ;           MODIFIER    Undefined  Optional
 ReadThresholds      TEST
 WriteThresholds     TEST
  @(SET_THR             )= ;           MODIFIER    Undefined  Optional
 CompareAttrib       TEST
  @(CMP_ATR             )= ;           MODIFIER    Undefined  Optional
 OffLineImmediate    TEST
 CheckCapability     TEST
 ReadAttrib          TEST
 SaveAttribVals      TEST
 AutoOffLine         TEST
  @(OFFLINE_TIMER       )= 5;          BYTE        Undefined  Optional
 SetIdleTimer        TEST
  @(IDLE_TIMER          )= 0;          BYTE        Undefined  Optional
 DisableFPO          TEST
 EnableFPO           TEST

