anchor.diff:      if ComboSPICMD.ItemIndex = SPI_CMD_25 then
         WriteFlash25(RomF, Hex2Dec('$'+StartAddressEdit.Text), MPHexEditorEx.DataSize, PageSize, WriteType);
       if ComboSPICMD.ItemIndex = SPI_CMD_95 then
  -      WriteFlash95(RomF, 0, MPHexEditorEx.DataSize, PageSize, StrToInt(ComboChipSize.Text));
  +      WriteFlash95(RomF, Hex2Dec('$'+StartAddressEdit.Text), MPHexEditorEx.DataSize, PageSize, StrToInt(ComboChipSize.Text));
       if ComboSPICMD.ItemIndex = SPI_CMD_45 then
         WriteFlash45(RomF, 0, MPHexEditorEx.DataSize, PageSize, WriteType);
       if ComboSPICMD.ItemIndex = SPI_CMD_KB then
  
positive.code:       VerifyFlash25(RomF, Hex2Dec('$'+StartAddressEdit.Text), RomF.Size);
  
      if ComboSPICMD.ItemIndex = SPI_CMD_95 then
        VerifyFlash95(RomF, 0, RomF.Size, StrToInt(ComboChipSize.Text));
  
      if ComboSPICMD.ItemIndex = SPI_CMD_45 then
       begin
  
negative.code:     LogPrint(STR_WRITING_FLASH_WCHK) else
        LogPrint(STR_WRITING_FLASH);
  
    PageSizeTemp := PageSize;
    BytesWrite := 0;
    Address := StartAddress;
    MainForm.ProgressBar.Max := WriteSize div PageSize;
  
    while (Address-StartAddress) < WriteSize do
    begin
      UsbAsp95_WREN();
  
      //Determines first page buffer size to prevent buffer "rolls over" on address boundary
          if (StartAddress > 0) and (Address = StartAddress) and (PageSize > 1) then
             PageSize := (ChipSize - StartAddress) mod PageSize else
                PageSize := PageSizeTemp;
  
      if (WriteSize - (Address-StartAddress)) < PageSize then PageSize := (WriteSize - (Address-StartAddress));
      RomStream.ReadBuffer(DataChunk, PageSize);
  
      BytesWrite := BytesWrite + UsbAsp95_Write(ChipSize, Address, datachunk, PageSize);
  