* $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