Advertisement
derp_derp

ram loader [qcom]

May 17th, 2013
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1.  
  2. //============================================================================//
  3. Function SendLoader(var AddrLoadedHEX,JmpAddr:cardinal;loader:string):Boolean;
  4. var data,block,read_data,setlhex:string; mloader:tmemorystream; n:cardinal;
  5. var i,DefPos : integer;
  6. begin
  7. mloader:=nil;
  8. mloader:=TMemoryStream.Create;
  9. LoadDataFromRes(loader,mloader);
  10. mloader.Position:=0;
  11. n:=mloader.Size;
  12.  
  13. DefPos:=0;
  14. Block:='';
  15. Data :='';
  16. while (DefPos) < (mloader.Size) do begin
  17. // replace last CMD Inject RAM addr
  18. IF DefPos = (mloader.Size)-4 THEN AddrLoadedHex:=JmpAddr;
  19. SetLhex:=''; SetLength(SetLhex,4);
  20. CopyMemory(@SetLhex[1],@AddrLoadedHEX,4);
  21.  
  22. // Take step by step 4 bytes from loader
  23. SetLength(Data,$4);
  24. n:=mloader.Read(Data[1],$4);
  25. Block:=#$05+SetLhex+#$04+data;
  26. Block:=qcrcinframe(Block);
  27. Block:=Block+#$7E;
  28. Send2com(comm,Block);
  29. ReadQcomm(read_data,5000);
  30. // Errors correctioin.
  31. if (length(read_data)<5) or (read_data[1]<>#$05) then
  32. begin Result:=False; Append2Log('ERROR! #1'); EXIT; end;
  33.  
  34. inc(AddrLoadedHEX,4); // increment for RAM addr inject
  35. inc(DefPos,4); // increment for while circle
  36. Set_progress(defpos,mloader.size);
  37. end;
  38. mloader.Free;
  39. Result:=True;
  40. END;
  41. //============================================================================//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement