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 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); }