@@ -71,6 +71,7 @@ TMainForm = class(TForm)
7171 MenuAVRISP250KHz: TMenuItem;
7272 MenuAVRISP125KHz: TMenuItem;
7373 LangMenuItem: TMenuItem;
74+ BlankCheckMenuItem: TMenuItem;
7475 MenuItemHardware: TMenuItem;
7576 MenuItemBenchmark: TMenuItem;
7677 MenuItemEditSreg: TMenuItem;
@@ -95,6 +96,7 @@ TMainForm = class(TForm)
9596 LogPopupMenu: TPopupMenu;
9697 DropdownMenuLock: TPopupMenu;
9798 Panel_I2C_DevAddr: TPanel;
99+ BlankCheckDropDownMenu: TPopupMenu;
98100 ProgressBar: TProgressBar;
99101 RadioI2C: TRadioButton;
100102 RadioMw: TRadioButton;
@@ -118,6 +120,7 @@ TMainForm = class(TForm)
118120 ButtonCancel: TToolButton;
119121 ToolButton4: TToolButton;
120122 ToolButton5: TToolButton;
123+ procedure BlankCheckMenuItemClick (Sender: TObject);
121124 procedure ButtonEraseClick (Sender: TObject);
122125 procedure ButtonReadClick (Sender: TObject);
123126 procedure ClearLogMenuItemClick (Sender: TObject);
@@ -153,6 +156,7 @@ TMainForm = class(TForm)
153156 procedure ButtonSaveHexClick (Sender: TObject);
154157 procedure ButtonCancelClick (Sender: TObject);
155158 procedure I2C_DevAddrChange (Sender: TObject);
159+ procedure VerifyFlash (BlankCheck: boolean = false);
156160 private
157161 { private declarations }
158162 public
@@ -2343,9 +2347,15 @@ procedure TMainForm.ButtonWriteClick(Sender: TObject);
23432347end ;
23442348
23452349procedure TMainForm.ButtonVerifyClick (Sender: TObject);
2350+ begin
2351+ VerifyFlash(false);
2352+ end ;
2353+
2354+ procedure TMainForm.VerifyFlash (BlankCheck: boolean = false);
23462355var
23472356 I2C_DevAddr: byte;
23482357 I2C_ChunkSize: Word = 65535 ;
2358+ i: Longword;
23492359begin
23502360try
23512361 ButtonCancel.Tag := 0 ;
@@ -2357,7 +2367,7 @@ procedure TMainForm.ButtonVerifyClick(Sender: TObject);
23572367 LogPrint(STR_CHECK_SETTINGS, clRed);
23582368 Exit;
23592369 end ;
2360- if KHexEditor.Data.Size > StrToInt(ComboChipSize.Text) then
2370+ if ( KHexEditor.Data.Size > StrToInt(ComboChipSize.Text)) and ( not BlankCheck ) then
23612371 begin
23622372 LogPrint(STR_WRONG_FILE_SIZE, clRed);
23632373 Exit;
@@ -2370,18 +2380,24 @@ procedure TMainForm.ButtonVerifyClick(Sender: TObject);
23702380 EnterProgMode25(hUSBdev);
23712381 TimeCounter := Time();
23722382
2373- RomF.Position :=0 ;
2374- KHexEditor.SaveToStream(RomF);
2383+ RomF.Clear;
2384+ if BlankCheck then
2385+ begin
2386+ for i:=1 to StrToInt(ComboChipSize.Text) do
2387+ RomF.WriteByte($FF);
2388+ end
2389+ else
2390+ KHexEditor.SaveToStream(RomF);
23752391 RomF.Position :=0 ;
23762392
23772393 if ComboSPICMD.ItemIndex = SPI_CMD_KB then
2378- VerifyFlashKB(RomF, 0 , KHexEditor.Data .Size);
2394+ VerifyFlashKB(RomF, 0 , RomF .Size);
23792395
23802396 if ComboSPICMD.ItemIndex = SPI_CMD_25 then
2381- VerifyFlash25(RomF, 0 , KHexEditor.Data .Size);
2397+ VerifyFlash25(RomF, 0 , RomF .Size);
23822398
23832399 if ComboSPICMD.ItemIndex = SPI_CMD_95 then
2384- VerifyFlash95(RomF, 0 , KHexEditor.Data .Size, StrToInt(ComboChipSize.Text));
2400+ VerifyFlash95(RomF, 0 , RomF .Size, StrToInt(ComboChipSize.Text));
23852401
23862402 if ComboSPICMD.ItemIndex = SPI_CMD_45 then
23872403 begin
@@ -2390,7 +2406,7 @@ procedure TMainForm.ButtonVerifyClick(Sender: TObject);
23902406 LogPrint(STR_CHECK_SETTINGS, clRed);
23912407 Exit;
23922408 end ;
2393- VerifyFlash45(RomF, 0 , StrToInt(ComboPageSize.Text), KHexEditor.Data .Size);
2409+ VerifyFlash45(RomF, 0 , StrToInt(ComboPageSize.Text), RomF .Size);
23942410 end ;
23952411
23962412
@@ -2418,10 +2434,17 @@ procedure TMainForm.ButtonVerifyClick(Sender: TObject);
24182434 end ;
24192435 TimeCounter := Time();
24202436
2437+ RomF.Clear;
2438+ if BlankCheck then
2439+ begin
2440+ for i:=1 to StrToInt(ComboChipSize.Text) do
2441+ RomF.WriteByte($FF);
2442+ end
2443+ else
2444+ KHexEditor.SaveToStream(RomF);
24212445 RomF.Position :=0 ;
2422- KHexEditor.SaveToStream(RomF);
2423- RomF.Position :=0 ;
2424- VerifyFlashI2C(RomF, KHexEditor.Data.Size, I2C_ChunkSize, I2C_DevAddr);
2446+
2447+ VerifyFlashI2C(RomF, RomF.Size, I2C_ChunkSize, I2C_DevAddr);
24252448 end ;
24262449
24272450 // Microwire
@@ -2437,9 +2460,16 @@ procedure TMainForm.ButtonVerifyClick(Sender: TObject);
24372460 EnterProgMode25(hUSBdev);
24382461 TimeCounter := Time();
24392462
2463+ RomF.Clear;
2464+ if BlankCheck then
2465+ begin
2466+ for i:=1 to StrToInt(ComboChipSize.Text) do
2467+ RomF.WriteByte($FF);
2468+ end
2469+ else
2470+ KHexEditor.SaveToStream(RomF);
24402471 RomF.Position :=0 ;
2441- KHexEditor.SaveToStream(RomF);
2442- RomF.Position :=0 ;
2472+
24432473 VerifyFlashMW(RomF, StrToInt(ComboMWBitLen.Text), 0 , StrToInt(ComboChipSize.Text));
24442474 end ;
24452475
@@ -2739,8 +2769,8 @@ procedure TMainForm.FormDestroy(Sender: TObject);
27392769
27402770procedure TMainForm.ButtonReadClick (Sender: TObject);
27412771var
2742- I2C_DevAddr: byte = 65535 ;
2743- I2C_ChunkSize: word;
2772+ I2C_DevAddr: byte;
2773+ I2C_ChunkSize: word = 65535 ;
27442774begin
27452775try
27462776 ButtonCancel.Tag := 0 ;
@@ -3013,6 +3043,11 @@ procedure TMainForm.ButtonEraseClick(Sender: TObject);
30133043end ;
30143044end ;
30153045
3046+ procedure TMainForm.BlankCheckMenuItemClick (Sender: TObject);
3047+ begin
3048+ VerifyFlash(true);
3049+ end ;
3050+
30163051procedure SaveOptions (XMLfile: TXMLDocument);
30173052var
30183053 Node, ParentNode: TDOMNode;
0 commit comments