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();
        }
Example #2
0
        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);
        }