Sample of DM Script Writing — HDD
Please copy the content below and paste it in DriveMaster’s Script Window to run this sample script.
//"Cls" is used to clear the content in the log window. CLS
//There is a set of print commands for user to display the information in the log window.
//PRNS[R], PRNL[R], PRNSL[R], PRNSX[R], PRNF
PRNS "=================================================="
//"Script" displays the name of current script; "VER" displays the version number
//of current DriveMaster; "DEVNAME" displays the information of current tested
//device including model number, serial number and firmware revision; "DATE"/"TIME"
//displays current date and time
SCRIPT; VER; DEVNAME; DATE; TIME
PRNS "=================================================="
PRNS "*** CLEAR DISK ***"
PRNS "* BY DMA CMD *"
//"Echo On" or "Echo Off" is used to control the display of command issued to be
//echoed to the Log window. Default is "Echo On"
ECHO OFF
//"Log1"/"Log2"/"LogOff" is used to control how detail information will be displayed
//on the Log Window when command failed. Default is "Log2"
LOG2
//"HaltErr On" or "HaltErr Off" is used to control if script will be halted
//when command fails. Default is "HaltErr Off"
HALTERR ON
//"UPD ON" or "UPD OFF" is used to control how frequent the screen display will be
//refreshed. When "Upd On", the screen will be refreshed by every second; When "Upd Off",
//the screen will be refreshed by each script line. Default is "UPD off"
//UPD ON
PRNS "SOFT RESET"
//Issue "ATA Soft Reset" command
REST
//"Wait" will let script wait for number of milliseconds before continuing //to execute
//next script line.
WAIT 2000
//Issue "Set Feature" command to set PIO mode 4
SETF 3,0ch,0 //set PIO MODE 4
//Issue ATA "Identify" command
IDFY
SETF 3,45h,0 //set UDMA MODE 5 (UDMA100)
//Get the Total Lba address of the current tested HDD and save the value to variable "V0"
//V0-V99, G0-G99, I-I10, J-J10, K-K10 are DWORD Global variables for general purpose.
//Also user can define the meaningful variables/arrays by "DIM"
V0 = totallba
PRNSL "total lba=",V0
G8=256 //G8 is set for sector count per write/read
//Math/logical/conditional/assignment operators work same as C language
V0 = V0/1000 //shorten the size for sample purpose
//Issue "Read DMA" command with LBA 0, Length 256
//Besides ATA/ATAPI standard commands, user also can send Vendor specified ATA,ATAPI
//commands by using "WTF28", "WTF48", "PACKET"
RDMA 0,256 //Issue Read DMA command
//There is a set of buffer filling commands to let user fill buffer with different
//patterns: PAT, PATI, PATZ, PATD, PATR, PATV, and PATF
PATZ "WRITE" //fill write buffer with 0
WDMA 0,256 //write from WRITE buffer
RDMA 0,256 //read to READ buffer
//Also there is a set of buffer management commands to let user control buffer easily.
//RPOINT, WPOINT, RR[W], RW[W], WRB[W], WWB[W], R[B]FILE, W[B]FILE, SAVB(O)
//NEW, SETSIZE, FREE, COPY, CMPSET, CMP, APPEND, SWAP, MOD
CMP //compare READ and WRITE buffer
PRNSR "Write Start "; time
PRNS ""
G8=256 //sector count per write/read
//"For...EndFor" let user control scripts in loop. Similar commands include
//"Do...Until", "While...EndWhile"
FOR (G9=0; G9<(V0-1); G9+=G8 )
//"PRNF" will let user print information into a formatted text.
PRNF "\r UDMA WRITE LBA %09ld ", G9
//"If...ElseIf...Else...EndIf" will let user control conditional execution
IF ( (G9+G8)>=V0 ) G8=V0-G9; ENDIF //CHECK OUT OF BOUND
WDMA G9,G8
ENDFOR
PRNS ""
PRNSR "Write End"; time
G8=256 //sector count per write/read
PRNSR "Read Start"; time
PRNS""
FOR (G9=0; G9<(V0-1); G9+=G8 )
PRNF "\r UDMA READ LBA %09ld", G9
IF ( (G9+G8)>=V0 ) G8=V0-G9; ENDIF //CHECK OUT OF BOUND
RDMA G9,G8
G7=G8*512; //bytes
//"CmpSet" works with "Cmp" together to control the location/size of buffer comparison
//instead of comparing the whole buffers by default.
CMPSET 1,0,G7 //type, offset, size
CMP
ENDFOR
PRNS ""
PRNSR "Read End "; time
//Restore to the defaults Logging control parameters
ECHO ON
Log2
HaltErr Off
Upd OFF
Prns "End of Test"
End
//User also can use "Sub"/"Call" functions to generate more complex scripts as needed. |
||