SRUTSSSSSSSS80
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору /*--------------------------------------zzzverrr©2013--------------------------------------*/ CALL ZocTimeout 2 ZocSuppressOutput 1 CALL ZocCommand "CLS" CALL ZocCommand "CLEARSCROLLBACK" HD="Head 0," CALL _INI CALL _BAUDRATE CALL _INFO CALL _OPERATIONS _DIR: DR=ZocAsk("DIR ?", "C:\_DUMPS") IF DR="##CANCEL##" THEN CALL _BYE DIR=""DR"\"MODEL"_"SN"_"FW"" IF STREAM(DIR, "C", "QUERY EXISTS")="" THEN CALL ZocShell MD DIR,1 RETURN _INI: file_1= ZocGetFilename("Select config file", "%USERDESKTOP%\Seagate_F3_v3.3.ini") IF file_1="##CANCEL##" THEN CALL _BYE CALL STREAM file_1,"C","OPEN READ" INI=Charin(file_1,,4096) CALL STREAM file_1,"C","CLOSE" RETURN _BAUDRATE: answer= ZocRequestList("Select Baudrate", "38400", "57600", "115200", "230400", "460800", "921600") IF answer=0 THEN BD=38400 IF answer=1 THEN BD=57600 IF answer=2 THEN BD=115200 IF answer=3 THEN BD=230400 IF answer=4 THEN BD=460800 IF answer=5 THEN BD=921600 CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" CALL ZocSend "B"||BD||"^M" CALL ZocDelay 1 CALL ZocBaud ""||BD||"-8N1" CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" RETURN _HEAD: Answer= ZocRequestList("Select Head", "Head 0", "Head 1", "Head 2", "Head 3", "Head 4", "Head 5", "Head 6", "Head 7") IF Answer=0 THEN HD="Head 0," IF Answer=1 THEN HD="Head 1," IF Answer=2 THEN HD="Head 2," IF Answer=3 THEN HD="Head 3," IF Answer=4 THEN HD="Head 4," IF Answer=5 THEN HD="Head 5," IF Answer=6 THEN HD="Head 6," IF Answer=7 THEN HD="Head 7," RETURN _INFO: CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" CALL ZocReceiveBuf 2048 CALL ZocSend "^L" CALL ZocDelay 1 INFO_1=ZocReceiveBuf(0) CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" ZocSend "/2^M" CALL ZocWait "2>" CALL ZocSend "r,0,1^M" CALL ZocWait "2>" CALL ZocReceiveBuf 2048 CALL ZocSend "?" CALL ZocDelay 0.3 CALL ZocSend "^M" CALL ZocWait "2>" INFO_2=ZocReceiveBuf(0) CALL ZocReceiveBuf 2048 CALL ZocSend "x1^M" CALL ZocDelay 0.3 CALL ZocSend "^M" CALL ZocWait "2>" INFO_3=ZocReceiveBuf(0) CALL ZocReceiveBuf 2048 CALL ZocSend "x0^M" CALL ZocDelay 0.3 CALL ZocSend "^M" CALL ZocWait "2>" INFO_4=ZocReceiveBuf(0) FID="FID_"||substr(word(INFO_1,(Wordpos("FamilyId:",INFO_1)+1)),1,2) MID="MID_"||substr(word(INFO_1,(Wordpos("MemberId:",INFO_1)+1)),1,2) SN=substr(word(INFO_1,(Wordpos("SN:",INFO_1)+1)),1,8) FW=word(substr(word(INFO_1,(Wordpos("Version:",INFO_1)+1)),20,8),1) IF Wordpos(FID,INI)==0 THEN DO SAY "Unknown Model!" CALL _BYE END ID_TRC="TRC_"||word(INI,(Wordpos(FID,INI)+1)) ID_MOD_FILES="MOD_FILES_"||word(INI,(Wordpos(FID,INI)+1)) ID_MOD_PZU="MOD_PZU_"||word(INI,(Wordpos(FID,INI)+1)) ID=word(INI,(Wordpos(FID,INI)+1)) ID_INFO=word(INI,(Wordpos(FID,INI)+2)) MODEL=word(INI,(Wordpos(FID||"_"||MID,INI)+1)) Param=word(INI,(Wordpos(FID,INI)+3)) Count=substr(Param,7,1) Head=substr(HD,6,1) RD_TRC=substr(word(INI,(Wordpos(ID_TRC,INI))+1),1,2) RD_MOD_0=substr(word(INI,(Wordpos(ID_MOD_FILES,INI))+1),1,2) RD_MOD_1=substr(word(INI,(Wordpos(ID_MOD_PZU,INI))+1),1,2) A=9 DO N=1 TO Count BY 1 x=substr(Param,A,1) y=substr(Param,A+2,1) z=substr(Param,A+4,1) IF N==1 THEN Buffer_R=substr(word(INFO_2,(Wordpos("Default",INFO_2))-x),y,z) IF N==2 THEN Buffer_W=substr(word(INFO_2,(Wordpos("Default",INFO_2))+x),y,z) IF N==3 THEN Track=substr(word(INFO_3,(Wordpos(HD,INFO_3))+x),y,z) IF N==4 THEN SPT=substr(word(INFO_3,(Wordpos("00",INFO_3))+x),y,z) IF N==5 THEN LBAs=substr(word(INFO_4,(Wordpos("LBAs",INFO_4)+x)),y+1,z) A=A+6 END INF_HD=substr(HD,1,6) SAY "ID:" ID SAY "FW:" FW SAY "Family:" ID_INFO SAY "Model:" MODEL", Max LBA:" LBAs", "x2d(LBAs)/2/1024/1024 "Gb" SAY "HDA SN:" SN SAY "SA Start Track ("INF_HD"):" Track", SPT" SPT", Buffer_R" Buffer_R", Buffer_W" Buffer_W RETURN _OPERATIONS: CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" ZocSend "/C^M" CALL ZocWait "C>" CALL ZocReceiveBuf 2048 ZocSend "QT^M" CALL ZocDelay 0.2 CALL ZocWait "C>" INFO_4=ZocReceiveBuf(0) M=Wordpos("'r':",INFO_4) IF M=0 THEN DO Answer= ZocRequestList("Select operations", "Read System Tracks", "Write System Tracks", "Terminal", "Self-Test", "Defects To G-List", "Exit") IF Answer=0 THEN CALL _READ_TRC IF Answer=1 THEN CALL _WRITE_TRC IF Answer=2 THEN CALL _TERMINAL IF Answer=3 THEN CALL _SELF_TEST IF Answer=4 THEN CALL _DEFECTS IF Answer=5 THEN CALL _BYE END Answer= ZocRequestList("Select operations", "Read System Modules", "Read System Tracks", "Write System Modules", "Write System Tracks", "Terminal", "Self-Test", "Defects To G-List", "Exit") IF Answer=0 THEN CALL _READ_MOD IF Answer=1 THEN CALL _READ_TRC IF Answer=2 THEN CALL _WRITE_MOD IF Answer=3 THEN CALL _WRITE_TRC IF Answer=4 THEN CALL _TERMINAL IF Answer=5 THEN CALL _SELF_TEST IF Answer=6 THEN CALL _DEFECTS IF Answer=7 THEN CALL _BYE _READ_MOD: Answer= ZocRequestList("Select operations", "Read System Files", "Read System DT PZU", "Read System DT OZU", "Terminal", "Exit", "Back") IF Answer=0 THEN DO V=3 H=ID_MOD_FILES L=RD_MOD_0 B="\Files" END IF Answer=1 THEN DO V=9 H=ID_MOD_PZU L=RD_MOD_1 B="\PZU" END IF Answer=2 THEN DO V="A" H=ID_MOD_PZU L=RD_MOD_1 B="\OZU" END IF Answer=3 THEN CALL _TERMINAL IF Answer=4 THEN CALL _BYE IF Answer=5 THEN CALL _OPERATIONS CALL _DIR DIR_MOD=""DIR"\Modules" IF STREAM(DIR_MOD, "C", "QUERY EXISTS")="" THEN CALL ZocShell MD DIR_MOD,1 IF STREAM(DIR_MOD||B, "C", "QUERY EXISTS")="" THEN CALL ZocShell MD DIR_MOD||B,1 CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" SAY "Read" L "System Modules." T1=time(S) DO T=1 TO L BY 1 Offset=substr(word(INI,(Wordpos(H,INI))+1+T),1,3) SAY "Read Modul" T "(ID "Offset")" "of" L CALL ZocReceiveBuf 2048 CALL ZocSend "r"Offset","V"^M" CALL ZocDelay 0.1 INFO_5=ZocReceiveBuf(0) Ready=Wordpos("file.",INFO_5) IF Ready>0 THEN DO RDM=ZocDownload("YMODEM", DIR_MOD||B) IF ret="##ERROR##" THEN DO SAY "DOWNLOAD FAILED" END END ELSE SAY "Modul" Offset "is not exist" END T2=time(S) SAY "DONE! in "||T2-T1||" seconds" CALL _READ_MOD _READ_TRC: CALL _HEAD CALL _INFO CALL _DIR DIR_TRC=""DIR"\Tracks" IF STREAM(DIR_TRC, "C", "QUERY EXISTS")="" THEN CALL ZocShell MD DIR_TRC,1 CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" ZocSend "/2^M" CALL ZocWait "2>" SAY "Read" RD_TRC "System Tracks." T1=time(S) DO T=1 TO RD_TRC BY 1 Offset=substr(word(INI,(Wordpos(ID_TRC,INI))+1+T),1,3) ST=(x2d(Track)+x2d(Offset)) Start=d2x(ST) file=""DIR_TRC"\Track_"||Start||"_HD_"||Head||"_SPT_0("||SPT||")_Off_"Offset".bin" IF STREAM(file, "C", "QUERY EXISTS")\="" THEN CALL ZocShell DEL file,1 CALL STREAM file,"C","OPEN WRITE" RD_BUFF=x2d(Buffer_R) LIM=x2d(SPT) M=d2x(LIM) CALL ZocSend "s"||Start||","||Head||",22^M" CALL ZocWait ">" CALL ZocSend "r,0,"||M||"^M" CALL ZocWait ">" DO K=RD_BUFF TO RD_BUFF+LIM-1 BY 1 W=d2x(K,04) U=d2x((K-RD_BUFF),03) ZocNotify "PROCCESSING: Track "||Start||" SPT "||U||": Track "||T||" of "RD_TRC CALL ZocReceiveBuf 2048 ZocSend "B"||W||","||W||"^M" ZocWait ">" abst= ZocReceiveBuf(0) BINSTRING="" DO F=29 TO words(abst)-1 BINSTRING=BINSTRING||substr(word(abst,F),1,2) END CALL CHAROUT file,x2c(BINSTRING) END CALL STREAM file,"C","CLOSE" END T2=time(S) SAY "DONE! in "||T2-T1||" seconds" RETURN _WRITE_MOD: DIR="C:\_DUMPS\"MODEL"_"SN"_"FW"\Modules" CALL ZocSendRaw x2c(1A) ZocWait "T>" file= ZocGetFilename("Select file to upload", DIR) IF file="##CANCEL##" THEN CALL _BYE Name=substr(RIGHT(file,7),3,3) Volume=substr(RIGHT(file,7),1,1) Name_Volume=ZocAsk("ID, Volume?", Name","Volume) SAY "Write System Modules," "INFO:" "ID" Name",Volume" Volume T1=time(S) CALL ZocReceiveBuf 2048 CALL ZocSend "w"Name_Volume"^M" CALL ZocDelay 0.1 INFO_5=ZocReceiveBuf(0) Ready=Wordpos("transfer",INFO_5) IF Ready>0 THEN DO WTM=ZocUpload("YMODEM", file) IF WTM="##ERROR##" THEN DO SAY "UPLOAD FAILED" END END T2=time(S) SAY "DONE! in "||T2-T1||" seconds" RETURN _WRITE_TRC: CALL ZocSendRaw x2c(1A) ZocWait "T>" file= ZocGetFilename("Select file to upload", ""||DR||"\*.bin") IF file="##CANCEL##" THEN CALL _BYE Name=substr(file,17,5) HD=substr(file,24,1) Track_Head=ZocAsk("Track, Head?", Name","HD) T=ZocFilename(GETSIZE, file) CALL STREAM file,"C","OPEN READ" SAY "Write System Track," "INFO:" "Track, Head" Track_Head "SPT" d2x(T/512) A=1 T1=time(S) DO M=0 TO T/512 W=d2x(M,03) ZocNotify "PROCCESSING: Track_Head "||Track_Head||" SPT "W N=Charin(file,A,512) CALL ZocDelay 0.3 CALL ZocSend "P200^M" CALL ZocDelay 0.3 CALL ZocSend N CALL ZocDelay 0.3 CALL ZocSend "^M" CALL ZocWait "T>" DO R=A TO 2 CALL ZocSend "/2^M" CALL ZocWait "2>" CALL ZocSend "r,0,1^M" CALL ZocWait "2>" CALL ZocReceiveBuf 2048 CALL ZocSend "?" CALL ZocDelay 0.3 CALL ZocSend "^M" CALL ZocWait "2>" abst= ZocReceiveBuf(0) Buffer_Download=substr(word(abst,(Wordpos("Download",abst))-8),4,3) Buffer=substr(word(abst,(Wordpos("Default",abst))+4),3,4) END CALL ZocSend "^M" CALL ZocWait "T>" CALL ZocSend "/2^M" CALL ZocWait "2>" CALL ZocSend "C"||Buffer_Download||","||Buffer||"^M" CALL ZocWait "2>" ZocSend "s"||Track_Head||",22^M" CALL ZocWait "2>" ZocSend "w,"||W||",1^M" CALL ZocWait "2>" CALL ZocSend "/^M" CALL ZocWait "T>" A=A+512 END T2=time(S) SAY "DONE! in "||T2-T1||" seconds" CALL STREAM file,"C","CLOSE" RETURN _SELF_TEST: CALL _DIR file=""DIR"\Defects.log" IF STREAM(file, "C", "QUERY EXISTS")\="" THEN CALL ZocShell DEL file,1 CALL STREAM file,"C","OPEN WRITE" CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" CALL ZocSend "O4,80^M" CALL ZocWait "T>" CALL ZocSend "/A^M" CALL ZocWait "A>" CALL CHAROUT file,"Defects " Start=x2d(0) Stop=x2d(LBAs) T1=time(S) DO N=Start TO Stop BY 1 T=d2x(N) ZocNotify "PROCCESSING: Total LBAs "||LBAs||" Current LBAs "T CALL ZocReceiveBuf 2048 CALL ZocSend "Q"T"^M" CALL ZocWait "A>" abst= ZocReceiveBuf(0) IF Wordpos("Error",abst)>0 THEN DO CALL CHAROUT file,T||" " END END CALL STREAM file,"C","CLOSE" T2=time(S) SAY "DONE! in "||T2-T1||" seconds, Defects.log is created." RETURN _DEFECTS: CALL ZocSendRaw x2c(1A) ZocWait "T>" file_1= ZocGetFilename("Select Defects.log", ""||DIR||"\*.log") IF file_1="##CANCEL##" THEN CALL _BYE CALL STREAM file_1,"C","OPEN READ" Defects=Charin(file_1,,32768) CALL STREAM file_1,"C","CLOSE" Stop=Words(Defects)-1 SAY "Find" Stop "Defects" CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" CALL ZocSend "/2^M" CALL ZocWait "2>" T1=time(S) DO N=1 TO Stop BY 1 Def=substr(word(Defects,(Wordpos("Defects",Defects))+N),1,8) ZocNotify "PROCCESSING: Defects "||Def||" Sliped "N CALL ZocSend "F"Def",B1^M" CALL ZocWait "2>" END T2=time(S) SAY "DONE! in "||T2-T1||" seconds." RETURN _TERMINAL: ZocSuppressOutput 0 Answer= ZocRequestList("Select operations", "Clear SMART", "Clear P_List", "Clear G_List", "Translator P_list", "Translator G_list", "Translator P_&_G_List", "Full Format P_list", "Full Format G_list", "Full Format P_&_G_List", "View Defects", "View P-List", "View G-List", "Exit") IF Answer=0 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "/1^M" CALL ZocWait "1>" CALL ZocSend "N1,,22^M" SAY "Wait..." CALL _TERMINAL END IF Answer=1 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "i1,1,22^M" SAY "Wait..." CALL _TERMINAL END IF Answer=2 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "i4,1,22^M" SAY "Wait..." CALL _TERMINAL END IF Answer=3 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "m0,6,2,,,,,22^M" SAY "Wait..." CALL _TERMINAL END IF Answer=4 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "m0,6,1,,,,,22^M" SAY "Wait..." CALL _TERMINAL END IF Answer=5 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "m0,6,3,,,,,22^M" SAY "Wait..." CALL _TERMINAL END IF Answer=6 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "m0,8,2,,,,,22^M" SAY "Wait..." CALL _TERMINAL END IF Answer=7 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "m0,8,1,,,,,22^M" SAY "Wait..." CALL _TERMINAL END IF Answer=8 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "m0,8,3,,,,,22^M" SAY "Wait..." CALL _TERMINAL END IF Answer=9 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "V4,,,,99^M" CALL _TERMINAL END IF Answer=10 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "V1^M" CALL _TERMINAL END IF Answer=11 THEN DO CALL ZocSendRaw x2c(1A) ZocWait "T>" CALL ZocSend "V4^M" CALL _TERMINAL END IF Answer=12 THEN DO SAY "Bye..." EXIT END _BYE: SAY "Bye!" CALL ZocSendRaw x2c(1A) CALL ZocWait "2>" CALL ZocSend "/^M" CALL ZocWait "T>" CALL ZocSend "B38400^M" CALL ZocBaud "38400-8N1" CALL ZocSendRaw x2c(1A) CALL ZocWait "T>" EXIT /*--------------------------------------zzzverrr©2013--------------------------------------*/ |