{$read}
//reading 24c08
begin
  ChipSize := 1024;
  MemAddr := 0;
  ReadBuff := CreateByteArray(ChipSize);
  DevAddr := $A8;

  if _IC_Name = '' then
  begin
    ShowMessage ('Choose a component in list');
  exit;
  end;

  I2CEnterProgMode;

  I2CReadWrite(DevAddr, 1, ChipSize, MemAddr, ReadBuff);
  ReadToEditor(ChipSize, 0, ReadBuff);

  I2CExitProgMode;
end

{$write}
function I2CIsBusy(DevAdr): boolean;
begin
  I2CStart;
  Result := not I2CWriteByte(DevAdr);
  I2CStop;
end;
//writing 24c08
begin
  ChipSize := 1024;
  MemAddr := 0;
  WriteByte := 0;
  DevAddr := $A0;
  if _IC_Name = '' then
  begin
    ShowMessage ('Choose a component in list');
  exit;
  end;
  ProgressBar(0, _IC_SIZE-1, 0);

  I2CEnterProgMode;

  for i:=0 to ChipSize-1 do
  begin
    WriteFromEditor(1, i, WriteByte);
    I2CReadWrite(DevAddr, 2, 0, MemAddr, WriteByte);
    while I2CIsBusy(DevAddr) do
    MemAddr := MemAddr + 1;
    if MemAddr = 256 then DevAddr := $A2;
    if MemAddr = 512 then DevAddr := $A4;
    if MemAddr = 768 then DevAddr := $A6;
    ProgressBar(1);
  end;

  I2CExitProgMode;
  ProgressBar(0, 0, 0);
end
