AntiMember
Gold Member | Ðåäàêòèðîâàòü | Ïðîôèëü | Ñîîáùåíèå | Öèòèðîâàòü | Ñîîáùèòü ìîäåðàòîðó /* REXX script by Moltke */ NUMERIC DIGITS 18 DIR_PART="C:\_DUMPS" ; eol=x2c(0D0A) ; A0="1FF00000" ; A1="84100000" ; L0="40000"; L1="20000" call ZocSuppressOutput 0 cls is_CONNECT: k=0 5: abst=Z_IN("^M",1) k=k+1 if lastpos(">",abst,)=0 then do if k<3 then signal 5 NODEVICE: say "COMMUNICATION PROBLEM." say " work wih the device not available.SCRIPT STOP" exit end LEVEL="DBG>" if pos("DBG>",abst,1)=0 then abst=Z_IN("^[") abst=ASCII("D 0 2") abst=SUB_STR(abst,":"," ") abst=REF(abst,X) len_ADDR=length(abst) if len_ADDR< 8 then do _exit: say "ARCH not SUPPORTED.BYE!" exit end DATA=ASCII("DV") if length(DATA) <3 then do abst=Z_IN("RT"||"^M",,7) i=pos("SoC",abst,1) if i<>0 then do SOC=REF(SUB_STR(abst,"SoC="," "),A) SOC=left(SOC,4) FW= SUB_STR(abst,"(",")") end if pos("DBG>",abst,1)=0 then abst=Z_IN("^[") end /* F1_3D */ else do FW=SUB_STR(DATA,":","|") SOC=SUB_STR(DATA,"SoC:"," ") end if FW<>'' then FW="_"||FW DIR_PART=DIR_PART||"\[SAMSUNG_SOC_"||SOC||FW||"]" if SOC=53C2 | SOC=63B0 then NODY=1 if SOC=27A0 | SOC=26A3 then do MEM_CMD="DS" ADDR= A0 RLEN= L1 signal MEM_RD end MAIN: if NODY=1 then do TASK=ZocRequestList("ROM READ: ","DS","DI") if TASK= -1 then signal _QUIT if TASK= 0 then signal _DS if TASK= 1 then signal _DI end TASK=ZocRequestList("ROM READ: ","DS","DY","DI") if TASK= -1 then do _QUIT: say "BYE!" exit end if TASK= 0 then signal _DS if TASK= 2 then do _DI: MEM_CMD="DI" ADDR='0' RLEN= L0 signal MEM_RD end _DY: M=0 ; ROM='' ; LEN=0800 t1=time(S) do 17 do 8 ROM=ROM||BIN("DY"||" "||M||" "||LEN,360) M=d2x(x2d(M)+x2d(LEN),5) end abst=Z_IN("RT"||"^M",,1) LEVEL="DBG>" if pos("DBG>",abst,1)=0 then abst=Z_IN("^[") abst=ASCII("D 0 2") end say "DONE in "||abs(time(S)-t1)||" sec" call F_WRITE DIR_PART||"\"||"[expr_ROM].BIN",ROM||copies(x2c(FF),x2d(80000)-length(ROM)) signal MAIN _DS: MEM_CMD="DS" ADDR=P_SELECT("ADDRESS: ",A0,A1) RLEN=P_SELECT("ROM LENGTH: ",L0,L1) MEM_RD: LBLOCK=0800 PARM=x2d(RLEN)%x2d(LBLOCK) if PARM=0 then PARM=1 ROM='' ; t1=time(S) do PARM ROM=ROM||BIN(MEM_CMD||" "||ADDR||" "||LBLOCK,360) ADDR=d2x(x2d(ADDR)+x2d(LBLOCK)*2,len_ADDR) end say "DONE in "||abs(time(S)-t1)||" sec" if MEM_CMD='DI' then do lpart=substr(ROM,1,x2d(7D000)) rpart=substr(ROM,1+x2d(7D000),) ROM=rpart||lpart end call F_WRITE DIR_PART||"\"||"["||MEM_CMD||"_ROM].BIN",ROM if SOC=27A0 | SOC=26A3 then exit signal MAIN P_SELECT: parse arg MSG,P_0,P_1 TASK=ZocRequestList(MSG,P_0,P_1,"HEX VALUE") if TASK= -1 then do S: say "BYE!" exit end if TASK=0 then RET_STR=P_0 if TASK=1 then RET_STR=P_1 if TASK=2 then do R: RET_STR=ZocAsk("ENTER HEX VALUE ",copies('0',len_addr)) if RET_STR="" | RET_STR= "##CANCEL##" then do if ZocMsgBOX("CONTINUE ?",2) =##YES## then signal R signal S end if datatype(RET_STR,X)=0 then do say "" SAY "PARAM ["||RET_STR||"] NOT HEX.RETRY" signal R end end RETURN RET_STR /* ============================================================== */ Z_IN: parse arg ?CMD,?TIMEOUT,?DELAY if ?TIMEOUT='' then ?TIMEOUT=5 call ZocTimeout ?TIMEOUT call ZocReceiveBuf ?TIMEOUT * 6500 if ?CMD<>'' then call ZocSend ?CMD if ?DELAY='' then call ZocWait LEVEL else call ZocDelay ?DELAY RETURN ZocReceiveBuf(0) F_SPEC: parse arg ?file if pos(" ",?file,1)<>0 then LONG=1 k=lastpos("\",?file) F_PART=substr(?file,k+1,) DIR_PART=left(?file,k-1) if LONG=1 then DIR_PART='"'||DIR_PART||'"' tmp=translate(F_PART," ",".") F_NAME=word(tmp,1) F_EXT =word(tmp,2) if F_EXT<>'' then F_EXT="."||F_EXT UP_DIR=DIR_PART k=lastpos("\",DIR_PART) if k<>0 then UP_DIR=left(UP_DIR,k-1) RETURN F_CLOSE: parse arg ?FILE,VERBOSE call stream ?FILE,"C","CLOSE" if VERBOSE='' then do say "" say "SAVED TO:" say ?FILE end RETURN F_READ: parse arg FILE?,LENGTH? call F_SPEC FILE? call stream FILE?,"C","OPEN READ" if LENGTH?="" then LENGTH?=chars(FILE?) BUFF?=charin(FILE?,1,LENGTH?) call stream FILE?,"C","CLOSE" RETURN BUFF? GET_FILE: parse arg MSG,DIRNAME if MSG="" then MSG="SELECT FILE:" if DIRNAME="" then DIRNAME="C:" /* cls */ 1: IN_FILE= ZocGetFilename(MSG, DIRNAME||"\*.*") if IN_FILE="" | IN_FILE="##CANCEL##" then do if ZocMsgBOX("CONTINUE ?",2) =##YES## then signal 1 RETURN "##CANCEL##" end if stream(IN_FILE,"C","QUERY EXISTS")="" then do say "["||IN_FILE||"] NOT FOUND.RETRY" signal 1 end abst=F_READ(IN_FILE) if abst="" then do say "LENGTH "||IN_FILE|| "=0.TRY NEXT FILE." signal 1 end call F_INFO IN_FILE RETURN IN_FILE F_CREATE: parse arg ?FILE call F_SPEC ?FILE if stream(DIR_PART,"C","QUERY EXISTS")="" then do call ZocShell MD DIR_PART,1 end if stream(?FILE,"C","QUERY EXISTS")<>"" then do call ZocShell DEL ?FILE,1 end call stream ?FILE,"C","OPEN WRITE" t1=time(s) RETURN ?FILE F_WRITE: parse arg FILE?,BUFF? if BUFF?="" then BUFF?=abst OUT_FILE=F_CREATE(FILE?) call charout OUT_FILE,BUFF? call F_CLOSE OUT_FILE RETURN SUB_STR: parse arg buff,str1,str2 k=pos(str1,buff,1)+length(str1) l=pos(str2,buff,k) RETURN substr(buff,k,l-k) REF: PARSE ARG _str,data_type,pad str="" do l=1 to length(_str) CHAR=substr(_str,l,1) if datatype(CHAR,data_type)=0 then CHAR=pad str=str||CHAR end RETURN str WR_CHAR: parse arg ?TIME if time(S)-?TIME =1 then do call ZocWrite ">" T2=time(S) end RETURN ASCII: parse arg CMD?,TIMEOUT? ADATA=Z_IN(CMD?||"^M",TIMEOUT?) ADATA= SUB_STR(ADATA,CMD?,LEVEL) RETURN ADATA BIN: parse arg CMD?,?TIMEOUT abst=ASCII(CMD?,?TIMEOUT) abst=translate(abst," ",eol) BDATA='' do l=1 to words(abst) #word=word(abst,l) if pos(":",#word,1)=0 then do #word=x2c(#word) if len_ADDR<>6 then #word=reverse(#word) BDATA=BDATA||#word end end RETURN BDATA F_INFO: parse arg F_NAME say "OPEN OK: " if length(F_NAME)<80 then say F_NAME else do say DIR_PART ; say F_PART end say '' RETURN | Âñåãî çàïèñåé: 9012 | Çàðåãèñòð. 13-09-2010 | Îòïðàâëåíî: 10:44 03-08-2019 | Èñïðàâëåíî: AntiMember, 16:53 03-08-2019 |
|