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