private void button1_Click(object sender, EventArgs e) { byte[] array = new byte[128]; base.Update(); PICkitFunctions.RunScript(0, 1); if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EERdPrepScript > 0) { if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemHexBytes == 4) { PICkitFunctions.DownloadAddress3((int)(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEAddr / 2u)); } else { PICkitFunctions.DownloadAddress3(0); } PICkitFunctions.RunScript(8, 1); } int eEMemBytesPerWord = (int)PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].EEMemBytesPerWord; int num = 128 / ((int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EERdLocations * eEMemBytesPerWord); int num2 = num * (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EERdLocations; int num3 = 0; do { PICkitFunctions.RunScriptUploadNoLen(9, 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 = (uint)array[num4 + num5++]; if (num5 < eEMemBytesPerWord) { num6 |= (uint)((uint)array[num4 + num5++] << 8); } num4 += num5; if (PICkitFunctions.DevFile.Families[PICkitFunctions.GetActiveFamily()].ProgMemShift > 0) { //num6 = (num6 >> 1 & eEBlank); } PICkitFunctions.DeviceBuffers.EEPromMemory[num3++] = num6; if (num3 >= (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem) { break; } } }while (num3 < (int)PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].EEMem); PICkitFunctions.RunScript(1, 1); foreach (var a in array) { this.textBox1.AppendText(a.ToString()); this.textBox1.AppendText(" "); } }
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 PE_Connect() { PICkitFunctions.RunScript(0, 1); if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgMemWrPrepScript != 0) { PICkitFunctions.DownloadAddress3(8389568); PICkitFunctions.RunScript(5, 1); } byte[] array = new byte[128]; PICkitFunctions.RunScriptUploadNoLen(3, 1); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 0L, 64L); PICkitFunctions.UploadDataNoLen(); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array, 64L, 64L); int num = array[72]; num |= array[73] << 8; if (num != 155) { PICkitFunctions.RunScript(1, 1); return(false); } num = array[75]; num |= array[76] << 8; if (num != 38) { PICkitFunctions.RunScript(1, 1); return(false); } PICkitFunctions.RunScript(1, 1); int i = 0; byte[] array2 = new byte[64]; array2[i++] = 166; array2[i++] = 0; array2[i++] = 250; array2[i++] = 247; array2[i++] = 249; array2[i++] = 245; array2[i++] = 243; array2[i++] = 0; array2[i++] = 232; array2[i++] = 20; array2[i++] = 246; array2[i++] = 251; array2[i++] = 231; array2[i++] = 23; array2[i++] = 250; array2[i++] = 247; array2[i++] = 231; array2[i++] = 47; array2[i++] = 242; array2[i++] = 178; array2[i++] = 242; array2[i++] = 194; array2[i++] = 242; array2[i++] = 18; array2[i++] = 242; array2[i++] = 10; array2[i++] = 246; array2[i++] = 251; array2[i++] = 232; array2[i++] = 6; array2[1] = (byte)(i - 2); for (; i < 64; i++) { array2[i] = 173; } PICkitFunctions.writeUSB(array2); i = 0; array2[i++] = 166; array2[i++] = 12; array2[i++] = 242; array2[i++] = 0; array2[i++] = 242; array2[i++] = 128; array2[i++] = 243; array2[i++] = 2; array2[i++] = 231; array2[i++] = 5; array2[i++] = 240; array2[i++] = 240; array2[i++] = 240; array2[i++] = 240; array2[i++] = 170; for (; i < 64; i++) { array2[i] = 173; } PICkitFunctions.writeUSB(array2); if (!PICkitFunctions.readUSB()) { PICkitFunctions.RunScript(1, 1); return(false); } if (PICkitFunctions.Usb_read_array[1] != 4) { PICkitFunctions.RunScript(1, 1); return(false); } if (PICkitFunctions.Usb_read_array[2] != 8 || PICkitFunctions.Usb_read_array[3] != 0 || PICkitFunctions.Usb_read_array[4] != 0 || PICkitFunctions.Usb_read_array[5] != 64) { PICkitFunctions.RunScript(1, 1); return(false); } i = 0; array2[i++] = 166; array2[i++] = 14; array2[i++] = 243; array2[i++] = 0; array2[i++] = 242; array2[i++] = 13; array2[i++] = 242; array2[i++] = 128; array2[i++] = 243; array2[i++] = 2; array2[i++] = 231; array2[i++] = 5; array2[i++] = 240; array2[i++] = 240; array2[i++] = 240; array2[i++] = 240; array2[i++] = 170; for (; i < 64; i++) { array2[i] = 173; } PICkitFunctions.writeUSB(array2); if (!PICkitFunctions.readUSB()) { PICkitFunctions.RunScript(1, 1); return(false); } if (PICkitFunctions.Usb_read_array[1] != 4) { PICkitFunctions.RunScript(1, 1); return(false); } if (PICkitFunctions.Usb_read_array[2] != 216 || BitReverseTable[PICkitFunctions.Usb_read_array[3]] != 38 || PICkitFunctions.Usb_read_array[4] != 0 || PICkitFunctions.Usb_read_array[5] != 64) { PICkitFunctions.RunScript(1, 1); return(false); } return(true); }
public static bool DownloadPE() { PICkitFunctions.RunScript(0, 1); PICkitFunctions.ExecuteScript(PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].DebugWriteVectorScript); if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgMemWrPrepScript != 0) { PICkitFunctions.DownloadAddress3(8388608); PICkitFunctions.RunScript(6, 1); } int num = 0; int num2 = 0; byte[] array = new byte[64]; for (int i = 0; i < 8; i++) { for (int j = 0; j < 4; j++) { num2 = 0; if (j == 0) { array[num2++] = 167; } array[num2++] = 168; array[num2++] = 48; for (int k = 0; k < 16; k++) { array[num2++] = (byte)(PIC24_PE_Code[num] & 0xFF); array[num2++] = (byte)((PIC24_PE_Code[num] >> 8) & 0xFF); array[num2++] = (byte)((PIC24_PE_Code[num] >> 16) & 0xFF); num++; } for (; num2 < 64; num2++) { array[num2] = 173; } PICkitFunctions.writeUSB(array); } num2 = 0; array[num2++] = 166; array[num2++] = 0; array[num2++] = 212; array[num2++] = 0; array[num2++] = 211; array[num2++] = 1; array[num2++] = 212; array[num2++] = 3; array[num2++] = 211; array[num2++] = 2; array[num2++] = 217; array[num2++] = 128; array[num2++] = 11; array[num2++] = 187; array[num2++] = 216; array[num2++] = 216; array[num2++] = 217; array[num2++] = 129; array[num2++] = 155; array[num2++] = 187; array[num2++] = 216; array[num2++] = 216; array[num2++] = 217; array[num2++] = 130; array[num2++] = 139; array[num2++] = 187; array[num2++] = 216; array[num2++] = 216; array[num2++] = 217; array[num2++] = 131; array[num2++] = 27; array[num2++] = 187; array[num2++] = 216; array[num2++] = 216; array[num2++] = 233; array[num2++] = 32; array[num2++] = 31; array[num2++] = 217; array[num2++] = 97; array[num2++] = 231; array[num2++] = 168; array[num2++] = 216; array[num2++] = 217; array[num2++] = 0; array[num2++] = 2; array[num2++] = 4; array[num2++] = 216; array[num2++] = 233; array[num2++] = 1; array[num2++] = 3; array[num2++] = 231; array[num2++] = 72; array[1] = (byte)(num2 - 2); for (; num2 < 64; num2++) { array[num2] = 173; } PICkitFunctions.writeUSB(array); } if (PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgMemWrPrepScript != 0) { PICkitFunctions.DownloadAddress3(8388608); PICkitFunctions.RunScript(5, 1); } byte[] array2 = new byte[128]; num = 0; for (int l = 0; l < 16; l++) { PICkitFunctions.RunScriptUploadNoLen(3, 1); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array2, 0L, 64L); PICkitFunctions.UploadDataNoLen(); Array.Copy(PICkitFunctions.Usb_read_array, 1L, array2, 64L, 64L); int num3 = 0; for (int m = 0; m < 32; m++) { uint num4 = array2[num3++]; num4 = (uint)((int)num4 | (array2[num3++] << 8)); num4 = (uint)((int)num4 | (array2[num3++] << 16)); if (num4 != PIC24_PE_Code[num++]) { PICkitFunctions.RunScript(1, 1); return(false); } } } PICkitFunctions.RunScript(1, 1); 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 PE24FWrite(int endOfBuffer, string saveText, bool writeVerify) { if (!PE_DownloadAndConnect()) { PEGoodOnWrite = false; return(false); } PEGoodOnWrite = true; UpdateStatusWinText(saveText); if (endOfBuffer == PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ProgramMem) { for (int num = PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords; num > 0; num--) { PICkitFunctions.DeviceBuffers.ProgramMemory[endOfBuffer - num] &= (uint)(0xFF0000 | PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigBlank[PICkitFunctions.DevFile.PartsList[PICkitFunctions.ActivePart].ConfigWords - num]); } } byte[] array = new byte[256]; int num2 = 64; int num3 = 0; ResetStatusBar(endOfBuffer / num2); do { int num4 = 0; for (int i = 0; i < num2; i += 2) { uint num5 = PICkitFunctions.DeviceBuffers.ProgramMemory[num3++]; array[num4 + 1] = BitReverseTable[num5 & 0xFF]; num5 >>= 8; array[num4] = BitReverseTable[num5 & 0xFF]; num5 >>= 8; array[num4 + 3] = BitReverseTable[num5 & 0xFF]; num5 = PICkitFunctions.DeviceBuffers.ProgramMemory[num3++]; array[num4 + 5] = BitReverseTable[num5 & 0xFF]; num5 >>= 8; array[num4 + 4] = BitReverseTable[num5 & 0xFF]; num5 >>= 8; array[num4 + 2] = BitReverseTable[num5 & 0xFF]; num4 += 6; } for (int num6 = PICkitFunctions.DataClrAndDownload(array, 0); num6 < num4; num6 = PICkitFunctions.DataDownload(array, num6, num4)) { } int j = 0; byte[] array2 = new byte[64]; array2[j++] = 166; array2[j++] = 0; array2[j++] = 243; array2[j++] = 0; array2[j++] = 242; array2[j++] = 10; array2[j++] = 242; array2[j++] = 198; array2[j++] = 242; array2[j++] = 0; array2[j++] = 242; array2[j++] = BitReverseTable[(num3 - 64 >> 15) & 0xFF]; array2[j++] = 242; array2[j++] = BitReverseTable[(num3 - 64 >> 7) & 0xFF]; array2[j++] = 242; array2[j++] = BitReverseTable[(num3 - 64 << 1) & 0xFF]; array2[j++] = 241; array2[j++] = 241; array2[j++] = 241; array2[j++] = 233; array2[j++] = 3; array2[j++] = 63; array2[j++] = 243; array2[j++] = 2; array2[j++] = 231; array2[j++] = 118; array2[j++] = 240; array2[j++] = 240; array2[j++] = 240; array2[j++] = 240; array2[j++] = 170; array2[1] = (byte)(j - 3); for (; j < 64; j++) { array2[j] = 173; } PICkitFunctions.writeUSB(array2); if (!PICkitFunctions.readUSB()) { UpdateStatusWinText("Programming Executive Error during Write."); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(false); } if (PICkitFunctions.Usb_read_array[1] != 4) { UpdateStatusWinText("Programming Executive Error during Write."); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(false); } if (BitReverseTable[PICkitFunctions.Usb_read_array[2]] != 21 || PICkitFunctions.Usb_read_array[3] != 0 || PICkitFunctions.Usb_read_array[4] != 0 || BitReverseTable[PICkitFunctions.Usb_read_array[5]] != 2) { UpdateStatusWinText("Programming Executive Error during Write."); PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); return(false); } StepStatusBar(); }while (num3 < endOfBuffer); if (!writeVerify) { PICkitFunctions.RunScript(1, 1); restoreICSPSpeed(); } 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 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); }