Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //============================================================================//
- Function SendLoader(var AddrLoadedHEX,JmpAddr:cardinal;loader:string):Boolean;
- var data,block,read_data,setlhex:string; mloader:tmemorystream; n:cardinal;
- var i,DefPos : integer;
- begin
- mloader:=nil;
- mloader:=TMemoryStream.Create;
- LoadDataFromRes(loader,mloader);
- mloader.Position:=0;
- n:=mloader.Size;
- DefPos:=0;
- Block:='';
- Data :='';
- while (DefPos) < (mloader.Size) do begin
- // replace last CMD Inject RAM addr
- IF DefPos = (mloader.Size)-4 THEN AddrLoadedHex:=JmpAddr;
- SetLhex:=''; SetLength(SetLhex,4);
- CopyMemory(@SetLhex[1],@AddrLoadedHEX,4);
- // Take step by step 4 bytes from loader
- SetLength(Data,$4);
- n:=mloader.Read(Data[1],$4);
- Block:=#$05+SetLhex+#$04+data;
- Block:=qcrcinframe(Block);
- Block:=Block+#$7E;
- Send2com(comm,Block);
- ReadQcomm(read_data,5000);
- // Errors correctioin.
- if (length(read_data)<5) or (read_data[1]<>#$05) then
- begin Result:=False; Append2Log('ERROR! #1'); EXIT; end;
- inc(AddrLoadedHEX,4); // increment for RAM addr inject
- inc(DefPos,4); // increment for while circle
- Set_progress(defpos,mloader.size);
- end;
- mloader.Free;
- Result:=True;
- END;
- //============================================================================//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement