public void UpdateTestMemForm() { textBoxTestMemSize.Text = FormPICkit2.TestMemoryWords.ToString(); if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart != 0) { textBoxBaselineConfig.Enabled = true; textBoxTestMemSize.Enabled = true; checkBoxTestMemImportExport.Enabled = true; labelNotSupported.Visible = false; } else { textBoxBaselineConfig.Enabled = false; textBoxTestMemSize.Enabled = false; checkBoxTestMemImportExport.Enabled = false; dataGridTestMemory.Enabled = false; labelNotSupported.Visible = true; } }
public void ReadTestMemory() { byte[] array = new byte[128]; PICkitFunctions.RunScript(0, 1); int bytesPerLocation = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation; int num = 128 / (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].TestMemoryRdWords * bytesPerLocation); int num2 = num * PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].TestMemoryRdWords; int num3 = 0; prepTestMem(); do { PICkitFunctions.RunScriptUploadNoLen(27, num); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 0L, 64L); PICkitFunctions.UploadDataNoLen(); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 64L, 64L); int num4 = 0; for (int i = 0; i < num2; i++) { int num5 = 0; uint num6 = array[num4 + num5++]; if (num5 < bytesPerLocation) { num6 = (uint)((int)num6 | (array[num4 + num5++] << 8)); } if (num5 < bytesPerLocation) { num6 = (uint)((int)num6 | (array[num4 + num5++] << 16)); } if (num5 < bytesPerLocation) { num6 = (uint)((int)num6 | (array[num4 + num5++] << 24)); } num4 += num5; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemShift > 0) { num6 = ((num6 >> 1) & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue); } TestMemory[num3++] = num6; } }while (num3 < FormPICkit2.TestMemoryWords); PICkitFunctions.RunScript(1, 1); }
public static bool ExportBINFile(string filePath) { try { FileStream fileStream = File.Open(filePath, FileMode.Create); int progMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes; for (int i = 0; i < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem; i++) { for (int j = 0; j < progMemHexBytes; j++) { byte value = (byte)((PICkitFunctions.DeviceBuffers.ProgramMemory[i] >> 8 * j) & 0xFF); fileStream.WriteByte(value); } } fileStream.Close(); } catch { return(false); } return(true); }
private void dataGridTestMemory_CellEndEdit(object sender, DataGridViewCellEventArgs e) { int rowIndex = e.RowIndex; int columnIndex = e.ColumnIndex; string p_value = "0x" + dataGridTestMemory[columnIndex, rowIndex].FormattedValue.ToString(); int num = Utilities.Convert_Value_To_Int(p_value); int num2 = dataGridTestMemory.ColumnCount - 1; int num3 = rowIndex * num2 + columnIndex - 1; int num4 = getTestMemAddress() * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes; int num5 = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDAddr; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2048) { num5 = num4; } TestMemory[num3] = (uint)(num & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue); if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords > 0 && num5 >= num4 && num5 < num4 + FormPICkit2.TestMemoryWords) { int num6 = (num5 - num4) / (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation; if (num3 >= num6 && num3 < num6 + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords) { PICkitFunctions.DeviceBuffers.UserIDs[num3 - num6] = (uint)(num & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue); if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2097152) { PICkitFunctions.DeviceBuffers.UserIDs[num3 - num6] &= 255u; } } } if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords > 0 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr >= num4 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr < num4 + FormPICkit2.TestMemoryWords) { int num7 = (int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr - num4) / (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation; if (num3 >= num7 && num3 < num7 + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords) { PICkitFunctions.DeviceBuffers.ConfigWords[num3 - num7] = (uint)(num & PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[num3 - num7]); } } testMemJustEdited = true; UpdateMainFormGUI(); }
public static Constants.FileRead ImportBINFile(string filePath) { try { FileInfo fileInfo = new FileInfo(filePath); LastWriteTime = fileInfo.LastWriteTime; FileStream fileStream = File.OpenRead(filePath); int progMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes; int num = 0; int num2 = 0; byte[] array = new byte[1]; while (fileStream.Read(array, 0, 1) > 0) { if (num >= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem) { return(Constants.FileRead.largemem); } uint num3 = (uint)(-256 | array[0]); for (int i = 0; i < num2; i++) { num3 <<= 8; num3 |= 0xFF; } PICkitFunctions.DeviceBuffers.ProgramMemory[num] &= num3; if (++num2 >= progMemHexBytes) { num++; num2 = 0; } } fileStream.Close(); } catch { return(Constants.FileRead.failed); } return(Constants.FileRead.success); }
private void progMemEdit(object sender, DataGridViewCellEventArgs e) { int rowIndex = e.RowIndex; int columnIndex = e.ColumnIndex; string p_value = "0x" + dataGridProgramMemory[columnIndex, rowIndex].FormattedValue.ToString(); int num = 0; try { num = Utilities.Convert_Value_To_Int(p_value); } catch { num = 0; } int num2 = dataGridProgramMemory.ColumnCount - 1; if (comboBoxProgMemView.SelectedIndex >= 1) { num2 /= 2; } uint num3 = 255u; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 65535) { num3 = 65535u; } else if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue == 4095) { num3 = 4095u; } PICkitFunctions.DeviceBuffers.EEPromMemory[rowIndex * num2 + columnIndex - 1] = (uint)(num & num3); TellMainFormProgMemEdited(); progMemJustEdited = true; TellMainFormUpdateGUI(); }
public static Constants.FileRead ImportHexFile(string filePath, bool progMem, bool eeMem) { if (filePath.Length > 4 && filePath.Substring(filePath.Length - 4).ToUpper() == ".BIN" && PICkitFunctions.FamilyIsEEPROM()) { return(ImportBINFile(filePath)); } try { FileInfo fileInfo = new FileInfo(filePath); LastWriteTime = fileInfo.LastWriteTime; TextReader textReader = fileInfo.OpenText(); int progMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes; int eEMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemHexBytes; uint eEAddr = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEAddr; int num = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem * progMemHexBytes; int num2 = 0; bool flag = false; bool flag2 = true; bool flag3 = false; int userIDWords = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords; uint num3 = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDAddr; if (num3 == 0) { num3 = uint.MaxValue; } int userIDHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].UserIDHexBytes; int configWords = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords; bool[] array = new bool[configWords]; for (int i = 0; i < configWords; i++) { PICkitFunctions.DeviceBuffers.ConfigWords[i] = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue; if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[i] == 0) { array[i] = true; } else { array[i] = false; } } int num4 = progMemHexBytes; uint num5 = 0u; uint num6 = 0u; uint bootFlash = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215) { num5 = 486539264u; num6 = 532676608u; num -= (int)bootFlash * progMemHexBytes; num += (int)num5; num4 = 2; } uint num7 = (uint)((int)num6 + (int)bootFlash * progMemHexBytes); int num8 = (int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem - bootFlash); for (string text = textReader.ReadLine(); text != null; text = textReader.ReadLine()) { if (text[0] == ':' && text.Length >= 11) { int num9 = int.Parse(text.Substring(1, 2), NumberStyles.HexNumber); int num10 = num2 + int.Parse(text.Substring(3, 4), NumberStyles.HexNumber); int num11 = int.Parse(text.Substring(7, 2), NumberStyles.HexNumber); if (num11 == 0) { if (text.Length >= 11 + 2 * num9) { for (int j = 0; j < num9; j++) { int num12 = num10 + j; int num13 = (num12 - (int)num5) / progMemHexBytes; int num14 = num12 % progMemHexBytes; uint num15 = (uint)(-256 | (int)uint.Parse(text.Substring(9 + 2 * j, 2), NumberStyles.HexNumber)); for (int k = 0; k < num14; k++) { num15 <<= 8; num15 |= 0xFF; } flag2 = true; if (num12 >= num5 && num12 < num) { if (progMem) { PICkitFunctions.DeviceBuffers.ProgramMemory[num13] &= num15; } flag2 = false; } if (bootFlash != 0 && num12 >= num6 && num12 < num7) { num13 = (int)(num8 + (num12 - num6) / progMemHexBytes); if (progMem) { PICkitFunctions.DeviceBuffers.ProgramMemory[num13] &= num15; } flag2 = false; } if (num12 >= eEAddr && eEAddr != 0 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem > 0) { int num16 = (int)(num12 - eEAddr) / eEMemHexBytes; if (num16 < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem) { flag2 = false; if (eeMem) { if (eEMemHexBytes == progMemHexBytes) { PICkitFunctions.DeviceBuffers.EEPromMemory[num16] &= num15; } else { int num17 = num14 / eEMemHexBytes * eEMemHexBytes; for (int l = 0; l < num17; l++) { num15 >>= 8; } PICkitFunctions.DeviceBuffers.EEPromMemory[num16] &= num15; } } } } else if (num12 >= eEAddr && eEAddr != 0 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem == 0) { flag2 = false; } if (num12 >= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr && configWords > 0) { int num18 = (num12 - (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr) / num4; if (num4 != progMemHexBytes && num14 > 1) { num15 = ((num15 >> 16) & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue); } if (num18 < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords) { flag2 = false; flag = true; array[num18] = true; if (progMem) { PICkitFunctions.DeviceBuffers.ConfigWords[num18] &= num15; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue == 4095) { PICkitFunctions.DeviceBuffers.ConfigWords[num18] |= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[5]; } if (num12 < num) { uint num19 = 0u; num19 = (uint)((PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue != 65535) ? (0xFF0000 | (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigBlank[num18] & ~PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[num18])) : 61440); PICkitFunctions.DeviceBuffers.ProgramMemory[num13] &= (num15 & PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigBlank[num18]); PICkitFunctions.DeviceBuffers.ProgramMemory[num13] |= num19; } } } } if (userIDWords > 0 && num12 >= num3) { int num20 = (int)(num12 - num3) / userIDHexBytes; if (num20 < userIDWords) { flag2 = false; if (progMem) { if (userIDHexBytes == progMemHexBytes) { PICkitFunctions.DeviceBuffers.UserIDs[num20] &= num15; } else { int num21 = num14 / userIDHexBytes * userIDHexBytes; for (int m = 0; m < num21; m++) { num15 >>= 8; } PICkitFunctions.DeviceBuffers.UserIDs[num20] &= num15; } } } } if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].IgnoreBytes > 0 && num12 >= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].IgnoreAddress && num12 < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].IgnoreAddress + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].IgnoreBytes) { flag2 = false; } if (FormPICkit2.TestMemoryEnabled && FormPICkit2.TestMemoryOpen && FormPICkit2.formTestMem.HexImportExportTM() && num12 >= PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart && PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart != 0 && FormPICkit2.TestMemoryWords > 0) { int num22 = (int)(num12 - PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart) / progMemHexBytes; if (num22 < FormPICkit2.TestMemoryWords) { flag2 = false; FormTestMemory.TestMemory[num22] &= num15; } } } } if (flag2) { flag3 = true; } } if (num11 == 2 || num11 == 4) { if (text.Length >= 11 + 2 * num9) { num2 = int.Parse(text.Substring(9, 4), NumberStyles.HexNumber); } num2 = ((num11 != 2) ? (num2 << 16) : (num2 << 4)); } if (num11 == 1 || fileInfo.Extension.ToUpper() == ".NUM") { break; } } } textReader.Close(); if (configWords > 0) { if (!flag) { return(Constants.FileRead.noconfig); } for (int n = 0; n < configWords; n++) { if (!array[n]) { if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue == 16777215 && configWords > 7) { PICkitFunctions.DeviceBuffers.ConfigWords[7] &= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[7]; } return(Constants.FileRead.partialcfg); } } } if (flag3) { return(Constants.FileRead.largemem); } return(Constants.FileRead.success); } catch { return(Constants.FileRead.failed); } }
private void Form1_Load(object sender, EventArgs e) { this.InitializeComponent(); float num = this.loadINI(); this.initializeGUI(); if (this.loadDeviceFile()) { if (this.toolStripMenuItemManualSelect.Checked) { this.ManualAutoSelectToggle(false); } this.buildDeviceMenu(); if (!this.allowDataEdits) { this.dataGridProgramMemory.ReadOnly = true; this.dataGridViewEEPROM.ReadOnly = true; } PICkitFunctions.ResetBuffers(); this.testConnected = this.checkForTest(); if (this.testConnected) { this.testConnected = this.testMenuBuild(); } this.uartWindow.VddCallback = new DelegateVddCallback(this.SetVddState); if (!this.detectPICkit2(true, true)) { if (this.bootLoad) { return; } if (this.oldFirmware) { FormPICusb.TestMemoryOpen = false; this.timerDLFW.Enabled = true; return; } Thread.Sleep(3000); if (!this.detectPICkit2(true, true)) { return; } } this.partialEnableGUIControls(); PICkitFunctions.ExitUARTMode(); PICkitFunctions.VddOff(); PICkitFunctions.SetVDDVoltage(3.3f, 0.85f); if (this.autoDetectToolStripMenuItem.Checked) { this.lookForPoweredTarget(false); } if (this.searchOnStartup && PICkitFunctions.DetectDevice(16777215, true, this.chkBoxVddOn.Checked)) { this.setGUIVoltageLimits(true); PICkitFunctions.SetVDDVoltage((float)this.numUpDnVDD.Value, 0.85f); this.displayStatusWindow.Text = this.displayStatusWindow.Text + "\nPIC Device Found."; this.fullEnableGUIControls(); } else { for (int i = 0; i < PICkitFunctions.DevFile.Info.NumberFamilies; i++) { if (PICkitFunctions.DevFile.Families[i].FamilyName == this.lastFamily) { PICkitFunctions.SetActiveFamily(i); if (!PICkitFunctions.DevFile.Families[i].PartDetect) { this.buildDeviceSelectDropDown(i); this.comboBoxSelectPart.Visible = true; this.comboBoxSelectPart.SelectedIndex = 0; this.displayDevice.Visible = true; } } } for (int j = 1; j < PICkitFunctions.DevFile.Info.NumberParts; j++) { if ((int)PICkitFunctions.DevFile.PartsList[j].Family == PICkitFunctions.GetActiveFamily()) { PICkitFunctions.DevFile.PartsList[0].VddMax = PICkitFunctions.DevFile.PartsList[j].VddMax; PICkitFunctions.DevFile.PartsList[0].VddMin = PICkitFunctions.DevFile.PartsList[j].VddMin; break; } } this.setGUIVoltageLimits(true); } if (num != 0f && PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].FamilyName == this.lastFamily && !FormPICusb.selfPoweredTarget) { if (num > (float)this.numUpDnVDD.Maximum) { num = (float)this.numUpDnVDD.Maximum; } if (num < (float)this.numUpDnVDD.Minimum) { num = (float)this.numUpDnVDD.Minimum; } this.numUpDnVDD.Value = (decimal)num; PICkitFunctions.SetVDDVoltage((float)this.numUpDnVDD.Value, 0.85f); } this.checkForPowerErrors(); if (FormPICusb.TestMemoryEnabled) { this.toolStripMenuItemTestMemory.Visible = true; if (FormPICusb.TestMemoryOpen) { this.openTestMemory(); } } if (!PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].PartDetect) { this.disableGUIControls(); } this.updateGUI(true); } }
private void updateDisplay() { int num = dataGridProgramMemory.RowCount - 1; int num2 = dataGridProgramMemory.ColumnCount - 1; int eEMemAddressIncrement = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemAddressIncrement; if (comboBoxProgMemView.SelectedIndex > 0) { num2 /= 2; } int i = 0; int num3 = 0; int num4 = 0; for (; i < num; i++) { for (int j = 1; j <= num2; j++) { dataGridProgramMemory[j, i].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.EEPromMemory[num3++]); dataGridProgramMemory[j, i].ToolTipText = string.Format(addrFormat, num4); num4 += eEMemAddressIncrement; } } int num5 = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem % num2; if (num5 == 0) { num5 = num2; } int num6 = num * num2; for (int k = 1; k <= num2; k++) { if (k <= num5) { dataGridProgramMemory[k, num].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.EEPromMemory[num6++]); dataGridProgramMemory[k, num].ToolTipText = string.Format(addrFormat, num6 * eEMemAddressIncrement); } else { dataGridProgramMemory[k, num].Value = ""; dataGridProgramMemory[k, num].ToolTipText = ""; dataGridProgramMemory[k, num].ReadOnly = true; } } if (comboBoxProgMemView.SelectedIndex > 0) { for (int l = num2 + 1; l <= 2 * num2; l++) { dataGridProgramMemory.Columns[l].ReadOnly = true; } if (comboBoxProgMemView.SelectedIndex == 1) { int m = 0; int num7 = 0; int num8 = 0; for (; m < num; m++) { for (int n = num2 + 1; n <= 2 * num2; n++) { dataGridProgramMemory[n, m].Value = Utilities.ConvertIntASCII((int)PICkitFunctions.DeviceBuffers.EEPromMemory[num7++], asciiBytes); dataGridProgramMemory[n, m].ToolTipText = string.Format(addrFormat, num8); num8 += eEMemAddressIncrement; } } num6 = num * num2; for (int num9 = num2 + 1; num9 <= 2 * num2; num9++) { if (num9 <= num2 + num5) { dataGridProgramMemory[num9, num].Value = Utilities.ConvertIntASCII((int)PICkitFunctions.DeviceBuffers.EEPromMemory[num6++], asciiBytes); dataGridProgramMemory[num9, num].ToolTipText = string.Format(addrFormat, num6 * eEMemAddressIncrement); } else { dataGridProgramMemory[num9, num].Value = ""; dataGridProgramMemory[num9, num].ToolTipText = ""; dataGridProgramMemory[num9, num].ReadOnly = true; } } } else { int num10 = 0; int num11 = 0; int num12 = 0; for (; num10 < num; num10++) { for (int num13 = num2 + 1; num13 <= 2 * num2; num13++) { dataGridProgramMemory[num13, num10].Value = Utilities.ConvertIntASCIIReverse((int)PICkitFunctions.DeviceBuffers.EEPromMemory[num11++], asciiBytes); dataGridProgramMemory[num13, num10].ToolTipText = string.Format(addrFormat, num12); num12 += eEMemAddressIncrement; } } num6 = num * num2; for (int num14 = num2 + 1; num14 <= 2 * num2; num14++) { if (num14 <= num2 + num5) { dataGridProgramMemory[num14, num].Value = Utilities.ConvertIntASCIIReverse((int)PICkitFunctions.DeviceBuffers.EEPromMemory[num6++], asciiBytes); dataGridProgramMemory[num14, num].ToolTipText = string.Format(addrFormat, num6 * eEMemAddressIncrement); } else { dataGridProgramMemory[num14, num].Value = ""; dataGridProgramMemory[num14, num].ToolTipText = ""; dataGridProgramMemory[num14, num].ReadOnly = true; } } } } if (dataGridProgramMemory.FirstDisplayedCell != null && !progMemJustEdited) { int rowIndex = dataGridProgramMemory.FirstDisplayedCell.RowIndex; dataGridProgramMemory.MultiSelect = false; dataGridProgramMemory[0, rowIndex].Selected = true; dataGridProgramMemory[0, rowIndex].Selected = false; dataGridProgramMemory.MultiSelect = true; } else if (dataGridProgramMemory.FirstDisplayedCell == null) { dataGridProgramMemory.MultiSelect = false; dataGridProgramMemory[0, 0].Selected = true; dataGridProgramMemory[0, 0].Selected = false; dataGridProgramMemory.MultiSelect = true; } progMemJustEdited = false; }
private void prepTestMem() { if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 16384 || PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 65536) { PICkitFunctions.SendScript(new byte[7] { 238, 6, 0, 242, 0, 242, 0 }); } else if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2048) { int num = getTestMemAddress() / 4 - 1; PICkitFunctions.SendScript(new byte[18] { 210, (byte)(num & 0xFF), 210, (byte)((num >> 8) & 0xFF), 238, 6, 6, 238, 6, 6, 238, 6, 6, 238, 6, 6, 221, 12 }); } else if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2097152) { PICkitFunctions.SendScript(new byte[18] { 218, 32, 14, 218, 248, 110, 218, 0, 14, 218, 247, 110, 218, 0, 14, 218, 246, 110 }); } }
private void updateDisplay() { int num = dataGridProgramMemory.RowCount - 1; int num2 = dataGridProgramMemory.ColumnCount - 1; int addressIncrement = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement; uint blankValue = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue; if (comboBoxProgMemView.SelectedIndex > 0) { num2 /= 2; } int programMem = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem; int bootFlash = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash; programMem -= bootFlash; programMem /= num2; int num3 = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem % num2; if (num3 == 0) { num3 = num2; } int num4 = num * num2; if (blankValue == uint.MaxValue) { int num5 = 0; for (int i = 1; i <= programMem; i++) { for (int j = 0; j < num2; j++) { dataGridProgramMemory[j + 1, i].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num5++]); } } for (int k = programMem + 2; k < dataGridProgramMemory.RowCount - 1; k++) { for (int l = 0; l < num2; l++) { dataGridProgramMemory[l + 1, k].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num5++]); } } num3 = bootFlash % num2; if (num3 == 0) { num3 = num2; } for (int m = 1; m <= num2; m++) { if (m <= num3) { dataGridProgramMemory[m, num].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num5++]); continue; } dataGridProgramMemory[m, num].Value = ""; dataGridProgramMemory[m, num].ReadOnly = true; } } else { int n = 0; int num6 = 0; int num7 = 0; for (; n < num; n++) { for (int num8 = 1; num8 <= num2; num8++) { dataGridProgramMemory[num8, n].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num6++]); dataGridProgramMemory[num8, n].ToolTipText = string.Format(addrFormat, num7); num7 += addressIncrement; } } for (int num9 = 1; num9 <= num2; num9++) { if (num9 <= num3) { dataGridProgramMemory[num9, num].Value = string.Format(dataFormat, PICkitFunctions.DeviceBuffers.ProgramMemory[num4]); dataGridProgramMemory[num9, num].ToolTipText = string.Format(addrFormat, num4++ *addressIncrement); } else { dataGridProgramMemory[num9, num].Value = ""; dataGridProgramMemory[num9, num].ToolTipText = ""; dataGridProgramMemory[num9, num].ReadOnly = true; } } } if (comboBoxProgMemView.SelectedIndex > 0) { for (int num10 = num2 + 1; num10 <= 2 * num2; num10++) { dataGridProgramMemory.Columns[num10].ReadOnly = true; } if (comboBoxProgMemView.SelectedIndex == 1) { int num11 = 0; int num12 = 0; int num13 = 0; for (; num11 < num; num11++) { for (int num14 = num2 + 1; num14 <= 2 * num2; num14++) { dataGridProgramMemory[num14, num11].Value = Utilities.ConvertIntASCII((int)PICkitFunctions.DeviceBuffers.ProgramMemory[num12++], asciiBytes); dataGridProgramMemory[num14, num11].ToolTipText = string.Format(addrFormat, num13); num13 += addressIncrement; } } num4 = num * num2; for (int num15 = num2 + 1; num15 <= 2 * num2; num15++) { if (num15 <= num2 + num3) { dataGridProgramMemory[num15, num].Value = Utilities.ConvertIntASCII((int)PICkitFunctions.DeviceBuffers.ProgramMemory[num4++], asciiBytes); dataGridProgramMemory[num15, num].ToolTipText = string.Format(addrFormat, num4 * addressIncrement); } else { dataGridProgramMemory[num15, num].Value = ""; dataGridProgramMemory[num15, num].ToolTipText = ""; dataGridProgramMemory[num15, num].ReadOnly = true; } } } else { int num16 = 0; int num17 = 0; int num18 = 0; for (; num16 < num; num16++) { for (int num19 = num2 + 1; num19 <= 2 * num2; num19++) { dataGridProgramMemory[num19, num16].Value = Utilities.ConvertIntASCIIReverse((int)PICkitFunctions.DeviceBuffers.ProgramMemory[num17++], asciiBytes); dataGridProgramMemory[num19, num16].ToolTipText = string.Format(addrFormat, num18); num18 += addressIncrement; } } num4 = num * num2; for (int num20 = num2 + 1; num20 <= 2 * num2; num20++) { if (num20 <= num2 + num3) { dataGridProgramMemory[num20, num].Value = Utilities.ConvertIntASCIIReverse((int)PICkitFunctions.DeviceBuffers.ProgramMemory[num4++], asciiBytes); dataGridProgramMemory[num20, num].ToolTipText = string.Format(addrFormat, num4 * addressIncrement); } else { dataGridProgramMemory[num20, num].Value = ""; dataGridProgramMemory[num20, num].ToolTipText = ""; dataGridProgramMemory[num20, num].ReadOnly = true; } } } } if (dataGridProgramMemory.FirstDisplayedCell != null && !progMemJustEdited) { int rowIndex = dataGridProgramMemory.FirstDisplayedCell.RowIndex; dataGridProgramMemory.MultiSelect = false; dataGridProgramMemory[0, rowIndex].Selected = true; dataGridProgramMemory[0, rowIndex].Selected = false; dataGridProgramMemory.MultiSelect = true; } else if (dataGridProgramMemory.FirstDisplayedCell == null && dataGridProgramMemory.RowCount > 0) { dataGridProgramMemory.MultiSelect = false; dataGridProgramMemory[0, 0].Selected = true; dataGridProgramMemory[0, 0].Selected = false; dataGridProgramMemory.MultiSelect = true; } progMemJustEdited = false; }
public static bool PE24FBlankCheck(string saveText) { if (!PE_DownloadAndConnect()) { return(false); } UpdateStatusWinText(saveText); int num = (int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem - PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords); byte[] array = new byte[128]; _ = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation; int num2 = 32; int num3 = 0; int num4 = 0; int num5 = 0; byte[] array2 = new byte[64]; ResetStatusBar((int)((long)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem / (long)num2)); uint num6 = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue; do { num5 = 0; array2[num5++] = 166; array2[num5++] = 0; array2[num5++] = 243; array2[num5++] = 0; array2[num5++] = 242; array2[num5++] = 4; array2[num5++] = 242; array2[num5++] = 32; array2[num5++] = 242; array2[num5++] = 0; array2[num5++] = 242; array2[num5++] = BitReverseTable[num2]; array2[num5++] = 242; array2[num5++] = 0; array2[num5++] = 242; array2[num5++] = BitReverseTable[(num3 >> 15) & 0xFF]; array2[num5++] = 242; array2[num5++] = BitReverseTable[(num3 >> 7) & 0xFF]; array2[num5++] = 242; array2[num5++] = BitReverseTable[(num3 << 1) & 0xFF]; array2[num5++] = 243; array2[num5++] = 2; array2[num5++] = 231; array2[num5++] = 5; array2[num5++] = 239; array2[num5++] = 239; array2[num5++] = 239; array2[num5++] = 239; array2[num5++] = 240; array2[num5++] = 240; array2[num5++] = 240; array2[num5++] = 233; array2[num5++] = 3; array2[num5++] = 31; array2[num5++] = 172; array2[num5++] = 172; array2[1] = (byte)(num5 - 4); for (; num5 < 64; num5++) { array2[num5] = 173; } PICkitFunctions.writeUSB(array2); PICkitFunctions.GetUpload(); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 0L, 64L); PICkitFunctions.GetUpload(); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 64L, 64L); num4 = 0; for (int i = 0; i < num2; i += 2) { uint num7 = (uint)(BitReverseTable[array[num4++]] << 8); num7 |= BitReverseTable[array[num4++]]; uint num8 = (uint)(BitReverseTable[array[num4++]] << 16); num7 = (uint)((int)num7 | (BitReverseTable[array[num4++]] << 16)); num8 = (uint)((int)num8 | (BitReverseTable[array[num4++]] << 8)); num8 |= BitReverseTable[array[num4++]]; if (num3 >= num) { num6 = (uint)(0xFF0000 | PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigBlank[num3 - num]); } if (num6 != num7) { string str = "Program Memory is not blank starting at address\n"; str += $"0x{num3 * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement:X6}"; UpdateStatusWinText(str); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(false); } num3++; if (num3 >= num) { num6 = (uint)(0xFF0000 | PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigBlank[num3 - num]); } if (num6 != num8) { string str2 = "Program Memory is not blank starting at address\n"; str2 += $"0x{num3 * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement:X6}"; UpdateStatusWinText(str2); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(false); } num3++; if (num3 >= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem) { break; } } StepStatusBar(); }while (num3 < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(true); }
private void buttonWriteCalWords_Click(object sender, EventArgs e) { uint[] array = new uint[PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].CalibrationWords]; int num = getTestMemAddress() * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes; int num2 = (int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr - num) / (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation; int num3 = num2 + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords; for (int i = 0; i < array.Length; i++) { array[i] = TestMemory[num3 + i]; } CallMainFormEraseWrCal(array); }
private int getTestMemAddress() { if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2048) { int num = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem; if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem > 0) { num += PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem; } return(num); } return((int)(PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart / PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes)); }
public void UpdateTestMemoryGrid() { bool flag = false; int num = 0; int num2 = getTestMemAddress() * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes; int num3 = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDAddr; if (PICkitFunctions.ActivePart != lastPart || PICkitFunctions.GetActiveFamily() != lastFamily) { ClearTestMemory(); lastPart = PICkitFunctions.ActivePart; lastFamily = PICkitFunctions.GetActiveFamily(); } if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2048) { num3 = num2; } if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords > 0 && num3 >= num2 && num3 < num2 + FormPICkit2.TestMemoryWords) { flag = true; num = (num3 - num2) / (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation; } bool flag2 = false; int num4 = 0; if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords > 0 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr >= num2 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr < num2 + FormPICkit2.TestMemoryWords) { flag2 = true; num4 = (int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr - num2) / (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation; } int num5 = 9; dataGridTestMemory.Columns[0].Width = (int)(51f * FormPICkit2.ScalefactW); int num6 = 8; int width = (int)(35f * FormPICkit2.ScalefactW); int num7 = getTestMemAddress(); if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2097152) { num7 *= 2; } if (dataGridTestMemory.ColumnCount != num5) { dataGridTestMemory.Rows.Clear(); dataGridTestMemory.ColumnCount = num5; } for (int i = 1; i < dataGridTestMemory.ColumnCount; i++) { dataGridTestMemory.Columns[i].Width = width; } int addressIncrement = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement; int num8 = num6; int num9 = FormPICkit2.TestMemoryWords / num8; int num10 = addressIncrement * num6; if (dataGridTestMemory.RowCount != num9) { dataGridTestMemory.Rows.Clear(); dataGridTestMemory.RowCount = num9; } int num11 = dataGridTestMemory.RowCount * num10 - 1; string format = "{0:X3}"; if (num11 > 65535) { format = "{0:X5}"; } else if (num11 > 4095) { format = "{0:X4}"; } int j = 0; int num12 = 0; for (; j < dataGridTestMemory.RowCount; j++) { dataGridTestMemory[0, j].Value = string.Format(format, num7 + num12); dataGridTestMemory[0, j].Style.BackColor = SystemColors.ControlLight; num12 += num10; } string format2 = "{0:X3}"; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 4095) { format2 = "{0:X4}"; } if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 65535) { format2 = "{0:X6}"; } for (int k = 0; k < num8; k++) { dataGridTestMemory.Columns[k + 1].ReadOnly = true; } int l = 0; int num13 = 0; for (; l < dataGridTestMemory.RowCount; l++) { for (int m = 0; m < num8; m++) { if (flag && num13 >= num && num13 < num + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords) { TestMemory[num13] = PICkitFunctions.DeviceBuffers.UserIDs[num13 - num]; dataGridTestMemory[m + 1, l].ToolTipText = string.Format(format, num7 + num13 * addressIncrement); dataGridTestMemory[m + 1, l].Value = string.Format(format2, PICkitFunctions.DeviceBuffers.UserIDs[num13++ - num]); dataGridTestMemory[m + 1, l].Style.BackColor = Color.LightSteelBlue; dataGridTestMemory[m + 1, l].ReadOnly = false; } else if (flag2 && num13 >= num4 && num13 < num4 + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords) { TestMemory[num13] = PICkitFunctions.DeviceBuffers.ConfigWords[num13 - num4]; dataGridTestMemory[m + 1, l].ToolTipText = string.Format(format, num7 + num13 * addressIncrement); dataGridTestMemory[m + 1, l].Value = string.Format(format2, PICkitFunctions.DeviceBuffers.ConfigWords[num13++ - num4]); dataGridTestMemory[m + 1, l].Style.BackColor = Color.LightSalmon; dataGridTestMemory[m + 1, l].ReadOnly = false; } else if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].CalibrationWords > 0 && num13 >= num4 + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords && num13 < num4 + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords + PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].CalibrationWords) { dataGridTestMemory[m + 1, l].ToolTipText = string.Format(format, num7 + num13 * addressIncrement); dataGridTestMemory[m + 1, l].Value = string.Format(format2, TestMemory[num13++]); dataGridTestMemory[m + 1, l].Style.BackColor = Color.Gold; dataGridTestMemory[m + 1, l].ReadOnly = false; } else { dataGridTestMemory[m + 1, l].ToolTipText = string.Format(format, num7 + num13 * addressIncrement); dataGridTestMemory[m + 1, l].Value = string.Format(format2, TestMemory[num13++]); dataGridTestMemory[m + 1, l].Style.BackColor = SystemColors.Window; } } } if (dataGridTestMemory.FirstDisplayedCell != null && !testMemJustEdited) { int rowIndex = dataGridTestMemory.FirstDisplayedCell.RowIndex; dataGridTestMemory[0, rowIndex].Selected = true; dataGridTestMemory[0, rowIndex].Selected = false; } else if (dataGridTestMemory.FirstDisplayedCell == null) { dataGridTestMemory[0, 0].Selected = true; dataGridTestMemory[0, 0].Selected = false; } testMemJustEdited = false; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 2048) { labelBLConfig.Visible = true; textBoxBaselineConfig.Visible = true; textBoxBaselineConfig.Text = $"{PICkitFunctions.DeviceBuffers.ConfigWords[0]:X4}"; } else { labelBLConfig.Visible = false; textBoxBaselineConfig.Visible = false; } if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart == 16384) { labelCalWarning.Visible = true; buttonWriteCalWords.Visible = true; buttonWriteCalWords.Enabled = (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].CalibrationWords > 0); } else { labelCalWarning.Visible = false; buttonWriteCalWords.Visible = false; } }
public static bool ExportHexFile(string filePath, bool progMem, bool eeMem) { if (filePath.Length > 4 && filePath.Substring(filePath.Length - 4).ToUpper() == ".BIN" && PICkitFunctions.FamilyIsEEPROM()) { return(ExportBINFile(filePath)); } StreamWriter streamWriter = new StreamWriter(filePath); if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215) { streamWriter.WriteLine(":020000041D00DD"); } else { streamWriter.WriteLine(":020000040000FA"); } int num = 0; int num2 = 0; int num3 = PICkitFunctions.DeviceBuffers.ProgramMemory.Length; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215) { num = 7424; num2 = 0; num3 -= (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash; } int num4 = 0; int progMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes; int num5 = 16 / progMemHexBytes; if (progMem) { do { string text = $":10{num2:X4}00"; for (int i = 0; i < num5; i++) { string text2 = "00000000"; if (num4 + i < PICkitFunctions.DeviceBuffers.ProgramMemory.Length) { text2 = $"{PICkitFunctions.DeviceBuffers.ProgramMemory[num4 + i]:X8}"; } for (int j = 0; j < progMemHexBytes; j++) { text += text2.Substring(6 - 2 * j, 2); } } text += $"{computeChecksum(text):X2}"; streamWriter.WriteLine(text); num2 += 16; num4 += num5; if (num2 > 65535 && num4 < PICkitFunctions.DeviceBuffers.ProgramMemory.Length) { num += num2 >> 16; num2 &= 0xFFFF; string text3 = $":02000004{num:X4}"; text3 += $"{computeChecksum(text3):X2}"; streamWriter.WriteLine(text3); } }while (num4 < num3); } if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash != 0 && PICkitFunctions.FamilyIsPIC32()) { streamWriter.WriteLine(":020000041FC01B"); num4 = num3; num3 = PICkitFunctions.DeviceBuffers.ProgramMemory.Length; num = 8128; num2 = 0; if (progMem) { do { string text4 = $":10{num2:X4}00"; for (int k = 0; k < num5; k++) { string text5 = $"{PICkitFunctions.DeviceBuffers.ProgramMemory[num4 + k]:X8}"; for (int l = 0; l < progMemHexBytes; l++) { text4 += text5.Substring(6 - 2 * l, 2); } } text4 += $"{computeChecksum(text4):X2}"; streamWriter.WriteLine(text4); num2 += 16; num4 += num5; if (num2 > 65535 && num4 < PICkitFunctions.DeviceBuffers.ProgramMemory.Length) { num += num2 >> 16; num2 &= 0xFFFF; string text6 = $":02000004{num:X4}"; text6 += $"{computeChecksum(text6):X2}"; streamWriter.WriteLine(text6); } }while (num4 < num3); } } if (eeMem) { int eEMem = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem; num4 = 0; if (eEMem > 0) { uint eEAddr = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEAddr; if (((int)eEAddr & -65536) != 0) { string text7 = $":02000004{eEAddr >> 16:X4}"; text7 += $"{computeChecksum(text7):X2}"; streamWriter.WriteLine(text7); } num2 = (int)(eEAddr & 0xFFFF); int eEMemHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemHexBytes; num5 = 16 / eEMemHexBytes; do { string text8 = $":10{num2:X4}00"; for (int m = 0; m < num5; m++) { string text9 = $"{PICkitFunctions.DeviceBuffers.EEPromMemory[num4 + m]:X8}"; for (int n = 0; n < eEMemHexBytes; n++) { text8 += text9.Substring(6 - 2 * n, 2); } } text8 += $"{computeChecksum(text8):X2}"; streamWriter.WriteLine(text8); num2 += 16; num4 += num5; }while (num4 < PICkitFunctions.DeviceBuffers.EEPromMemory.Length); } } if (progMem) { int num6 = progMemHexBytes; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215) { num6 = 2; } int configWords = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords; if (configWords > 0 && PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr > PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem * progMemHexBytes) { uint configAddr = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigAddr; if (((int)configAddr & -65536) != 0) { string text10 = $":02000004{configAddr >> 16:X4}"; text10 += $"{computeChecksum(text10):X2}"; streamWriter.WriteLine(text10); } num2 = (int)(configAddr & 0xFFFF); int num7 = 0; for (int num8 = 0; num8 < (configWords * num6 - 1) / 16 + 1; num8++) { int num9 = configWords - num7; if (num9 >= 16 / num6) { num9 = 16 / num6; } string text11 = $":{num9 * num6:X2}{num2:X4}00"; num2 += num9 * num6; for (int num10 = 0; num10 < num9; num10++) { uint num11 = PICkitFunctions.DeviceBuffers.ConfigWords[num7 + num10]; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue > 16777215) { num11 = (uint)((int)num11 | ~PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigMasks[num7 + num10]); num11 &= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigBlank[num7 + num10]; } string text12 = $"{num11:X8}"; for (int num12 = 0; num12 < num6; num12++) { text11 += text12.Substring(8 - (num12 + 1) * 2, 2); } } text11 += $"{computeChecksum(text11):X2}"; streamWriter.WriteLine(text11); num7 += num9; } } } if (progMem) { int userIDWords = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDWords; num4 = 0; if (userIDWords > 0) { uint userIDAddr = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].UserIDAddr; if (((int)userIDAddr & -65536) != 0) { string text13 = $":02000004{userIDAddr >> 16:X4}"; text13 += $"{computeChecksum(text13):X2}"; streamWriter.WriteLine(text13); } num2 = (int)(userIDAddr & 0xFFFF); int userIDHexBytes = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].UserIDHexBytes; num5 = 16 / userIDHexBytes; do { int num13 = (userIDWords - num4) * userIDHexBytes; string text14; if (num13 < 16) { text14 = $":{num13:X2}{num2:X4}00"; num5 = userIDWords - num4; } else { text14 = $":10{num2:X4}00"; } for (int num14 = 0; num14 < num5; num14++) { string text15 = $"{PICkitFunctions.DeviceBuffers.UserIDs[num4 + num14]:X8}"; for (int num15 = 0; num15 < userIDHexBytes; num15++) { text14 += text15.Substring(6 - 2 * num15, 2); } } text14 += $"{computeChecksum(text14):X2}"; streamWriter.WriteLine(text14); num2 += 16; num4 += num5; }while (num4 < PICkitFunctions.DeviceBuffers.UserIDs.Length); } } if (FormPICkit2.TestMemoryEnabled && FormPICkit2.TestMemoryOpen && FormPICkit2.formTestMem.HexImportExportTM()) { int testMemoryWords = FormPICkit2.TestMemoryWords; num4 = 0; if (testMemoryWords > 0) { uint testMemoryStart = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].TestMemoryStart; if (((int)testMemoryStart & -65536) != 0) { string text16 = $":02000004{testMemoryStart >> 16:X4}"; text16 += $"{computeChecksum(text16):X2}"; streamWriter.WriteLine(text16); } num2 = (int)(testMemoryStart & 0xFFFF); int progMemHexBytes2 = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemHexBytes; num5 = 16 / progMemHexBytes2; do { string text17 = $":10{num2:X4}00"; for (int num16 = 0; num16 < num5; num16++) { string text18 = $"{FormTestMemory.TestMemory[num4 + num16]:X8}"; for (int num17 = 0; num17 < progMemHexBytes2; num17++) { text17 += text18.Substring(6 - 2 * num17, 2); } } text17 += $"{computeChecksum(text17):X2}"; if (num2 != (int)(testMemoryStart & 0xFFFF) || PICkitFunctions.GetActiveFamily() != 3) { streamWriter.WriteLine(text17); } num2 += 16; num4 += num5; }while (num4 < FormPICkit2.TestMemoryWords); } } streamWriter.WriteLine(":00000001FF"); streamWriter.Close(); return(true); }
public static bool PE24FRead(string saveText) { if (!PE_DownloadAndConnect()) { return(false); } UpdateStatusWinText(saveText); byte[] array = new byte[128]; _ = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation; int num = 32; int num2 = 0; int num3 = 0; int num4 = 0; byte[] array2 = new byte[64]; ResetStatusBar((int)((long)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem / (long)num)); do { num4 = 0; array2[num4++] = 166; array2[num4++] = 0; array2[num4++] = 243; array2[num4++] = 0; array2[num4++] = 242; array2[num4++] = 4; array2[num4++] = 242; array2[num4++] = 32; array2[num4++] = 242; array2[num4++] = 0; array2[num4++] = 242; array2[num4++] = BitReverseTable[num]; array2[num4++] = 242; array2[num4++] = 0; array2[num4++] = 242; array2[num4++] = BitReverseTable[(num2 >> 15) & 0xFF]; array2[num4++] = 242; array2[num4++] = BitReverseTable[(num2 >> 7) & 0xFF]; array2[num4++] = 242; array2[num4++] = BitReverseTable[(num2 << 1) & 0xFF]; array2[num4++] = 243; array2[num4++] = 2; array2[num4++] = 231; array2[num4++] = 5; array2[num4++] = 239; array2[num4++] = 239; array2[num4++] = 239; array2[num4++] = 239; array2[num4++] = 240; array2[num4++] = 240; array2[num4++] = 240; array2[num4++] = 233; array2[num4++] = 3; array2[num4++] = 31; array2[num4++] = 172; array2[num4++] = 172; array2[1] = (byte)(num4 - 4); for (; num4 < 64; num4++) { array2[num4] = 173; } PICkitFunctions.writeUSB(array2); PICkitFunctions.GetUpload(); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 0L, 64L); PICkitFunctions.GetUpload(); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 64L, 64L); num3 = 0; for (int i = 0; i < num; i += 2) { uint num5 = (uint)(BitReverseTable[array[num3++]] << 8); num5 |= BitReverseTable[array[num3++]]; uint num6 = (uint)(BitReverseTable[array[num3++]] << 16); num5 = (uint)((int)num5 | (BitReverseTable[array[num3++]] << 16)); num6 = (uint)((int)num6 | (BitReverseTable[array[num3++]] << 8)); num6 |= BitReverseTable[array[num3++]]; PICkitFunctions.DeviceBuffers.ProgramMemory[num2++] = num5; PICkitFunctions.DeviceBuffers.ProgramMemory[num2++] = num6; if (num2 >= PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem) { break; } } StepStatusBar(); }while (num2 < PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(true); }
public void ReCalcMultiWinProgMem() { uint programMem = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem; if (programMem == 0 || base.WindowState == FormWindowState.Minimized) { return; } uint blankValue = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue; if (blankValue == uint.MaxValue) { comboBoxProgMemView.SelectedIndex = 0; comboBoxProgMemView.Enabled = false; } else { comboBoxProgMemView.Enabled = true; } uint num = programMem * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement - 1; int num2 = 32; addrFormat = "{0:X3}"; if (blankValue == uint.MaxValue) { num2 = 65; addrFormat = "{0:X8}"; } else if (num > 65535) { num2 = 44; addrFormat = "{0:X5}"; } else if (num > 4095) { num2 = 38; addrFormat = "{0:X4}"; } num2 = (int)((float)num2 * FormPICkit2.ScalefactW); int num3 = 24; int num4 = 16; asciiBytes = 1; dataFormat = "{0:X2}"; if (blankValue == uint.MaxValue) { num3 = 65; num4 = 58; asciiBytes = 4; dataFormat = "{0:X8}"; } else if (blankValue > 65535) { num3 = 50; num4 = 43; asciiBytes = 3; dataFormat = "{0:X6}"; } else if (blankValue > 4095) { num3 = 36; num4 = 28; asciiBytes = 2; dataFormat = "{0:X4}"; } else if (blankValue > 255) { num3 = 28; num4 = 28; asciiBytes = 2; dataFormat = "{0:X3}"; } float num5 = 1f; if (comboBoxProgMemView.SelectedIndex > 0) { num5 = (float)num4 / ((float)num4 + (float)num3); num3 += num4; } num3 = (int)((float)num3 * FormPICkit2.ScalefactW); int num6 = dataGridProgramMemory.Size.Width - num2 - (int)(20f * FormPICkit2.ScalefactW); int num7 = num6 / num3; for (int num8 = 1; num8 <= 256; num8 *= 2) { if (num8 > num7) { num7 = num8 / 2; break; } } if (num7 > (int)programMem) { num7 = (int)programMem; } num3 = num6 / num7; if (comboBoxProgMemView.SelectedIndex > 0) { num4 = (int)(num5 * (float)num3); num3 -= num4; } dataGridProgramMemory.Rows.Clear(); if (comboBoxProgMemView.SelectedIndex > 0) { dataGridProgramMemory.ColumnCount = 2 * num7 + 1; } else { dataGridProgramMemory.ColumnCount = num7 + 1; } dataGridProgramMemory.Columns[0].Width = num2; for (int i = 1; i <= num7; i++) { dataGridProgramMemory.Columns[i].Width = num3; } if (comboBoxProgMemView.SelectedIndex > 0) { for (int j = num7 + 1; j <= 2 * num7; j++) { dataGridProgramMemory.Columns[j].Width = num4; } } int num9 = (int)programMem / num7; if ((long)programMem % (long)num7 > 0) { num9++; } if (blankValue == uint.MaxValue) { num9 += 2; } dataGridProgramMemory.RowCount = num9; int num10 = num7 * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement; if (blankValue == uint.MaxValue) { int programMem2 = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem; int bootFlash = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash; programMem2 -= bootFlash; programMem2 /= num7; dataGridProgramMemory.ShowCellToolTips = false; dataGridProgramMemory[0, 0].Value = "Program"; dataGridProgramMemory[1, 0].Value = "Flash"; for (int k = 0; k < dataGridProgramMemory.ColumnCount; k++) { dataGridProgramMemory[k, 0].Style.BackColor = SystemColors.ControlDark; dataGridProgramMemory[k, 0].ReadOnly = true; } int l = 1; int num11 = 486539264; for (; l <= programMem2; l++) { dataGridProgramMemory[0, l].Value = string.Format(addrFormat, num11); dataGridProgramMemory[0, l].Style.BackColor = SystemColors.ControlLight; num11 += num10; } dataGridProgramMemory[0, programMem2 + 1].Value = "Boot"; dataGridProgramMemory[1, programMem2 + 1].Value = "Flash"; for (int m = 0; m < dataGridProgramMemory.ColumnCount; m++) { dataGridProgramMemory[m, programMem2 + 1].Style.BackColor = SystemColors.ControlDark; dataGridProgramMemory[m, programMem2 + 1].ReadOnly = true; } int n = programMem2 + 2; int num12 = 532676608; for (; n < dataGridProgramMemory.RowCount; n++) { dataGridProgramMemory[0, n].Value = string.Format(addrFormat, num12); dataGridProgramMemory[0, n].Style.BackColor = SystemColors.ControlLight; num12 += num10; } } else { dataGridProgramMemory.ShowCellToolTips = true; int num13 = 0; int num14 = 0; for (; num13 < num9; num13++) { dataGridProgramMemory[0, num13].Value = string.Format(addrFormat, num14); dataGridProgramMemory[0, num13].ReadOnly = true; dataGridProgramMemory[0, num13].Style.BackColor = SystemColors.ControlLight; num14 += num10; } } updateDisplay(); }
public static bool PE24FVerify(string saveText, bool writeVerify, int lastLocation) { if ((!writeVerify || !PEGoodOnWrite) && !PE_DownloadAndConnect()) { return(false); } PEGoodOnWrite = false; if (!writeVerify) { lastLocation = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem; } UpdateStatusWinText(saveText); byte[] array = new byte[128]; _ = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BytesPerLocation; int num = 32; int num2 = 0; int num3 = 0; int num4 = 0; byte[] array2 = new byte[64]; ResetStatusBar(lastLocation / num); do { num4 = 0; array2[num4++] = 166; array2[num4++] = 0; array2[num4++] = 243; array2[num4++] = 0; array2[num4++] = 242; array2[num4++] = 4; array2[num4++] = 242; array2[num4++] = 32; array2[num4++] = 242; array2[num4++] = 0; array2[num4++] = 242; array2[num4++] = BitReverseTable[num]; array2[num4++] = 242; array2[num4++] = 0; array2[num4++] = 242; array2[num4++] = BitReverseTable[(num2 >> 15) & 0xFF]; array2[num4++] = 242; array2[num4++] = BitReverseTable[(num2 >> 7) & 0xFF]; array2[num4++] = 242; array2[num4++] = BitReverseTable[(num2 << 1) & 0xFF]; array2[num4++] = 243; array2[num4++] = 2; array2[num4++] = 231; array2[num4++] = 5; array2[num4++] = 239; array2[num4++] = 239; array2[num4++] = 239; array2[num4++] = 239; array2[num4++] = 240; array2[num4++] = 240; array2[num4++] = 240; array2[num4++] = 233; array2[num4++] = 3; array2[num4++] = 31; array2[num4++] = 172; array2[num4++] = 172; array2[1] = (byte)(num4 - 4); for (; num4 < 64; num4++) { array2[num4] = 173; } PICkitFunctions.writeUSB(array2); PICkitFunctions.GetUpload(); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 0L, 64L); PICkitFunctions.GetUpload(); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 64L, 64L); num3 = 0; for (int i = 0; i < num; i += 2) { uint num5 = (uint)(BitReverseTable[array[num3++]] << 8); num5 |= BitReverseTable[array[num3++]]; uint num6 = (uint)(BitReverseTable[array[num3++]] << 16); num5 = (uint)((int)num5 | (BitReverseTable[array[num3++]] << 16)); num6 = (uint)((int)num6 | (BitReverseTable[array[num3++]] << 8)); num6 |= BitReverseTable[array[num3++]]; if (PICkitFunctions.DeviceBuffers.ProgramMemory[num2++] != num5) { string text = ""; text = (writeVerify ? "Programming failed at Program Memory address\n" : "Verification of Program Memory failed at address\n"); text += $"0x{--num2 * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement:X6}"; UpdateStatusWinText(text); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(false); } if (PICkitFunctions.DeviceBuffers.ProgramMemory[num2++] != num6) { string text2 = ""; text2 = (writeVerify ? "Programming failed at Program Memory address\n" : "Verification of Program Memory failed at address\n"); text2 += $"0x{--num2 * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].AddressIncrement:X6}"; UpdateStatusWinText(text2); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(false); } if (num2 >= lastLocation) { break; } } StepStatusBar(); }while (num2 < lastLocation); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(true); }
private void progMemEdit(object sender, DataGridViewCellEventArgs e) { int rowIndex = e.RowIndex; int columnIndex = e.ColumnIndex; string p_value = "0x" + dataGridProgramMemory[columnIndex, rowIndex].FormattedValue.ToString(); int num = 0; try { num = Utilities.Convert_Value_To_Int(p_value); } catch { num = 0; } int num2 = dataGridProgramMemory.ColumnCount - 1; if (comboBoxProgMemView.SelectedIndex >= 1) { num2 /= 2; } int num3 = rowIndex * num2 + columnIndex - 1; if (PICkitFunctions.FamilyIsPIC32()) { int programMem = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem; int bootFlash = (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].BootFlash; programMem -= bootFlash; num3 -= num2; if (num3 > programMem) { num3 -= num2; } } PICkitFunctions.DeviceBuffers.ProgramMemory[num3] = (uint)(num & PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue); TellMainFormProgMemEdited(); progMemJustEdited = true; TellMainFormUpdateGUI(); }
public void ReCalcMultiWinMem() { uint eEMem = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem; if (eEMem == 0 || base.WindowState == FormWindowState.Minimized) { return; } uint num = eEMem * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemAddressIncrement - 1; int num2 = 30; addrFormat = "{0:X2}"; if (num > 4095) { num2 = 40; addrFormat = "{0:X4}"; } else if (num > 255) { num2 = 32; addrFormat = "{0:X3}"; } num2 = (int)((float)num2 * FormPICkit2.ScalefactW); uint blankValue = PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].BlankValue; int num3 = 24; int num4 = 16; asciiBytes = 1; dataFormat = "{0:X2}"; if (blankValue > 65535) { num3 = 36; num4 = 28; asciiBytes = 2; dataFormat = "{0:X4}"; } else if (blankValue == 4095) { num3 = 28; num4 = 28; asciiBytes = 2; dataFormat = "{0:X3}"; } float num5 = 1f; if (comboBoxProgMemView.SelectedIndex > 0) { num5 = (float)num4 / ((float)num4 + (float)num3); num3 += num4; } num3 = (int)((float)num3 * FormPICkit2.ScalefactW); int num6 = dataGridProgramMemory.Size.Width - num2 - (int)(20f * FormPICkit2.ScalefactW); int num7 = num6 / num3; for (int num8 = 1; num8 <= 256; num8 *= 2) { if (num8 > num7) { num7 = num8 / 2; break; } } if (num7 > (int)eEMem) { num7 = (int)eEMem; } num3 = num6 / num7; if (comboBoxProgMemView.SelectedIndex > 0) { num4 = (int)(num5 * (float)num3); num3 -= num4; } if (dataGridProgramMemory.FirstDisplayedCell != null && !progMemJustEdited) { int rowIndex = dataGridProgramMemory.FirstDisplayedCell.RowIndex; dataGridProgramMemory.MultiSelect = false; dataGridProgramMemory[0, rowIndex].Selected = true; dataGridProgramMemory[0, rowIndex].Selected = false; dataGridProgramMemory.MultiSelect = true; } else if (dataGridProgramMemory.FirstDisplayedCell == null && dataGridProgramMemory.RowCount > 0) { dataGridProgramMemory.MultiSelect = false; dataGridProgramMemory[0, 0].Selected = true; dataGridProgramMemory[0, 0].Selected = false; dataGridProgramMemory.MultiSelect = true; } progMemJustEdited = false; dataGridProgramMemory.Rows.Clear(); if (comboBoxProgMemView.SelectedIndex > 0) { dataGridProgramMemory.ColumnCount = 2 * num7 + 1; } else { dataGridProgramMemory.ColumnCount = num7 + 1; } dataGridProgramMemory.Columns[0].Width = num2; for (int i = 1; i <= num7; i++) { dataGridProgramMemory.Columns[i].Width = num3; } if (comboBoxProgMemView.SelectedIndex > 0) { for (int j = num7 + 1; j <= 2 * num7; j++) { dataGridProgramMemory.Columns[j].Width = num4; } } int num9 = (int)eEMem / num7; if ((long)eEMem % (long)num7 > 0) { num9++; } dataGridProgramMemory.RowCount = num9; int num10 = num7 * PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemAddressIncrement; int k = 0; int num11 = 0; for (; k < num9; k++) { dataGridProgramMemory[0, k].Value = string.Format(addrFormat, num11); dataGridProgramMemory[0, k].ReadOnly = true; dataGridProgramMemory[0, k].Style.BackColor = SystemColors.ControlLight; num11 += num10; } updateDisplay(); }