anchor.diff:    Address := 0;
     MainForm.ProgressBar.Max := DataSize div ChunkSize;
   
  -  try
  -
     while Address < DataSize do
     begin
       if ChunkSize > (DataSize - Address) then ChunkSize := DataSize - Address;
  
positive.code:       LogPrint(STR_USER_CANCEL, clRed);
        Exit;
      end;
      LogPrint(STR_NEW_SREG+IntToBin(sreg, 8));
    end;
  
  
negative.code:   BytesWrite := 0;
    Address := StartAddress;
    MainForm.ProgressBar.Max := WriteSize div PageSize;
  
    while Address < WriteSize do
    begin
      if (WriteSize - Address) < PageSize then PageSize := (WriteSize - Address);
      FillByte(DataChunk, PageSize, $FF);
      BytesWrite := BytesWrite + UsbAspI2C_Write(hUSBDev, DevAddr, MainForm.ComboAddrType.ItemIndex, Address, datachunk, PageSize);
      Inc(Address, PageSize);
  
      while UsbAspI2C_BUSY(hUSBdev, DevAddr) do
        Application.ProcessMessages;
  
      MainForm.ProgressBar.Position := MainForm.ProgressBar.Position + 1;
      Application.ProcessMessages;
    end;
  
    if BytesWrite <> WriteSize then
      LogPrint(STR_WRONG_BYTES_WRITE, clRed)
    else
      LogPrint(STR_DONE);
  
    MainForm.ProgressBar.Position := 0;
  end;
  
  