diff --git a/AsProgrammer/AsProgrammer.exe b/AsProgrammer/AsProgrammer.exe new file mode 100644 index 0000000..ecda637 Binary files /dev/null and b/AsProgrammer/AsProgrammer.exe differ diff --git a/AsProgrammer/CH341DLL.DLL b/AsProgrammer/CH341DLL.DLL new file mode 100644 index 0000000..c9f2eb1 Binary files /dev/null and b/AsProgrammer/CH341DLL.DLL differ diff --git a/AsProgrammer/Devices/FuseBits.xml b/AsProgrammer/Devices/FuseBits.xml new file mode 100644 index 0000000..23de1ca --- /dev/null +++ b/AsProgrammer/Devices/FuseBits.xml @@ -0,0 +1,435 @@ + + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + TA0SEL,BODLEVEL0,BODLEVEL1,BODLEVEL2,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + TA0SEL,BODLEVEL0,BODLEVEL1,BODLEVEL2,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + TA0SEL,BODLEVEL0,BODLEVEL1,BODLEVEL2,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BOOTRST,BOOTSZ0,BOOTSZ1,,PSCRV,PSC0RB,PSC1RB,PSC2RB + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BOOTRST,BOOTSZ0,BOOTSZ1,,PSCRV,PSC0RB,,PSC2RB + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + ,,,,,,, + ,,,,,,, + ,,,,,,, + ,LB1,LB2,,,,, + + + ,,,,,,, + ,,,,,,, + ,,,,,,, + ,LB1,LB2,,,,, + + + ,,,,,,, + RCEN,,,,,,, + ,,,,,,, + ,LB2,LB1,,,,, + + + ,,,,,,, + ,,,,,,, + ,,,,,,, + ,LB2,LB1,,,,, + + + ,,,,,,, + ,,,,,,, + ,,,,,,, + ,LB2,LB1,,,,, + + + ,,,,,,, + ,,,,,,, + ,,,,,,, + ,LB2,LB1,,,,, + + + ,,,,,,, + ,,,,,,, + ,,,,,,, + ,LB2,LB1,,,,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,RSTDSBL,DWEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL + WDTON,M103C,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL + ,,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,RSTDSBL,DWEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + ,,,,,,, + CKSEL0,CKSEL1,CKSEL2,,SUT,,BOOTRST, + ,,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + ,BODLEVEL0,BODLEVEL1,BODLEVEL2,M161C,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,,,,, + CKSEL0,CKSEL1,CKSEL2,CKSEL3,,,BODEN,BODLEVEL + ,,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BOOTRST,BOOTSZ0,BOOTSZ1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BOOTRST,BOOTSZ0,BOOTSZ1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + ,BODLEVEL0,BODLEVEL1,BODLEVEL2,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL + ,,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,RSTDSBL,DWEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + RSTDISBL,BODLEVEL0,BODLEVEL1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + RSTDISBL,BODLEVEL0,BODLEVEL1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,SPIEN,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,SPIEN,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + RSTDISBL,BODLEVEL0,BODLEVEL1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + RSTDISBL,BODLEVEL0,BODLEVEL1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + JTAGEN,OCDEN,,,,,, + CKSEL,SUT0,SUT1,BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON + ,,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL + WDTON,M103C,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + RSTDISBL,BODLEVEL0,BODLEVEL1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + RSTDISBL,BODLEVEL0,BODLEVEL1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + RSTDISBL,BODLEVEL0,BODLEVEL1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + RSTDISBL,BODLEVEL0,BODLEVEL1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,WDTON,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL + ,,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,RSTDSBL,DWEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BODLEVEL0,BODLEVEL1,BODLEVEL2,HWBE,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,WDTON,S8515C + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL + ,,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,CKOPT,,WDTON,S8535C + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,BODEN,BODLEVEL + ,,,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BOOTRST,BOOTSZ0,BOOTSZ1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + BOOTRST,BOOTSZ0,BOOTSZ1,,,,, + LB1,LB2,BLB01,BLB02,BLB11,BLB12,, + + + ,,,,,,, + CKSEL0,CKSEL1,CKSEL2,RSTDISBL,FSTRT,,, + ,,,,,,, + ,LB1,LB2,,,,, + + + ,,,,,,, + CKSEL0,CKSEL1,CKSEL2,CKSEL3,RSTDISBL,SPIEN,BODEN,BODLEVEL + ,,,,,,, + ,LB1,LB2,,,,, + + + RSTDISBL,BODLEVEL0,BODLEVEL1,DWEN,SELFPRGEN,,, + CKSEL0,CKSEL1,SUT0,SUT1,CKDIV8,WDTON,EESAVE, + ,,,,,,, + LB1,LB2,,,,,, + + + ,,,,,,, + CKSEL0,CKSEL1,,,RSTDISBL,SPIEN,BODEN,BODLEVEL + ,,,,,,, + ,LB1,LB2,,,,, + + + RSTDISBL,BODLEVEL0,BODLEVEL1,BODLEVEL2,WDTON,,EESAVE,DWEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODEN,BODLEVEL,EESAVE,,RSTDISBL,,, + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOPT,PLLCK + ,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + + BODLEVEL0,BODLEVEL1,BODLEVEL2,EESAVE,WDTON,,DWEN,RSTDISBL + CKSEL0,CKSEL1,,,SUT0,SUT1,CKOUT,CKDIV8 + SELFPRGEN,,,,,,, + LB1,LB2,,,,,, + + diff --git a/AsProgrammer/Devices/StatBits.xml b/AsProgrammer/Devices/StatBits.xml new file mode 100644 index 0000000..451b82a --- /dev/null +++ b/AsProgrammer/Devices/StatBits.xml @@ -0,0 +1,224 @@ + + + + + + S0,S1,S2,S3,S4,S5,S6,S7 + S8,S9,S10,S11,S12,S13,S14,S15 + S16,S17,S18,S19,S20,S21,S22,S23 + + + + + BUSY,WEL,BP0,BP1,BP2,BP3,TB,SRP0 + ,,,,,,, + ,,,,,,, + + + + + SP,Comp,Inv,BP0,BP1,BP2,,BPRWD + QE,,,,ECC-E,,OTP-E,OTP-L + BUSY,WEL,E-FAIL,P-FAIL,ECC-S0,ECC-S1,CRBSY, + + + ,,,BP0,BP1,BP2,,BPRWD + QE,,,,ECC-E,,OTP-E,OTP-L + BUSY,WEL,E-FAIL,P-FAIL,ECC-S0,ECC-S1,, + + + SP,Comp,Inv,BP0,BP1,BP2,,BPRWD + QE,,,,,,OTP-E,OTP-L + BUSY,WEL,E-FAIL,P-FAIL,,,CRBSY, + + + SP,Comp,Inv,BP0,BP1,BP2,,BPRWD + QE,,,,,,OTP-E,OTP-L + BUSY,WEL,E-FAIL,P-FAIL,,,, + + + SP,Comp,Inv,BP0,BP1,BP2,,BPRWD + QE,,,,,,OTP-E,OTP-L + BUSY,WEL,E-FAIL,P-FAIL,,,, + + + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ,,WPS,,,DRV0,DRV1,HOLD/RST + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ADS,ADP,WPS,,,DRV0,DRV1, + + + BUSY,WEL,BP0,BP1,BP2,TB,SEC,SRP0 + SRP1,QE,,LB1,LB2,LB3,CMP,SUS + ADS,ADP,WPS,,,DRV0,DRV1, + + + SRP1,WP-E,TB,BP0,BP1,BP2,BP3,SRP0 + ,,,BUF,ECC-E,SR1-L,OTP-E,OTP-L + BUSY,WEL,E-FAIL,P-FAIL,ECC-0,ECC-1,LUT-F, + + + SRP1,WP-E,TB,BP0,BP1,BP2,BP3,SRP0 + ,,,BUF,ECC-E,SR1-L,OTP-E,OTP-L + BUSY,WEL,E-FAIL,P-FAIL,ECC-0,ECC-1,LUT-F, + + + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,,,,,, + ,,,,,,, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,,,,,, + ,,,,,,, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,,,,,, + ,,,,,,, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,,,,,, + ,,,,,,, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,,,,,, + ,,,,,,, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,,,,,, + ,,,,,,, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,,,,,, + ,,,,,,, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,SUS2,LB1,LB2,LB3,CMP,SUS1 + ,,,,HPF,DRV0,DRV1, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,SUS2,LB1,LB2,LB3,CMP,SUS1 + ,,,,HPF,DRV0,DRV1, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,SUS2,LB1,LB2,LB3,CMP,SUS1 + ,,,,,,, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,SUS2,LB1,LB2,LB3,CMP,SUS1 + ,,,,,,, + + + BUSY,WEL,BP0,BP1,BP2,BP3,BP4,SRP0 + SRP1,QE,SUS2,EN4B,LB2,LB3,CMP,SUS1 + ,,,,,,, + + + + + BUSY,WEL,BP0,BP1,BP2,BP3,AAI,BPL + ,,,,,,, + ,,,,,,, + + + + + + + BUSY,WEL,BP0,BP1,,,, + + + BUSY,WEL,BP0,BP1,,,,SRWD + + + BUSY,WEL,BP0,BP1,,,,SRWD + + + + + + + + \ No newline at end of file diff --git a/AsProgrammer/Drivers/CH341A/CH341A_setup.png b/AsProgrammer/Drivers/CH341A/CH341A_setup.png new file mode 100644 index 0000000..84e96e8 Binary files /dev/null and b/AsProgrammer/Drivers/CH341A/CH341A_setup.png differ diff --git a/AsProgrammer/Drivers/CH341A/CH341DLL.DLL b/AsProgrammer/Drivers/CH341A/CH341DLL.DLL new file mode 100644 index 0000000..c9f2eb1 Binary files /dev/null and b/AsProgrammer/Drivers/CH341A/CH341DLL.DLL differ diff --git a/AsProgrammer/Drivers/CH341A/CH341W64.SYS b/AsProgrammer/Drivers/CH341A/CH341W64.SYS new file mode 100644 index 0000000..d890020 Binary files /dev/null and b/AsProgrammer/Drivers/CH341A/CH341W64.SYS differ diff --git a/AsProgrammer/Drivers/CH341A/CH341WDM.CAT b/AsProgrammer/Drivers/CH341A/CH341WDM.CAT new file mode 100644 index 0000000..9193156 Binary files /dev/null and b/AsProgrammer/Drivers/CH341A/CH341WDM.CAT differ diff --git a/AsProgrammer/Drivers/CH341A/CH341WDM.INF b/AsProgrammer/Drivers/CH341A/CH341WDM.INF new file mode 100644 index 0000000..df5f7ab --- /dev/null +++ b/AsProgrammer/Drivers/CH341A/CH341WDM.INF @@ -0,0 +1,178 @@ +; CH341WDM.INF +; Driver for CH341 (USB=>EPP/I2C/SPI... chip) V2.2 +; WDM for Windows 98/Me/2000/XP/Server2003/Vista/64bit Vista/Server2008/Win7/64bit Win7 +; Copyright (C) W.ch 2001-2009 +; + +[Version] +Signature = "$Chicago$" +Class = WCH +ClassGuid = {77989ADF-06DB-4025-92E8-40D902C03B0A} +Provider = %WinChipHead% +DriverVer = 06/05/2009, 2.2.2009.06 +CatalogFile.NT = CH341WDM.CAT + +[ControlFlags] +ExcludeFromSelect = USB\VID_1A86&PID_5512 +ExcludeFromSelect = USB\VID_4348&PID_5512 +;ExcludeFromSelect = USB\VID_1A86&PID_7523 +;ExcludeFromSelect = USB\VID_1A86&PID_5523 +;ExcludeFromSelect = USB\VID_4348&PID_5523 +;ExcludeFromSelect = USB\VID_4348&PID_5523&REV_0250 + +[ClassInstall32] +Addreg = WCHReg + +[ClassInstall] +Addreg = WCHReg + +[WCHReg] +HKR, , , 0, %ClassName% +HKR, , Icon, , -5 +HKR, , NoInstallClass, , 1 + +[Manufacturer] +%WinChipHead% = WinChipHead,NT,NTamd64,NTia64 + +[WinChipHead] +%CH341A.DeviceDesc% = CH341.Install, USB\VID_1A86&PID_5512 +%CH341.DeviceDesc% = CH341.Install, USB\VID_4348&PID_5512 +;%CH340SER.DeviceDesc% = CH341.Install, USB\VID_1A86&PID_7523 +;%CH341ASER.DeviceDesc% = CH341.Install, USB\VID_1A86&PID_5523 +;%CH341SER.DeviceDesc% = CH341.Install, USB\VID_4348&PID_5523 +;%CH340SER.DeviceDesc% = CH341.Install, USB\VID_4348&PID_5523&REV_0250 + +[WinChipHead.NT] +%CH341A.DeviceDesc% = CH341.Install.NT, USB\VID_1A86&PID_5512 +%CH341.DeviceDesc% = CH341.Install.NT, USB\VID_4348&PID_5512 +;%CH340SER.DeviceDesc% = CH341.Install.NT.NTamd64, USB\VID_1A86&PID_7523 +;%CH341ASER.DeviceDesc% = CH341.Install.NT, USB\VID_1A86&PID_5523 +;%CH341SER.DeviceDesc% = CH341.Install.NT, USB\VID_4348&PID_5523 +;%CH340SER.DeviceDesc% = CH341.Install.NT, USB\VID_4348&PID_5523&REV_0250 + +[WinChipHead.NTamd64] +%CH341A.DeviceDesc% = CH341.Install.NTamd64, USB\VID_1A86&PID_5512 +%CH341.DeviceDesc% = CH341.Install.NTamd64, USB\VID_4348&PID_5512 +;%CH340SER.DeviceDesc% = CH341.Install.NTamd64, USB\VID_1A86&PID_7523 +;%CH341ASER.DeviceDesc% = CH341.Install.NTamd64, USB\VID_1A86&PID_5523 +;%CH341SER.DeviceDesc% = CH341.Install.NTamd64, USB\VID_4348&PID_5523 +;%CH340SER.DeviceDesc% = CH341.Install.NTamd64, USB\VID_4348&PID_5523&REV_0250 + +[WinChipHead.NTia64] +%CH341A.DeviceDesc% = CH341.Install.NTia64, USB\VID_1A86&PID_5512 +%CH341.DeviceDesc% = CH341.Install.NTia64, USB\VID_4348&PID_5512 +;%CH340SER.DeviceDesc% = CH341.Install.NTia64, USB\VID_1A86&PID_7523 +;%CH341ASER.DeviceDesc% = CH341.Install.NTia64, USB\VID_1A86&PID_5523 +;%CH341SER.DeviceDesc% = CH341.Install.NTia64, USB\VID_4348&PID_5523 +;%CH340SER.DeviceDesc% = CH341.Install.NTia64, USB\VID_4348&PID_5523&REV_0250 + +[CH341.Install] +CopyFiles = CH341.CopyFiles.SYS, CH341.CopyFiles.DLL +AddReg = CH341.9X.AddReg, CH341.AddReg + +[CH341.Install.NT] +CopyFiles = CH341.CopyFiles.SYS, CH341.CopyFiles.DLL +AddReg = CH341.NT.AddReg, CH341.AddReg + +[CH341.Install.NTamd64] +CopyFiles = CH341.CopyFiles.SYSA64, CH341.CopyFiles.DLL +AddReg = CH341.NT.AddReg, CH341.AddReg + +[CH341.Install.NTia64] +CopyFiles = CH341.CopyFiles.SYSI64, CH341.CopyFiles.DLL +AddReg = CH341.NT.AddReg, CH341.AddReg + +[CH341.CopyFiles.SYS] +CH341WDM.SYS, , , 2 + +[CH341.CopyFiles.SYSA64] +CH341W64.SYS, , , 2 + +[CH341.CopyFiles.SYSI64] +;CH341I64.SYS, , , 2 + +[CH341.CopyFiles.DLL] +CH341DLL.DLL, , , 2 + +[CH341.9X.AddReg] +HKR, , DevLoader, , *NTKERN +HKR, , NTMPDriver, , CH341WDM.SYS + +[CH341.NT.AddReg] + +[CH341.AddReg] +HKLM, SOFTWARE\WinChipHead\IC\CH341, WDM, 0x00010001, 0x00000022 +HKLM, SOFTWARE\WinChipHead\IC\CH341, DLL, 0x00010001, 0x00000021 +HKLM, SOFTWARE\WinChipHead\IC\CH341, Function, , "USB=>Parallel" + +[CH341.Install.NT.Services] +AddService = CH341, 2, CH341.Service + +[CH341.Install.NTamd64.Services] +AddService = CH341_A64, 2, CH341.ServiceA64 + +[CH341.Install.NTia64.Services] +AddService = CH341_I64, 2, CH341.ServiceI64 + +[CH341.Service] +DisplayName = "CH341WDM" +ServiceType = 1 +StartType = 3 +ErrorControl = 1 +ServiceBinary = %10%\System32\Drivers\CH341WDM.SYS + +[CH341.ServiceA64] +DisplayName = "CH341WDM_A64" +ServiceType = 1 +StartType = 3 +ErrorControl = 1 +ServiceBinary = %10%\System32\Drivers\CH341W64.SYS + +[CH341.ServiceI64] +DisplayName = "CH341WDM_I64" +ServiceType = 1 +StartType = 3 +ErrorControl = 1 +ServiceBinary = %10%\System32\Drivers\CH341I64.SYS + +[DestinationDirs] +DefaultDestDir = 10, System32\Drivers +CH341.CopyFiles.DLL = 11 +CH341.CopyFiles.SYS = 10, System32\Drivers +CH341.CopyFiles.SYSA64 = 10, System32\Drivers +;CH341.CopyFiles.SYSI64 = 10, System32\Drivers + +[SourceDisksFiles] +CH341WDM.SYS = 1 +CH341DLL.DLL = 1 +CH341W64.SYS = 1 +;CH341I64.SYS = 1 + +[SourceDisksNames] +1 = %DISK_NAME%, CH341WDM.SYS, , + +[SourceDisksNames.amd64] +1 = %DISK_NAME%, CH341W64.SYS, , + +[SourceDisksNames.ia64] +1 = %DISK_NAME%, CH341I64.SYS, , + +[Strings] +ClassName = "Interface" +WinChipHead = "wch.cn" +CH341.DeviceDesc = "USB-EPP/I2C... CH341" +CH341A.DeviceDesc = "USB-EPP/I2C... CH341A" +CH341SER.DeviceDesc = "USB-SERIAL CH341" +CH340SER.DeviceDesc = "USB-SERIAL CH340" +CH341ASER.DeviceDesc = "USB-SERIAL CH341A" +DISK_NAME = "CH341 Parallel Installation Disk" + +[Strings.0804] +ClassName = "ⲿӿ" +WinChipHead = "wch.cn" +CH341.DeviceDesc = "USB-EPP/I2C... CH341" +CH341A.DeviceDesc = "USB-EPP/I2C... CH341A" +CH341SER.DeviceDesc = "USB-SERIAL CH341" +CH340SER.DeviceDesc = "USB-SERIAL CH340" +CH341ASER.DeviceDesc = "USB-SERIAL CH341A" +DISK_NAME = "CH341 Parallel Installation Disk" diff --git a/AsProgrammer/Drivers/CH341A/CH341WDM.SYS b/AsProgrammer/Drivers/CH341A/CH341WDM.SYS new file mode 100644 index 0000000..dbb47da Binary files /dev/null and b/AsProgrammer/Drivers/CH341A/CH341WDM.SYS differ diff --git a/AsProgrammer/Drivers/CH341A/DRVSETUP64/DRVSETUP64.exe b/AsProgrammer/Drivers/CH341A/DRVSETUP64/DRVSETUP64.exe new file mode 100644 index 0000000..e262ef7 Binary files /dev/null and b/AsProgrammer/Drivers/CH341A/DRVSETUP64/DRVSETUP64.exe differ diff --git a/AsProgrammer/Drivers/CH341A/SETUP.EXE b/AsProgrammer/Drivers/CH341A/SETUP.EXE new file mode 100644 index 0000000..e3b8cca Binary files /dev/null and b/AsProgrammer/Drivers/CH341A/SETUP.EXE differ diff --git a/AsProgrammer/Drivers/ch341_jumper.jpg b/AsProgrammer/Drivers/ch341_jumper.jpg new file mode 100644 index 0000000..9541f5c Binary files /dev/null and b/AsProgrammer/Drivers/ch341_jumper.jpg differ diff --git a/AsProgrammer/Khan Dish Network.txt b/AsProgrammer/Khan Dish Network.txt new file mode 100644 index 0000000..9725af9 --- /dev/null +++ b/AsProgrammer/Khan Dish Network.txt @@ -0,0 +1,34 @@ + +This file has been downloaded from khandishnetwork.com + +For More Software and Video Tutorials visit our website and youtube channel: + + + ### khandishnetwork.com ### + + +ANDROID APP: https://play.google.com/store/apps/details?id=com.softwarebox.app + + +Youtube Channel: + + https://www.youtube.com/Ikram dirujii + + +Facebook Page: + + https://facebook.com/groups/khandishnetwork + + + + )|( + (o o) + +-------------------------------ooO--(_)--oo-------------------------------------+ + | | + | | + | All the files available on khandishnetwork.com are kept for educational | + | purpose only! | + | Nobody is responsible for any of the files stored on khandishnetwork.com, | + | their content can damage your system! | + | | + +--------------------------------------------------------------------------------+ \ No newline at end of file diff --git a/AsProgrammer/Pinouts/ISP.gif b/AsProgrammer/Pinouts/ISP.gif new file mode 100644 index 0000000..73b221d Binary files /dev/null and b/AsProgrammer/Pinouts/ISP.gif differ diff --git a/AsProgrammer/Pinouts/KB901x/kb9012pins.txt b/AsProgrammer/Pinouts/KB901x/kb9012pins.txt new file mode 100644 index 0000000..09dcde3 --- /dev/null +++ b/AsProgrammer/Pinouts/KB901x/kb9012pins.txt @@ -0,0 +1,8 @@ +kb9012 -> UsbAsp + +59 EDI_CS -> CS(RST) +60 EDI_CLK -> SCK +61 EDI_DIN -> MOSI +62 EDI_DO -> MISO + +42 TP_PLL_LOCK -> GND \ No newline at end of file diff --git a/AsProgrammer/Pinouts/schemeI2C.gif b/AsProgrammer/Pinouts/schemeI2C.gif new file mode 100644 index 0000000..69968f2 Binary files /dev/null and b/AsProgrammer/Pinouts/schemeI2C.gif differ diff --git a/AsProgrammer/Pinouts/schemeMW.gif b/AsProgrammer/Pinouts/schemeMW.gif new file mode 100644 index 0000000..4fae3f9 Binary files /dev/null and b/AsProgrammer/Pinouts/schemeMW.gif differ diff --git a/AsProgrammer/Pinouts/schemeSPI25.gif b/AsProgrammer/Pinouts/schemeSPI25.gif new file mode 100644 index 0000000..874c823 Binary files /dev/null and b/AsProgrammer/Pinouts/schemeSPI25.gif differ diff --git a/AsProgrammer/Pinouts/schemeSPI25_to_93Cxx.gif b/AsProgrammer/Pinouts/schemeSPI25_to_93Cxx.gif new file mode 100644 index 0000000..71a2f18 Binary files /dev/null and b/AsProgrammer/Pinouts/schemeSPI25_to_93Cxx.gif differ diff --git a/AsProgrammer/Pinouts/schemeSPI45.gif b/AsProgrammer/Pinouts/schemeSPI45.gif new file mode 100644 index 0000000..39c3613 Binary files /dev/null and b/AsProgrammer/Pinouts/schemeSPI45.gif differ diff --git a/AsProgrammer/chiplist.xml b/AsProgrammer/chiplist.xml new file mode 100644 index 0000000..5f98f77 --- /dev/null +++ b/AsProgrammer/chiplist.xml @@ -0,0 +1,1002 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_25AA010A page="16" size="128" spicmd="95"/> + <_25AA020A page="16" size="256" spicmd="95"/> + <_25AA040 page="16" size="512" spicmd="95"/> + <_25AA040A page="16" size="512" spicmd="95"/> + <_25AA080 page="16" size="1024" spicmd="95"/> + <_25AA080A page="16" size="1024" spicmd="95"/> + <_25AA080B page="32" size="1024" spicmd="95"/> + <_25AA080C page="16" size="1024" spicmd="95"/> + <_25AA080D page="32" size="1024" spicmd="95"/> + <_25AA1024 page="256" size="131072" spicmd="95"/> + <_25AA128 page="64" size="16384" spicmd="95"/> + <_25AA160 page="16" size="2048" spicmd="95"/> + <_25AA160A page="16" size="2048" spicmd="95"/> + <_25AA160B page="32" size="2048" spicmd="95"/> + <_25AA256 page="64" size="32768" spicmd="95"/> + <_25AA320 page="32" size="4096" spicmd="95"/> + <_25AA512 page="128" size="65536" spicmd="95"/> + <_25AA640 page="32" size="8192" spicmd="95"/> + <_25C040 page="16" size="512" spicmd="95"/> + <_25C080 page="16" size="1024" spicmd="95"/> + <_25C160 page="16" size="2048" spicmd="95"/> + <_25C320 page="32" size="4096" spicmd="95"/> + <_25C640 page="32" size="8192" spicmd="95"/> + <_25LC010A page="16" size="128" spicmd="95"/> + <_25LC020A page="16" size="256" spicmd="95"/> + <_25LC040 page="16" size="512" spicmd="95"/> + <_25LC040A page="16" size="512" spicmd="95"/> + <_25LC080 page="16" size="1024" spicmd="95"/> + <_25LC080A page="16" size="1024" spicmd="95"/> + <_25LC080B page="32" size="1024" spicmd="95"/> + <_25LC080C page="16" size="1024" spicmd="95"/> + <_25LC080D page="32" size="1024" spicmd="95"/> + <_25LC128 page="64" size="16384" spicmd="95"/> + <_25LC160 page="16" size="2048" spicmd="95"/> + <_25LC160A page="16" size="2048" spicmd="95"/> + <_25LC160B page="32" size="2048" spicmd="95"/> + <_25LC320 page="32" size="4096" spicmd="95"/> + <_25LC640 page="32" size="8192" spicmd="95"/> + <_25LC256 page="64" size="32768" spicmd="95"/> + <_25LC512 page="128" size="65536" spicmd="95"/> + <_25LC1024 page="256" size="131072" spicmd="95"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_24LC515 page="64" size="65536" addrtype="5"/> + <_24LC1025 page="128" size="131072" addrtype="6"/> + <_24LC1026 page="128" size="131072" addrtype="6"/> + + + + + + + <_24C01 page="8" size="128" addrtype="1"/> + <_24C02 page="8" size="256" addrtype="1"/> + <_24C04 page="16" size="512" addrtype="2"/> + <_24C08 page="16" size="1024" addrtype="3"/> + <_24C16 page="16" size="2048" addrtype="4"/> + <_24C32 page="32" size="4096" addrtype="5"/> + <_24C64 page="32" size="8192" addrtype="5"/> + <_24C128 page="64" size="16384" addrtype="5"/> + <_24C256 page="64" size="32768" addrtype="5"/> + <_24C512 page="128" size="65536" addrtype="5"/> + <_24C1024 page="256" size="131072" addrtype="6"/> + <_24C2048 page="256" size="262144" addrtype="7"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AsProgrammer/lang/en.po b/AsProgrammer/lang/en.po new file mode 100644 index 0000000..537c7bd --- /dev/null +++ b/AsProgrammer/lang/en.po @@ -0,0 +1,681 @@ +#English +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: avrfuses.fus_str_msg +msgid "AVR Fuses and Bit Lock " +msgstr "" + +#: msgstr.str_45page_powerof2 +msgid "Page size is power of 2!" +msgstr "Page size is power of 2!" + +#: msgstr.str_45page_std +msgid "Default page size is set" +msgstr "Default page size is set" + +#: msgstr.str_avr_init_error +msgid "AVR initialisation failed" +msgstr "" + +#: msgstr.str_block_en +msgid "Possible protection is enabled. Press \"Unprotect\" and check datasheet" +msgstr "Possible protection is enabled. Press \"Unprotect\" and check datasheet" + +#: msgstr.str_buff_empty +msgid "No data in buffer" +msgstr "" + +#: msgstr.str_changed +msgid "Modified" +msgstr "Modified" + +#: msgstr.str_changed_spi_speed +msgid "Lower AVR SPI Speed" +msgstr "" + +#: msgstr.str_check_settings +msgid "Check settings" +msgstr "Check settings" + +#: msgstr.str_choose_avr +msgid "Choose an AVR Component in list" +msgstr "" + +#: msgstr.str_choose_ic +msgid "Choose a Component in list" +msgstr "" + +#: msgstr.str_combo_warn +msgid "IC will be erased and programmed. Continue?" +msgstr "IC will be erased and programmed. Continue?" + +#: msgstr.str_connection_error +msgid "Connecting Error " +msgstr "Connecting Error " + +#: msgstr.str_curr_hw +msgid "Current programmer: " +msgstr "Current programmer: " + +#: msgstr.str_dlg_filechgd +msgid "file modified" +msgstr "" + +#: msgstr.str_dlg_fileext +msgid "File |*.bin;*.hex|File |*.bin|File |*.hex|Files |*.*" +msgstr "" + +#: msgstr.str_dlg_savefile +msgid "Save changes?" +msgstr "Save changes?" + +#: msgstr.str_done +msgid "Done" +msgstr "Done" + +#: msgstr.str_erase_notice +msgid "The process can take more than a minute on large flash memories!" +msgstr "The process can take more than a minute on large flash memories!" + +#: msgstr.str_erasing_flash +msgid "Erasing memory..." +msgstr "Erasing memory..." + +#: msgstr.str_fail +msgid "Unsuccess" +msgstr "" + +#: msgstr.str_goto_addr +msgctxt "msgstr.str_goto_addr" +msgid "Goto address" +msgstr "Goto address" + +#: msgstr.str_chip_no_answer +msgid "IC not responding" +msgstr "" + +#: msgstr.str_id_unknown +msgid "(Unknown ID)" +msgstr "(Unknown ID)" + +#: msgstr.str_mini_eeprom_support +msgid "This firmware do not support I2C and 93Cxx" +msgstr "This firmware do not support I2C and 93Cxx" + +#: msgstr.str_new_sreg +msgid "New SREG: " +msgstr "New SREG: " + +#: msgstr.str_not_found_hex +msgid "Value not found" +msgstr "Value not found" + +#: msgstr.str_no_eeprom_support +msgid "This firmware do not support memory programming" +msgstr "This firmware do not support memory programming" + +#: msgstr.str_no_hardw_support +msgid "This hardware is not supported!" +msgstr "" + +#: msgstr.str_old_sreg +msgid "Old SREG: " +msgstr "Old SREG: " + +#: msgstr.str_reading_flash +msgid "Reading memory..." +msgstr "Reading memory..." + +#: msgstr.str_script_no_section +msgid "There is no section: " +msgstr "There is no section: " + +#: msgstr.str_script_run_section +msgid "Runs section: " +msgstr "Runs section: " + +#: msgstr.str_script_sel_section +msgid "Select section" +msgstr "Select section" + +#: msgstr.str_search_hex +msgid "Search HEX value" +msgstr "Search HEX value" + +#: msgstr.str_sel_chip +msgid "Selected CHIP: " +msgstr "" + +#: msgstr.str_set_speed_error +msgid "Error setting SPI speed" +msgstr "Error setting SPI speed" + +#: msgstr.str_size +msgid "Size: " +msgstr "Size: " + +#: msgstr.str_specify_hex +msgid "Use HEX numbers" +msgstr "Use HEX numbers" + +#: msgstr.str_start_erase +msgid "Erase IC?" +msgstr "Erase IC?" + +#: msgstr.str_start_write +msgid "Start programming?" +msgstr "" + +#: msgstr.str_time +msgid "Execution time: " +msgstr "Execution time: " + +#: msgstr.str_success +msgid "Success" +msgstr "" + +#: msgstr.str_usb_timeout +msgid "USB_control_msg timeout!" +msgstr "USB_control_msg timeout!" + +#: msgstr.str_user_cancel +msgid "Canceled by user" +msgstr "Canceled by user" + +#: msgstr.str_using_script +msgid "Script: " +msgstr "Script: " + +#: msgstr.str_verify +msgid "Verify memory..." +msgstr "Verify memory..." + +#: msgstr.str_verify_error +msgid "Verification error on address: " +msgstr "Verification error on address: " + +#: msgstr.str_writing_flash +msgid "Programming memory..." +msgstr "Programming memory..." + +#: msgstr.str_writing_flash_wchk +msgid "Programming memory(verifying)..." +msgstr "Programming memory(verifying)..." + +#: msgstr.str_wrong_bytes_read +msgid "Number of bytes readed not equal IC size" +msgstr "Number of bytes readed not equal IC size" + +#: msgstr.str_wrong_bytes_write +msgid "Number of written bytes not equal IC size" +msgstr "Number of written bytes not equal IC size" + +#: msgstr.str_wrong_file_size +msgid "File size larger than IC size" +msgstr "File size larger than IC size" + +#: search.sfound +msgid "Found: " +msgstr "" + +#: search.sreplaced +msgid "Replaced: " +msgstr "" + +#: tavrfusesform.btcancel.caption +msgctxt "tavrfusesform.btcancel.caption" +msgid "Cancel" +msgstr "" + +#: tavrfusesform.btfusecalc.caption +msgid "Fus Calc" +msgstr "" + +#: tavrfusesform.btloaddeffuses.caption +msgid "Load Default" +msgstr "" + +#: tavrfusesform.btreadfuses.caption +msgid "Read" +msgstr "" + +#: tavrfusesform.btwritefuses.caption +msgid "Write" +msgstr "" + +#: tavrfusesform.fuseextgroup.caption +msgid "Extended Fuse Byte" +msgstr "" + +#: tavrfusesform.fusehighgroup.caption +msgid "Fuse High Byte" +msgstr "" + +#: tavrfusesform.fuselockgroup.caption +msgid "Lock Bit Byte" +msgstr "" + +#: tavrfusesform.fuselockgroup.hint +msgctxt "tavrfusesform.fuselockgroup.hint" +msgid "Read Only" +msgstr "" + +#: tavrfusesform.fuselowgroup.caption +msgid "Fuse Low Byte" +msgstr "" + +#: tavrfusesform.lockencheckbox.caption +msgid "Locked" +msgstr "" + +#: tfillbuffform.bt16bits.caption +msgid "Value (16Bits):" +msgstr "" + +#: tfillbuffform.bt8bits.caption +msgid "Value (8Bits):" +msgstr "" + +#: tfillbuffform.btcancel.caption +msgid "Cancel" +msgstr "" + +#: tfillbuffform.btfillbuff.caption +msgid "OK" +msgstr "" + +#: tfillbuffform.btincr.caption +msgid "Incremental values (00..FF)" +msgstr "" + +#: tfillbuffform.btrandom.caption +msgid "Random values" +msgstr "" + +#: tfillbuffform.caption +msgid "Fill Buffer" +msgstr "" + +#: tfillbuffform.groupbox1.caption +msgid "HEX Values" +msgstr "" + +#: tfillbuffform.groupbox2.caption +msgid "Limits" +msgstr "" + +#: tfillbuffform.label2.caption +msgid "Start Address:" +msgstr "From:" + +#: tfillbuffform.label3.caption +msgid "End Address:" +msgstr "To:" + +#: tmainform.appbutton.hint +msgid "Access Protection Page (APP)" +msgstr "" + +#: tmainform.autoblankcheck.caption +msgid "Blank Check" +msgstr "" + +#: tmainform.autocheck.caption +msgid "Verify" +msgstr "" + +#: tmainform.autoclear.caption +msgid "Erase" +msgstr "" + +#: tmainform.autowrite.caption +msgctxt "tmainform.autowrite.caption" +msgid "Write" +msgstr "" + +#: tmainform.avreepromtbutton.caption +msgctxt "tmainform.avreepromtbutton.caption" +msgid "EEPROM" +msgstr "" + +#: tmainform.avrfusesbutton.caption +msgctxt "tmainform.avrfusesbutton.caption" +msgid "Fuses" +msgstr "" + +#: tmainform.blankcheckmenuitem.caption +msgid "BlankCheck" +msgstr "Blank check" + +#: tmainform.buffermenuitem.caption +msgid "Buffer" +msgstr "" + +#: tmainform.buttonblock.hint +msgid "Unprotect" +msgstr "Unprotect" + +#: tmainform.buttoncancel.hint +msgid "Cancel" +msgstr "Cancel" + +#: tmainform.buttonerase.hint +msgid "Erase IC" +msgstr "Erase IC" + +#: tmainform.buttonopenfile.hint +msgid "Open File" +msgstr "Open File" + +#: tmainform.buttonread.hint +msgctxt "tmainform.buttonread.hint" +msgid "Read IC" +msgstr "Read IC" + +#: tmainform.buttonreadid.hint +msgid "Detect IC" +msgstr "Detect Chip" + +#: tmainform.buttonsavefile.hint +msgctxt "tmainform.buttonsavefile.hint" +msgid "Save File" +msgstr "Save" + +#: tmainform.buttonverify.hint +msgid "Verify IC" +msgstr "Verify IC" + +#: tmainform.buttonwrite.hint +msgctxt "tmainform.buttonwrite.hint" +msgid "Write IC" +msgstr "Programm IC" + +#: tmainform.checkbox_i2c_a2.hint +msgctxt "tmainform.checkbox_i2c_a2.hint" +msgid "Set device address" +msgstr "" + +#: tmainform.checkbox_i2c_byteread.caption +msgid "R/W Byte by Byte" +msgstr "R/W Byte by Byte" + +#: tmainform.checkbox_i2c_byteread.hint +msgid "Read & Write, Byte by Byte" +msgstr "Byte by Byte reading/writing" + +#: tmainform.clearlogmenuitem.caption +msgid "Clear" +msgstr "Clear" + +#: tmainform.comboaddrtype.hint +msgid "Type of addressing" +msgstr "Type of addressing" + +#: tmainform.comboboxavrspeed.hint +msgid "AVR SPI frequency" +msgstr "" + +#: tmainform.combochipsize.hint +msgid "IC size in bytes" +msgstr "IC size in bytes" + +#: tmainform.combomwbitlen.hint +msgid "Address Lenght in bits" +msgstr "Lenght of address in bits" + +#: tmainform.combopagesize.hint +msgid "Write Page size" +msgstr "Write Page size" + +#: tmainform.copylogmenuitem.caption +msgctxt "tmainform.copylogmenuitem.caption" +msgid "Copy" +msgstr "Copy" + +#: tmainform.i2cavancedbutton.caption +msgid "i2cAvanced" +msgstr "" + +#: tmainform.labelpage.caption +msgid "Page" +msgstr "Page" + +#: tmainform.labelsize.caption +msgid "Size" +msgstr "Size" + +#: tmainform.labeltypead.caption +msgid "Address type" +msgstr "Address type" + +#: tmainform.i2cadvancedbutton.hint +msgid "I2C advanced settings access" +msgstr "" + +#: tmainform.labeladlength.caption +msgid "Address lenght" +msgstr "Address lenght" + +#: tmainform.labelspicmd.caption +msgid "SPI Family" +msgstr "SPI Family" + +#: tmainform.label_i2c_devaddr.caption +msgid "Device address" +msgstr "Device address" + +#: tmainform.menuarduinospiclock.caption +msgid "Clock" +msgstr "Clock" + +#: tmainform.menuavrispspiclock.caption +msgid "Clock" +msgstr "Clock" + +#: tmainform.menuchip.caption +msgid "IC" +msgstr "IC" + +#: tmainform.menuclearbuff.caption +msgid "Clear the Buffer" +msgstr "Clear Buffer(FF)" + +#: tmainform.menucopytoclip.caption +msgctxt "tmainform.menucopytoclip.caption" +msgid "Copy" +msgstr "Copy" + +#: tmainform.menufile.caption +msgid "File" +msgstr "File" + +#: tmainform.menufileopen.caption +msgid "Open" +msgstr "Open" + +#: tmainform.menufilesave.caption +msgid "Save" +msgstr "Save" + +#: tmainform.menufillbuffer.caption +msgid "Fill the Buffer" +msgstr "Fill the Buffer" + +#: tmainform.menufindchip.caption +msgctxt "tmainform.menufindchip.caption" +msgid "Search" +msgstr "Search" + +#: tmainform.menufindreplace.caption +msgid "Search/Replace" +msgstr "" + +#: tmainform.menugotooffset.caption +msgctxt "tmainform.menugotooffset.caption" +msgid "Goto address" +msgstr "Goto address" + +#: tmainform.menuignorebusybit.caption +msgid "Dont verify Busy bit" +msgstr "Dont verify Busy bit" + +#: tmainform.menuitembenchmark.caption +msgid "Benchmark" +msgstr "" + +#: tmainform.menuitemeditsreg.caption +msgid "Edit SREG" +msgstr "" + +#: tmainform.menuitemhardware.caption +msgid "Hardware" +msgstr "Hardware" + +#: tmainform.menuitemreadsreg.caption +msgid "Read SREG" +msgstr "Read SREG" + +#: tmainform.menuloaddev.caption +msgid "Load last device when starts" +msgstr "" + +#: tmainform.menumicrowire.caption +msgid "Microwire (soft)" +msgstr "" + +#: tmainform.menumwclock.caption +msgctxt "tmainform.menumwclock.caption" +msgid "Clock" +msgstr "Clock" + +#: tmainform.menuoptions.caption +msgid "Options" +msgstr "Options" + +#: tmainform.menupastefromclip.caption +msgid "Paste" +msgstr "" + +#: tmainform.menuskipff.caption +msgid "Skip FF" +msgstr "Skip FF" + +#: tmainform.menuspiclock.caption +msgctxt "tmainform.menuspiclock.caption" +msgid "Clock" +msgstr "Clock" + +#: tmainform.mwswapbutton.caption +msgid "Swap <-->" +msgstr "" + +#: tmainform.mwswapbutton.hint +msgid "Swap High and Low Bytes" +msgstr "" + +#: tmainform.scriptsmenuitem.caption +msgid "Скрипты" +msgstr "Scripts" + +#: tmainform.swapbytes.caption +msgid "Swap High and Low Bytes" +msgstr "" + +#: tmainform.unprotbutton.caption +msgid "UnProt" +msgstr "" + +#: tmainform.unprotbutton.hint +msgid "Removes protections in APP" +msgstr "" + +#: tsearchform.caption +msgctxt "tsearchform.caption" +msgid "Search" +msgstr "Search" + +#: tsearchform.casesensecheckbox.caption +msgid "case sensitive" +msgstr "case sensitive" + +#: tsearchform.findbutton.caption +msgid "Search" +msgstr "Search" + +#: tsearchform.hexcheckbox.caption +msgid "Search HEX" +msgstr "Search HEX" + +#: tsearchform.rcancelbutton.caption +msgctxt "tsearchform.rcancelbutton.caption" +msgid "Cancel" +msgstr "" + +#: tsearchform.replaceallbutton.caption +msgid "Repl. All" +msgstr "Repl. All" + +#: tsearchform.replacebutton.caption +msgctxt "tsearchform.replacebutton.caption" +msgid "Replace" +msgstr "Replace" + +#: tsearchform.replacecheckbox.caption +msgctxt "tsearchform.replacecheckbox.caption" +msgid "Replace:" +msgstr "Replace:" + +#: tsearchform.searchlabel.caption +msgid "Search:" +msgstr "Search:" + +#: tsregeditform.buttonreadsreg.caption +msgctxt "tsregeditform.buttonreadsreg.caption" +msgid "Read" +msgstr "Read" + +#: tsregeditform.buttonwritesreg.caption +msgctxt "tsregeditform.buttonwritesreg.caption" +msgid "Write" +msgstr "Write" + +#: tchipsearchform.caption +msgid "Search IC" +msgstr "Search IC" + +#: tchipsearchform.label1.caption +msgid "Content:" +msgstr "Content:" + +#: tchipsearchform.ChipSearchSelectButton.caption +msgid "Select IC" +msgstr "Select IC" + +#: msgstr.str_dlg_filechgd +msgid "File modified" +msgstr "File modified" + +#: tscripteditform.menuitemfile.caption +msgid "File" +msgstr "File" + +#: tscripteditform.menuitemopen.caption +msgid "Open" +msgstr "Open" + +#: tscripteditform.menuitemrun.caption +msgid "Execute" +msgstr "Execute" + +#: tscripteditform.menuitemsave.caption +msgid "Save" +msgstr "Save" + +#: tscripteditform.menuitemsaveas.caption +msgid "Save as..." +msgstr "Save as..." + +#: tscripteditform.menuitemsection.caption +msgid "Section =" +msgstr "Section =" diff --git a/AsProgrammer/lang/fr.po b/AsProgrammer/lang/fr.po new file mode 100644 index 0000000..7151d72 --- /dev/null +++ b/AsProgrammer/lang/fr.po @@ -0,0 +1,681 @@ +#French +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: avrfuses.fus_str_msg +msgid "AVR Fuses and Bit Lock " +msgstr "" + +#: msgstr.str_45page_powerof2 +msgid "Page size is power of 2!" +msgstr "La taille de la page est définie sur un multiple de deux!" + +#: msgstr.str_45page_std +msgid "Page size is power of 2!" +msgstr "La taille de page par défaut est définie." + +#: msgstr.str_avr_init_error +msgid "AVR initialisation failed" +msgstr "Echec initialisation AVR" + +#: msgstr.str_block_en +msgid "Possible protection is enabled. Press \"Unprotect\" and check datasheet" +msgstr "Peut-être protection en écriture. Cliquez sur "Supprimer la protection" et vérifiez la fiche technique." + +#: msgstr.str_buff_empty +msgid "No data in buffer" +msgstr "Buffer vide" + +#: msgstr.str_changed +msgid "Modified" +msgstr "Changé(s)" + +#: msgstr.str_changed_spi_speed +msgid "Lower AVR SPI Speed" +msgstr "Abaissement fréquence SPI AVR" + +#: msgstr.str_check_settings +msgid "Check settings" +msgstr "Vérifier les paramètres" + +#: msgstr.str_choose_avr +msgid "Choose an AVR Component in list" +msgstr "Choisissez un AVR" + +#: msgstr.str_choose_ic +msgid "Choose a Component in list" +msgstr "Choisissez un composant" + +#: msgstr.str_combo_warn +msgid "IC will be erased and programmed. Continue?" +msgstr "La puce sera effacée et écrasée. Continuer?" + +#: msgstr.str_connection_error +msgid "Connecting Error " +msgstr "Erreur de connexion " + +#: msgstr.str_curr_hw +msgid "Current programmer: " +msgstr "Programmeur actuel: " + +#: msgstr.str_dlg_filechgd +msgid "file modified" +msgstr "Fichier modifié" + +#: msgstr.str_dlg_fileext +msgid "File |*.bin;*.hex|File |*.bin|File |*.hex|Files |*.*" +msgstr "Fichier |*.bin;*.hex|Fichier |*.bin|Fichier |*.hex|Fichiers |*.*" + +#: msgstr.str_dlg_savefile +msgid "Save changes?" +msgstr "Sauvegarder les changements?"" + +#: msgstr.str_done +msgid "Done" +msgstr "Fait" + +#: msgstr.str_erase_notice +msgid "The process can take more than a minute on large flash memories!" +msgstr "Le processus peut prendre plus d’une minute sur de grandes mémoires flash!" + +#: msgstr.str_erasing_flash +msgid "Erasing memory..." +msgstr "Effacement..." + +#: msgstr.str_fail +msgid "Unsuccess" +msgstr "Echec" + +#: msgstr.str_goto_addr +msgctxt "msgstr.str_goto_addr" +msgid "Goto address" +msgstr "Aller à l'addresse" + +#: msgstr.str_chip_no_answer +msgid "IC not responding" +msgstr "La puce ne répond pas" + +#: msgstr.str_id_unknown +msgid "(Unknown ID)" +msgstr "(ID Iconnu)" + +#: msgstr.str_mini_eeprom_support +msgid "This firmware do not support I2C and 93Cxx" +msgstr "Ce firmware ne supporte pas I2C et 93Cxx!" + +#: msgstr.str_new_sreg +msgid "New SREG: " +msgstr "Nouveau SREG: " + +#: msgstr.str_not_found_hex +msgid "Value not found" +msgstr "Valeur non trouvée" + +#: msgstr.str_no_eeprom_support +msgid "This firmware do not support memory programming" +msgstr "Ce firmware n'est pas supporté!" + +#: msgstr.str_no_hardw_support +msgid "This hardware is not supported!" +msgstr "Ce matériel n'est pas supporté!" + +#: msgstr.str_old_sreg +msgid "Old SREG: " +msgstr "Ancien SREG: " + +#: msgstr.str_reading_flash +msgid "Reading memory..." +msgstr "Lecture memoire..." + +#: msgstr.str_script_no_section +msgid "There is no section: " +msgstr "Il n'y a pas de section: " + +#: msgstr.str_script_run_section +msgid "Runs section: " +msgstr "Section en cours: " + +#: msgstr.str_script_sel_section +msgid "Select section" +msgstr "Choisissez une section" + +#: msgstr.str_search_hex +msgid "Search HEX value" +msgstr "Recherche valeur HEX" + +#: msgstr.str_sel_chip +msgid "Selected CHIP: " +msgstr "CHIP sélectionné: " + +#: msgstr.str_set_speed_error +msgid "Error setting SPI speed" +msgstr "Erreur de réglage de la vitesse SPI" + +#: msgstr.str_size +msgid "Size: " +msgstr "Taille: " + +#: msgstr.str_specify_hex +msgid "Use HEX numbers" +msgstr "Spécifiez les nombres hexadécimaux" + +#: msgstr.str_start_erase +msgid "Erase IC?" +msgstr "Effacement IC?" + +#: msgstr.str_start_write +msgid "Start programming?" +msgstr "Commencer la programmation?" + +#: msgstr.str_time +msgid "Execution time: " +msgstr "Délai d'exécution: " + +#: msgstr.str_success +msgid "Success" +msgstr "Succès" + +#: msgstr.str_usb_timeout +msgid "USB_control_msg timeout!" +msgstr "USB_control_msg est tombé en fin de timeout!" + +#: msgstr.str_user_cancel +msgid "Canceled by user" +msgstr "Interrompu par l'utilisateur" + +#: msgstr.str_using_script +msgid "Canceled by user" +msgstr "Script utilisé: " + +#: msgstr.str_verify +msgid "Verify memory..." +msgstr "Verification memoire..." + +#: msgstr.str_verify_error +msgid "Verification error on address: " +msgstr "Erreur de comparaison à: " + +#: msgstr.str_writing_flash +msgid "Programming memory..." +msgstr "Ecriture memoire..." + +#: msgstr.str_writing_flash_wchk +msgid "Programming memory(verifying)..." +msgstr "Ecriture memoire(verification)..." + +#: msgstr.str_wrong_bytes_read +msgid "Number of bytes readed not equal IC size" +msgstr "Le nombre d'octets lus n'est pas égal à la taille de la puce" + +#: msgstr.str_wrong_bytes_write +msgid "Number of written bytes not equal IC size" +msgstr "Le nombre d'octets écrits n'est pas égal à la taille de la puce" + +#: msgstr.str_wrong_file_size +msgid "File size larger than IC size" +msgstr "Taille de fichier supérieure à la taille de la puce" + +#: search.sfound +msgid "Found: " +msgstr "Trouvé: " + +#: search.sreplaced +msgid "Replaced: " +msgstr "Remplacé" + +#: tavrfusesform.btcancel.caption +msgctxt "tavrfusesform.btcancel.caption" +msgid "Cancel" +msgstr "Abandon" + +#: tavrfusesform.btfusecalc.caption +msgid "Fus Calc" +msgstr "" + +#: tavrfusesform.btloaddeffuses.caption +msgid "Load Default" +msgstr "" + +#: tavrfusesform.btreadfuses.caption +msgid "Read" +msgstr "Lecture" + +#: tavrfusesform.btwritefuses.caption +msgid "Write" +msgstr "Ecriture" + +#: tavrfusesform.fuseextgroup.caption +msgid "Extended Fuse Byte" +msgstr "" + +#: tavrfusesform.fusehighgroup.caption +msgid "Fuse High Byte" +msgstr "" + +#: tavrfusesform.fuselockgroup.caption +msgid "Lock Bit Byte" +msgstr "" + +#: tavrfusesform.fuselockgroup.hint +msgctxt "tavrfusesform.fuselockgroup.hint" +msgid "Read Only" +msgstr "Lecture seule" + +#: tavrfusesform.fuselowgroup.caption +msgid "Fuse Low Byte" +msgstr "" + +#: tavrfusesform.lockencheckbox.caption +msgid "Locked" +msgstr "" + +#: tfillbuffform.bt16bits.caption +msgid "Value (16Bits):" +msgstr "Valeur (16Bits):" + +#: tfillbuffform.bt8bits.caption +msgid "Value (8Bits):" +msgstr "Valeur (8Bits):" + +#: tfillbuffform.btcancel.caption +msgid "Cancel" +msgstr "Abandon" + +#: tfillbuffform.btfillbuff.caption +msgid "OK" +msgstr "" + +#: tfillbuffform.btincr.caption +msgid "Incremental values (00..FF)" +msgstr "Valeurs incrémentales (00..FF)" + +#: tfillbuffform.btrandom.caption +msgid "Random values" +msgstr "Valeurs aléatoires" + +#: tfillbuffform.caption +msgid "Fill Buffer" +msgstr "Emplir le Buffer" + +#: tfillbuffform.groupbox1.caption +msgid "HEX Values" +msgstr "" + +#: tfillbuffform.groupbox2.caption +msgid "Limits" +msgstr "" + +#: tfillbuffform.label2.caption +msgid "Start Address:" +msgstr "Addresse debut:" + +#: tfillbuffform.label3.caption +msgid "End Address:" +msgstr "Addresse Fin:" + +#: tmainform.appbutton.hint +msgid "Access Protection Page (APP)" +msgstr "" + +#: tmainform.autoblankcheck.caption +msgid "Blank Check" +msgstr "Test effacement" + +#: tmainform.autocheck.caption +msgid "Verify" +msgstr "Verifier" + +#: tmainform.autoclear.caption +msgid "Erase" +msgstr "Effacement" + +#: tmainform.autowrite.caption +msgctxt "tmainform.autowrite.caption" +msgid "Write" +msgstr "Ecrire" + +#: tmainform.avreepromtbutton.caption +msgctxt "tmainform.avreepromtbutton.caption" +msgid "EEPROM" +msgstr "" + +#: tmainform.avrfusesbutton.caption +msgctxt "tmainform.avrfusesbutton.caption" +msgid "Fuses" +msgstr "" + +#: tmainform.blankcheckmenuitem.caption +msgid "BlankCheck" +msgstr "Vérification effacement" + +#: tmainform.buffermenuitem.caption +msgid "Buffer" +msgstr "" + +#: tmainform.buttonblock.hint +msgid "Unprotect" +msgstr "Supprimer la protection" + +#: tmainform.buttoncancel.hint +msgid "Cancel" +msgstr "Abandonner" + +#: tmainform.buttonerase.hint +msgid "Erase IC" +msgstr "Effacement IC" + +#: tmainform.buttonopenfile.hint +msgid "Open File" +msgstr "Ouvrir" + +#: tmainform.buttonread.hint +msgctxt "tmainform.buttonread.hint" +msgid "Read IC" +msgstr "Lecture IC" + +#: tmainform.buttonreadid.hint +msgid "Detect IC" +msgstr "Detecter Chip" + +#: tmainform.buttonsavefile.hint +msgctxt "tmainform.buttonsavefile.hint" +msgid "Save File" +msgstr "Sauver" + +#: tmainform.buttonverify.hint +msgid "Verify IC" +msgstr "Verification IC" + +#: tmainform.buttonwrite.hint +msgctxt "tmainform.buttonwrite.hint" +msgid "Write IC" +msgstr "Programmer IC" + +#: tmainform.checkbox_i2c_a2.hint +msgctxt "tmainform.checkbox_i2c_a2.hint" +msgid "Set device address" +msgstr "" + +#: tmainform.checkbox_i2c_byteread.caption +msgid "R/W Byte by Byte" +msgstr "Lect. Ecr. par octet" + +#: tmainform.checkbox_i2c_byteread.hint +msgid "Read & Write, Byte by Byte" +msgstr "Lecture/écriture octet par octet" + +#: tmainform.clearlogmenuitem.caption +msgid "Clear" +msgstr "Effacer" + +#: tmainform.comboaddrtype.hint +msgid "Type of addressing" +msgstr "Type d'adressage mémoire" + +#: tmainform.comboboxavrspeed.hint +msgid "AVR SPI frequency" +msgstr "Fréquence SPI AVR" + +#: tmainform.combochipsize.hint +msgid "IC size in bytes" +msgstr "Taille IC en bytes" + +#: tmainform.combomwbitlen.hint +msgid "Address Lenght in bits" +msgstr "Longueur d'adresse en bits" + +#: tmainform.combopagesize.hint +msgid "Write Page size" +msgstr "Taille de la page en écriture" + +#: tmainform.copylogmenuitem.caption +msgctxt "tmainform.copylogmenuitem.caption" +msgid "Copy" +msgstr "Copier" + +#: tmainform.i2cavancedbutton.caption +msgid "i2cAvanced" +msgstr "" + +#: tmainform.labelpage.caption +msgid "Page" +msgstr "Page" + +#: tmainform.labelsize.caption +msgid "Size" +msgstr "Taille" + +#: tmainform.labeltypead.caption +msgid "Address type" +msgstr "Type d'adresse" + +#: tmainform.i2cadvancedbutton.hint +msgid "I2C advanced settings access" +msgstr "Accès aux paramètres avancés I2C" + +#: tmainform.labeladlength.caption +msgid "Address lenght" +msgstr "Longueur adresse" + +#: tmainform.labelspicmd.caption +msgid "SPI Family" +msgstr "SPI famille" + +#: tmainform.label_i2c_devaddr.caption +msgid "Device address" +msgstr "Device Address" + +#: tmainform.menuarduinospiclock.caption +msgid "Clock" +msgstr "Fréquence" + +#: tmainform.menuavrispspiclock.caption +msgid "Clock" +msgstr "Fréquence" + +#: tmainform.menuchip.caption +msgid "IC" +msgstr "IC" + +#: tmainform.menuclearbuff.caption +msgid "Clear the Buffer" +msgstr "RaZ Buffer" + +#: tmainform.menucopytoclip.caption +msgctxt "tmainform.menucopytoclip.caption" +msgid "Copy" +msgstr "Copier" + +#: tmainform.menufile.caption +msgid "File" +msgstr "Fichier" + +#: tmainform.menufileopen.caption +msgid "Open" +msgstr "Ouvrir" + +#: tmainform.menufilesave.caption +msgid "Save" +msgstr "Sauver" + +#: tmainform.menufillbuffer.caption +msgid "Fill the Buffer" +msgstr "Emplir le Buffer" + +#: tmainform.menufindchip.caption +msgctxt "tmainform.menufindchip.caption" +msgid "Search" +msgstr "Recherche" + +#: tmainform.menufindreplace.caption +msgid "Search/Replace" +msgstr "Trouver/Rempl." + +#: tmainform.menugotooffset.caption +msgctxt "tmainform.menugotooffset.caption" +msgid "Goto address" +msgstr "Aller à l'adresse" + +#: tmainform.menuignorebusybit.caption +msgid "Dont verify Busy bit" +msgstr "Ne pas vérifier le Busy bit" + +#: tmainform.menuitembenchmark.caption +msgid "Benchmark" +msgstr "" + +#: tmainform.menuitemeditsreg.caption +msgid "Edit SREG" +msgstr "Edition SREG" + +#: tmainform.menuitemhardware.caption +msgid "Hardware" +msgstr "Matériel" + +#: tmainform.menuitemreadsreg.caption +msgid "Read SREG" +msgstr "Lecture SREG" + +#: tmainform.menuloaddev.caption +msgid "Load last device when starts" +msgstr "Utiliser le dernier composant au démarrage" + +#: tmainform.menumicrowire.caption +msgid "Microwire (soft)" +msgstr "" + +#: tmainform.menumwclock.caption +msgctxt "tmainform.menumwclock.caption" +msgid "Clock" +msgstr "Frequence" + +#: tmainform.menuoptions.caption +msgid "Options" +msgstr "Options" + +#: tmainform.menupastefromclip.caption +msgid "Paste" +msgstr "Coller" + +#: tmainform.menuskipff.caption +msgid "Skip FF" +msgstr "Ne pas écrire les FF" + +#: tmainform.menuspiclock.caption +msgctxt "tmainform.menuspiclock.caption" +msgid "Clock" +msgstr "Fréqence" + +#: tmainform.mwswapbutton.caption +msgid "Swap <-->" +msgstr "" + +#: tmainform.mwswapbutton.hint +msgid "Swap High and Low Bytes" +msgstr "Permuter les bytes H et L" + +#: tmainform.scriptsmenuitem.caption +msgid "Скрипты" +msgstr "Scripts" + +#: tmainform.swapbytes.caption +msgid "Swap High and Low Bytes" +msgstr "Permuter les bytes H et L" + +#: tmainform.unprotbutton.caption +msgid "UnProt" +msgstr "" + +#: tmainform.unprotbutton.hint +msgid "Removes protections in APP" +msgstr "Raz protections APP" + +#: tsearchform.caption +msgctxt "tsearchform.caption" +msgid "Search" +msgstr "Recherche" + +#: tsearchform.casesensecheckbox.caption +msgid "case sensitive" +msgstr "Sensible à la case" + +#: tsearchform.findbutton.caption +msgid "Search" +msgstr "Trouver" + +#: tsearchform.hexcheckbox.caption +msgid "Search HEX" +msgstr "Recherche HEX" + +#: tsearchform.rcancelbutton.caption +msgctxt "tsearchform.rcancelbutton.caption" +msgid "Cancel" +msgstr "Abandon" + +#: tsearchform.replaceallbutton.caption +msgid "Repl. All" +msgstr "Rempl. Tout" + +#: tsearchform.replacebutton.caption +msgctxt "tsearchform.replacebutton.caption" +msgid "Replace" +msgstr "Remplacer" + +#: tsearchform.replacecheckbox.caption +msgctxt "tsearchform.replacecheckbox.caption" +msgid "Replace" +msgstr "Remplacer" + +#: tsearchform.searchlabel.caption +msgid "Search:" +msgstr "Rechercher:" + +#: tsregeditform.buttonreadsreg.caption +msgctxt "tsregeditform.buttonreadsreg.caption" +msgid "Read" +msgstr "Lire" + +#: tsregeditform.buttonwritesreg.caption +msgctxt "tsregeditform.buttonwritesreg.caption" +msgid "Write" +msgstr "Ecrire" + +#: tchipsearchform.caption +msgid "Search IC" +msgstr "Recherche IC" + +#: tchipsearchform.label1.caption +msgid "Content:" +msgstr "Le marquage contient:" + +#: tchipsearchform.ChipSearchSelectButton.caption +msgid "Select IC" +msgstr "Selectionner IC" + +#: msgstr.str_dlg_filechgd +msgid "File" +msgstr "Fichier modifié" + +#: tscripteditform.menuitemfile.caption +msgid "File" +msgstr "Fichier" + +#: tscripteditform.menuitemopen.caption +msgid "Open" +msgstr "Ouvrir" + +#: tscripteditform.menuitemrun.caption +msgid "Execute" +msgstr "Executer" + +#: tscripteditform.menuitemsave.caption +msgid "Save" +msgstr "Enregistrer" + +#: tscripteditform.menuitemsaveas.caption +msgid "Save as..." +msgstr "Enregistrer sous..." + +#: tscripteditform.menuitemsection.caption +msgid "Section =" +msgstr "Section =" diff --git a/AsProgrammer/lang/ru.po b/AsProgrammer/lang/ru.po new file mode 100644 index 0000000..22e8754 --- /dev/null +++ b/AsProgrammer/lang/ru.po @@ -0,0 +1,681 @@ +#Русский +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: avrfuses.fus_str_msg +msgid "AVR Fuses and Bit Lock " +msgstr "" + +#: msgstr.str_45page_powerof2 +msgid "Page size is power of 2!" +msgstr "Установлен размер страницы кратный двум!" + +#: msgstr.str_45page_std +msgid "Default page size is set" +msgstr "Установлен стандартный размер страницы" + +#: msgstr.str_avr_init_error +msgid "AVR initialisation failed" +msgstr "Ошибка инициализации AVR" + +#: msgstr.str_block_en +msgid "Possible protection is enabled. Press \"Unprotect\" and check datasheet" +msgstr "Возможно включена защита на запись. Нажмите кнопку \"Снять защиту\" и сверьтесь с даташитом" + +#: msgstr.str_buff_empty +msgid "No data in buffer" +msgstr "Нет данных в буфере" + +#: msgstr.str_changed +msgid "Modified" +msgstr "Изменен" + +#: msgstr.str_changed_spi_speed +msgid "Lower AVR SPI Speed" +msgstr "Более низкая скорость AVR SPI" + +#: msgstr.str_check_settings +msgid "Check settings" +msgstr "Проверьте настройки" + +#: msgstr.str_choose_avr +msgid "Choose an AVR Component in list" +msgstr "выберите AVR в списке" + +#: msgstr.str_choose_ic +msgid "Choose a Component in list" +msgstr "выберите компонент в списке" + +#: msgstr.str_combo_warn +msgid "IC will be erased and programmed. Continue?" +msgstr "Чип будет стерт и перезаписан. Продолжить?" + +#: msgstr.str_connection_error +msgid "Connecting Error " +msgstr "Ошибка подключения к " + +#: msgstr.str_curr_hw +msgid "Current programmer: " +msgstr "Используется программатор: " + +#: msgstr.str_dlg_filechgd +msgid "file modified" +msgstr "файл изменён" + +#: msgstr.str_dlg_fileext +msgid "File |*.bin;*.hex|File |*.bin|File |*.hex|Files |*.*" +msgstr "файл |*.bin;*.hex|файл |*.bin|файл |*.hex|файлы |*.*" + +#: msgstr.str_dlg_savefile +msgid "Save changes?" +msgstr "Сохранить изменения?" + +#: msgstr.str_done +msgid "Done" +msgstr "Готово" + +#: msgstr.str_erase_notice +msgid "The process can take more than a minute on large flash memories!" +msgstr "Процесс может длиться больше минуты на больших флешках!" + +#: msgstr.str_erasing_flash +msgid "Erasing memory..." +msgstr "Стираю флэшку..." + +#: msgstr.str_fail +msgid "Unsuccess" +msgstr "неуспех" + +#: msgstr.str_goto_addr +msgctxt "msgstr.str_goto_addr" +msgid "Goto address" +msgstr "Перейти по адресу" + +#: msgstr.str_chip_no_answer +msgid "IC not responding" +msgstr "Микросхема не отвечает" + +#: msgstr.str_id_unknown +msgid "(Unknown ID)" +msgstr "(Неизвестно)" + +#: msgstr.str_mini_eeprom_support +msgid "This firmware do not support I2C and 93Cxx" +msgstr "Данная версия прошивки не поддерживает I2C и MW!" + +#: msgstr.str_new_sreg +msgid "New SREG: " +msgstr "Стало Sreg: " + +#: msgstr.str_not_found_hex +msgid "Value not found" +msgstr "Значение не найдено" + +#: msgstr.str_no_eeprom_support +msgid "This firmware do not support memory programming" +msgstr "Данная версия прошивки не поддерживается!" + +#: msgstr.str_no_hardw_support +msgid "This hardware is not supported!" +msgstr "Это оборудование не поддерживается!" + +#: msgstr.str_old_sreg +msgid "Old SREG: " +msgstr "Было Sreg: " + +#: msgstr.str_reading_flash +msgid "Reading memory..." +msgstr "Читаю флэшку..." + +#: msgstr.str_script_no_section +msgid "There is no section: " +msgstr "Нет секции: " + +#: msgstr.str_script_run_section +msgid "Runs section: " +msgstr "Выполняется секция: " + +#: msgstr.str_script_sel_section +msgid "Select section" +msgstr "Выберите секцию" + +#: msgstr.str_search_hex +msgid "Search HEX value" +msgstr "Поиск HEX значения" + +#: msgstr.str_sel_chip +msgid "Selected CHIP: " +msgstr "выбранный микросхема: " + +#: msgstr.str_set_speed_error +msgid "Error setting SPI speed" +msgstr "Ошибка установки скорости SPI" + +#: msgstr.str_size +msgid "Size: " +msgstr "Размер: " + +#: msgstr.str_specify_hex +msgid "Use HEX numbers" +msgstr "Укажите шестнадцатеричные числа" + +#: msgstr.str_start_erase +msgid "Erase IC?" +msgstr "Точно стереть чип?" + +#: msgstr.str_start_write +msgid "Start programming?" +msgstr "Начать запись?" + +#: msgstr.str_time +msgid "Execution time: " +msgstr "Время выполнения: " + +#: msgstr.str_success +msgid "Success" +msgstr "успех" + +#: msgstr.str_usb_timeout +msgid "USB_control_msg timeout!" +msgstr "USB_control_msg отвалился по таймауту!" + +#: msgstr.str_user_cancel +msgid "Canceled by user" +msgstr "Прервано пользователем" + +#: msgstr.str_using_script +msgid "Script: " +msgstr "Используется скрипт: " + +#: msgstr.str_verify +msgid "Verify memory..." +msgstr "Проверяю флэшку..." + +#: msgstr.str_verify_error +msgid "Verification error on address: " +msgstr "Ошибка сравнения по адресу: " + +#: msgstr.str_writing_flash +msgid "Записываю флэшку..." +msgstr "Записываю флэшку..." + +#: msgstr.str_writing_flash_wchk +msgid "Programming memory..." +msgstr "Записываю флэшку с проверкой..." + +#: msgstr.str_wrong_bytes_read +msgid "Number of bytes readed not equal IC size" +msgstr "Количество прочитанных байт не равно размеру флэшки" + +#: msgstr.str_wrong_bytes_write +msgid "Number of written bytes not equal IC size" +msgstr "Количество записанных байт не равно размеру флэшки" + +#: msgstr.str_wrong_file_size +msgid "File size larger than IC size" +msgstr "Размер файла больше размера чипа" + +#: search.sfound +msgid "Found: " +msgstr "найденный: " + +#: search.sreplaced +msgid "Replaced: " +msgstr "Заменены: " + +#: tavrfusesform.btcancel.caption +msgctxt "tavrfusesform.btcancel.caption" +msgid "Cancel" +msgstr "отменить" + +#: tavrfusesform.btfusecalc.caption +msgid "Fus Calc" +msgstr "" + +#: tavrfusesform.btloaddeffuses.caption +msgid "Load Default" +msgstr "умолчанию" + +#: tavrfusesform.btreadfuses.caption +msgid "Read" +msgstr "Читать" + +#: tavrfusesform.btwritefuses.caption +msgid "Write" +msgstr "Записать" + +#: tavrfusesform.fuseextgroup.caption +msgid "Extended Fuse Byte" +msgstr "" + +#: tavrfusesform.fusehighgroup.caption +msgid "Fuse High Byte" +msgstr "" + +#: tavrfusesform.fuselockgroup.caption +msgid "Lock Bit Byte" +msgstr "" + +#: tavrfusesform.fuselockgroup.hint +msgctxt "tavrfusesform.fuselockgroup.hint" +msgid "Read Only" +msgstr "Режим только для чтения" + +#: tavrfusesform.fuselowgroup.caption +msgid "Fuse Low Byte" +msgstr "" + +#: tavrfusesform.lockencheckbox.caption +msgid "Locked" +msgstr "" + +#: tfillbuffform.bt16bits.caption +msgid "Value (16Bits):" +msgstr "значени (16Bits):" + +#: tfillbuffform.bt8bits.caption +msgid "Value (8Bits):" +msgstr "значени (8Bits):" + +#: tfillbuffform.btcancel.caption +msgid "Cancel" +msgstr "отменить" + +#: tfillbuffform.btfillbuff.caption +msgid "OK" +msgstr "" + +#: tfillbuffform.btincr.caption +msgid "Incremental values (00..FF)" +msgstr "Добавочные значения (00..FF)" + +#: tfillbuffform.btrandom.caption +msgid "Random values" +msgstr "Случайные значения" + +#: tfillbuffform.caption +msgid "Fill Buffer" +msgstr "Заполнить буфер" + +#: tfillbuffform.groupbox1.caption +msgid "HEX Values" +msgstr "" + +#: tfillbuffform.groupbox2.caption +msgid "Limits" +msgstr "" + +#: tfillbuffform.label2.caption +msgid "Start Address:" +msgstr "Начальный адрес:" + +#: tfillbuffform.label3.caption +msgid "End Address:" +msgstr "Конечный адрес:" + +#: tmainform.appbutton.hint +msgid "Access Protection Page (APP)" +msgstr "" + +#: tmainform.autoblankcheck.caption +msgid "Blank Check" +msgstr "Проверка на чистоту" + +#: tmainform.autocheck.caption +msgid "Verify" +msgstr "Сравнить содержимое" + +#: tmainform.autoclear.caption +msgid "Erase" +msgstr "Стереть" + +#: tmainform.autowrite.caption +msgctxt "tmainform.autowrite.caption" +msgid "Write" +msgstr "Записать" + +#: tmainform.avreepromtbutton.caption +msgctxt "tmainform.avreepromtbutton.caption" +msgid "EEPROM" +msgstr "" + +#: tmainform.avrfusesbutton.caption +msgctxt "tmainform.avrfusesbutton.caption" +msgid "Fuses" +msgstr "" + +#: tmainform.blankcheckmenuitem.caption +msgid "BlankCheck" +msgstr "Проверка на чистоту" + +#: tmainform.buffermenuitem.caption +msgid "Buffer" +msgstr "буфер" + +#: tmainform.buttonblock.hint +msgid "Unprotect" +msgstr "Снять защиту" + +#: tmainform.buttoncancel.hint +msgid "Cancel" +msgstr "Прервать текущею операцию" + +#: tmainform.buttonerase.hint +msgid "Erase IC" +msgstr "Стереть" + +#: tmainform.buttonopenfile.hint +msgid "Open File" +msgstr "Открыть файл" + +#: tmainform.buttonread.hint +msgctxt "tmainform.buttonread.hint" +msgid "Read IC" +msgstr "Читать чип" + +#: tmainform.buttonreadid.hint +msgid "Detect IC" +msgstr "Определить чип" + +#: tmainform.buttonsavefile.hint +msgctxt "tmainform.buttonsavefile.hint" +msgid "Save File" +msgstr "Сохранить файл" + +#: tmainform.buttonverify.hint +msgid "Verify IC" +msgstr "Сравнить содержимое" + +#: tmainform.buttonwrite.hint +msgctxt "tmainform.buttonwrite.hint" +msgid "Write IC" +msgstr "Записать" + +#: tmainform.checkbox_i2c_a2.hint +msgctxt "tmainform.checkbox_i2c_a2.hint" +msgid "Set device address" +msgstr "Установить адрес устройства" + +#: tmainform.checkbox_i2c_byteread.caption +msgid "R/W Byte by Byte" +msgstr "Побайтовое чтение" + +#: tmainform.checkbox_i2c_byteread.hint +msgid "Read & Write, Byte by Byte" +msgstr "Читать байт за байтом" + +#: tmainform.clearlogmenuitem.caption +msgid "Clear" +msgstr "Очистить" + +#: tmainform.comboaddrtype.hint +msgid "Type of addressing" +msgstr "Тип адресации к памяти" + +#: tmainform.comboboxavrspeed.hint +msgid "AVR SPI frequency" +msgstr "SPI AVR частота" + +#: tmainform.combochipsize.hint +msgid "IC size in bytes" +msgstr "Размер чипа в байтах" + +#: tmainform.combomwbitlen.hint +msgid "Address Lenght in bits" +msgstr "Длинна адреса в битах" + +#: tmainform.combopagesize.hint +msgid "Write Page size" +msgstr "Размер страницы в письменном виде" + +#: tmainform.copylogmenuitem.caption +msgctxt "tmainform.copylogmenuitem.caption" +msgid "Copy" +msgstr "Копировать" + +#: tmainform.i2cavancedbutton.caption +msgid "i2cAvanced" +msgstr "" + +#: tmainform.labelpage.caption +msgid "Page" +msgstr "Страница" + +#: tmainform.labelsize.caption +msgid "Size" +msgstr "Размер" + +#: tmainform.labeltypead.caption +msgid "Address type" +msgstr "Тип адреса" + +#: tmainform.i2cadvancedbutton.hint +msgid "I2C advanced settings access" +msgstr "Доступ к расширенным настройкам I2C" + +#: tmainform.labeladlength.caption +msgid "Address lenght" +msgstr "Длина адреса" + +#: tmainform.labelspicmd.caption +msgid "SPI Family" +msgstr "Команды SPI" + +#: tmainform.label_i2c_devaddr.caption +msgid "Device address" +msgstr "Адрес устройства" + +#: tmainform.menuarduinospiclock.caption +msgid "Clock" +msgstr "Частота" + +#: tmainform.menuavrispspiclock.caption +msgid "Clock" +msgstr "Частота" + +#: tmainform.menuchip.caption +msgid "IC" +msgstr "Микросхема" + +#: tmainform.menuclearbuff.caption +msgid "Clear the Buffer" +msgstr "Очистить буфер" + +#: tmainform.menucopytoclip.caption +msgctxt "tmainform.menucopytoclip.caption" +msgid "Copy" +msgstr "Копировать" + +#: tmainform.menufile.caption +msgid "File" +msgstr "файл" + +#: tmainform.menufileopen.caption +msgid "Open" +msgstr "Открыть" + +#: tmainform.menufilesave.caption +msgid "Save" +msgstr "Сохранить" + +#: tmainform.menufillbuffer.caption +msgid "Fill the Buffer"" +msgstr "Заполните буфер" + +#: tmainform.menufindchip.caption +msgctxt "tmainform.menufindchip.caption" +msgid "Search" +msgstr "Поиск" + +#: tmainform.menufindreplace.caption +msgid "Search/Replace" +msgstr "Поиск" + +#: tmainform.menugotooffset.caption +msgctxt "tmainform.menugotooffset.caption" +msgid "Goto address" +msgstr "Перейти по адресу" + +#: tmainform.menuignorebusybit.caption +msgid "Dont verify Busy bit" +msgstr "Не проверять Busy бит" + +#: tmainform.menuitembenchmark.caption +msgid "Benchmark" +msgstr "" + +#: tmainform.menuitemeditsreg.caption +msgid "Edit SREG" +msgstr "Изменить SREG" + +#: tmainform.menuitemhardware.caption +msgid "Hardware" +msgstr "Программатор" + +#: tmainform.menuitemreadsreg.caption +msgid "Read SREG" +msgstr "Прочитать SREG" + +#: tmainform.menuloaddev.caption +msgid "Load last device when starts" +msgstr "Используйте последний чип при запуске" + + +#: tmainform.menumicrowire.caption +msgid "Microwire (soft)" +msgstr "" + +#: tmainform.menumwclock.caption +msgctxt "tmainform.menumwclock.caption" +msgid "Clock" +msgstr "Частота" + +#: tmainform.menuoptions.caption +msgid "Options" +msgstr "Настройки" + +#: tmainform.menupastefromclip.caption +msgid "Paste" +msgstr "вставить" + +#: tmainform.menuskipff.caption +msgid "Skip FF" +msgstr "Не писать FF" + +#: tmainform.menuspiclock.caption +msgctxt "tmainform.menuspiclock.caption" +msgid "Clock" +msgstr "Частота" + +#: tmainform.mwswapbutton.caption +msgid "Swap <-->" +msgstr "" + +#: tmainform.mwswapbutton.hint +msgid "Swap High and Low Bytes" +msgstr "Поменять местами байты High и Low" + +#: tmainform.scriptsmenuitem.caption +msgid "Скрипты" +msgstr "Скрипты" + +#: tmainform.swapbytes.caption +msgid "Swap High and Low Bytes" +msgstr "Поменять местами байты в буфере" + +#: tmainform.unprotbutton.caption +msgid "UnProt" +msgstr "" + +#: tmainform.unprotbutton.hint +msgid "Removes protections in APP" +msgstr "Снять защиту" + +#: tsearchform.caption +msgctxt "tsearchform.caption" +msgid "Search" +msgstr "Поиск" + +#: tsearchform.casesensecheckbox.caption +msgid "case sensitive" +msgstr "Учитывать регистр" + +#: tsearchform.findbutton.caption +msgid "Search" +msgstr "Найти" + +#: tsearchform.hexcheckbox.caption +msgid "Search HEX" +msgstr "Искать HEX значение" + +#: tsearchform.rcancelbutton.caption +msgctxt "tsearchform.rcancelbutton.caption" +msgid "Cancel" +msgstr "Прервать" + +#: tsearchform.replaceallbutton.caption +msgid "Repl. All" +msgstr "Отв. все" + +#: tsearchform.replacebutton.caption +msgctxt "tsearchform.replacebutton.caption" +msgid "Replace" +msgstr "Заменить" + +#: tsearchform.replacecheckbox.caption +msgid "Replace:" +msgstr "Заменить:" + +#: tsearchform.searchlabel.caption +msgid "Search:" +msgstr "Искать:" + +#: tsregeditform.buttonreadsreg.caption +msgctxt "tsregeditform.buttonreadsreg.caption" +msgid "Read" +msgstr "Прочитать" + +#: tsregeditform.buttonwritesreg.caption +msgctxt "tsregeditform.buttonwritesreg.caption" +msgid "Write" +msgstr "Записать" + +#: tchipsearchform.caption +msgid "Search IC" +msgstr "Поиск микросхемы" + +#: tchipsearchform.label1.caption +msgid "Content:" +msgstr "Маркировка содержит:" + +#: tchipsearchform.ChipSearchSelectButton.caption +msgid "Select IC" +msgstr "Выбрать микросхему" + +#: msgstr.str_dlg_filechgd +msgid "File modified" +msgstr "файл изменён" + +#: tscripteditform.menuitemfile.caption +msgid "File" +msgstr "Файл" + +#: tscripteditform.menuitemopen.caption +msgid "Open" +msgstr "Открыть" + +#: tscripteditform.menuitemrun.caption +msgid "Execute" +msgstr "Выполнить" + +#: tscripteditform.menuitemsave.caption +msgid "Save" +msgstr "Сохранить" + +#: tscripteditform.menuitemsaveas.caption +msgid "Save as..." +msgstr "Сохранить как..." + +#: tscripteditform.menuitemsection.caption +msgid "Section =" +msgstr "Секция =" diff --git a/AsProgrammer/libusb0.dll b/AsProgrammer/libusb0.dll new file mode 100644 index 0000000..6e475b9 Binary files /dev/null and b/AsProgrammer/libusb0.dll differ diff --git a/AsProgrammer/scripts/GD25Q64_128_SecRegisters.pas b/AsProgrammer/scripts/GD25Q64_128_SecRegisters.pas new file mode 100644 index 0000000..d810ccb --- /dev/null +++ b/AsProgrammer/scripts/GD25Q64_128_SecRegisters.pas @@ -0,0 +1,176 @@ +// designed for GIGADEVICE GD25Q64 and GD25Q128 +// READ / WRITE / ERASE Security REGISTERS +// script can be adapted for other brand and models by changing 'RegSize' value in each section +{$ READ_JEDEC_ID} +begin + ID:= CreateByteArray(3); + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read JEDEC ID'); + + // read ID to test installation + SPIWrite (0, 1, $9F); + SPIRead(1, 3, ID); + + logprint('Read ID: ' + inttohex((GetArrayItem(ID, 0)),2)+ inttohex((GetArrayItem(ID, 1)),2)+ inttohex((GetArrayItem(ID, 2)),2)); + LogPrint ('End read JEDEC ID'); + SPIExitProgMode (); +end + +{$ READ_SECURITY_REGISTER_1_GD25Q64_128} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read GD25Q64_128 security register #1'); + RegSize :=1024; + // read register 1 + SPIWrite (0, 5, $48, $00, $10, $00, $00); + SPIReadToEditor (1, RegSize); + + LogPrint ('End read GD25Q64_128 security register #1'); + SPIExitProgMode (); +end + +{$ READ_SECURITY_REGISTER_2_GD25Q64_128} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read GD25Q64_128 security register #2'); + RegSize :=1024; + // read register 2 + SPIWrite (0, 5, $48, $00, $20, $00, $00); + SPIReadToEditor (1, RegSize); + + LogPrint ('End read GD25Q64_128 security register #2'); + SPIExitProgMode (); +end + +{$ READ_SECURITY_REGISTER_3_GD25Q64_128} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read GD25Q64_128 security register #3'); + RegSize :=1024; + // read register 3 + SPIWrite (0, 5, $48, $00, $30, $00, $00); + SPIReadToEditor (1, RegSize); + + LogPrint ('End read GD25Q64_128 security register #3'); + SPIExitProgMode (); +end + +{$ ERASE_SECURITY_REGISTER_1_GD25Q64_128} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start Erase GD25Q64_128 security register #1'); + // write enable + SPIWrite (1, 1, $06); + // erase register 1 + SPIWrite (1, 4, $44, $00, $10, $00); + + LogPrint ('End Erase GD25Q64_128 security register #1'); + SPIExitProgMode (); +end + +{$ ERASE_SECURITY_REGISTER_2_GD25Q64_128} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start Erase GD25Q64_128 security register #2'); + + // write enable + SPIWrite (1, 1, $06); + // erase register 2 + SPIWrite (1, 4, $44, $00, $20, $00); + + LogPrint ('End Erase GD25Q64_128 security register #2'); + SPIExitProgMode (); +end + +{$ ERASE_SECURITY_REGISTER_3_GD25Q64_128} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start Erase GD25Q64_128 security register #3'); + + // write enable + SPIWrite (1, 1, $06); + // erase register 3 + SPIWrite (1, 4, $44, $00, $30, $00); + + LogPrint ('End Erase GD25Q64_128 security register #3'); + SPIExitProgMode (); +end + +{$ WRITE_SECURITY_REGISTER_1_GD25Q64_128} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start write GD25Q64_128 security register #1'); + RegSize :=1024; + sreg := 0; + + // write enable + SPIWrite (1, 1, $06); + + // write register 1 + SPIWrite (0, 4, $42, $00, $10, $00); + SPIWriteFromEditor(1, Regsize, 0); + + //Busy + repeat + SPIWrite(0, 1, $05); + SPIRead(1, 1, sreg); + until((sreg and 1) <> 1); + + // write disable + SPIWrite (1, 1, $04); + LogPrint ('End write GD25Q64_128 security register #1'); + SPIExitProgMode (); +end + +{$ WRITE_SECURITY_REGISTER_2_GD25Q64_128} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start write GD25Q64_128 security register #2'); + RegSize :=1024; + sreg := 0; + + // write enable + SPIWrite (1, 1, $06); + + // write register 2 + SPIWrite (0, 4, $42, $00, $20, $00); + SPIWriteFromEditor(1, Regsize, 0); + + //Busy + repeat + SPIWrite(0, 1, $05); + SPIRead(1, 1, sreg); + until((sreg and 1) <> 1); + + // write disable + SPIWrite (1, 1, $04); + LogPrint ('End write GD25Q64_128 security register #2'); + SPIExitProgMode (); +end + +{$ WRITE_SECURITY_REGISTER_3_GD25Q64_128} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start write GD25Q64_128 security register #3'); + RegSize :=1024; + sreg := 0; + + // write enable + SPIWrite (1, 1, $06); + + // write register 3 + SPIWrite (0, 4, $42, $00, $30, $00); + SPIWriteFromEditor(1, Regsize, 0); + + //Busy + repeat + SPIWrite(0, 1, $05); + SPIRead(1, 1, sreg); + until((sreg and 1) <> 1); + + // write disable + SPIWrite (1, 1, $04); + LogPrint ('End write GD25Q64_128 security register #3'); + SPIExitProgMode (); +end + diff --git a/AsProgrammer/scripts/README.TXT b/AsProgrammer/scripts/README.TXT new file mode 100644 index 0000000..5d5c5b6 --- /dev/null +++ b/AsProgrammer/scripts/README.TXT @@ -0,0 +1,456 @@ + + 1. Description + ------------------- + + The module PASCALC.DCU is the Pascal-like language interpreter for Delphi. + The basic differences from standard Pascal the following: + + - All variables stored as variants. + + - It's no need to declare variables, labels and functions. PASCALC creates + variables dynamically on first assignment. Variable type depends on the + last value assigned, type checking is not carried out. + + - Expressions syntax: + + Arithmetic operators: +, -, *, /, ^ (power), SHL, SHL + Bitwise operators: BITOR,BITAND,BITXOR,BITNOT + Logical operators: >, <, >=, <=, =, <>, AND, OR, NOT, + constants TRUE and FALSE. + Operators precedence standard, you can use parentheses. + + + - Statements supported: + BEGIN... END + IF... THEN... ELSE + CASE + FOR... TO/DOWNTO... DO + WHILE... DO + REPEAT... UNTIL + BREAK + CONTINUE + GOTO + EXIT + USES + INCLUDE + + - All reserved words are declared in interface section as string array. + You can change them to anyone others. All identifiers should be different + (except assignment and equation, they may be the same). + + - Multi-dimensional arrays supported. Array items are variables whose names + consist from array name and indexes (in brackets). Array items properties + same as the simple variables. It's no need to declare arrays. Array index + continuity is not requred. It's possible to access string as char array. + You can assign chars or numbers in range 0..255 to string characters. + Array name should be unique, simple variable MyArr and array item MyArr[1] + can't exist at the same time. This rule allows to distinguish access to + 1-st character of string variable MyArr (MyArr[1]) from the accees to + the first item of array MyArr. To access character of string array item, + character index should be written in brackets after item name, for example + MyArr[1,2][3]. + + - All build-in functions are user-defined. Module pasfunc.pas contain + example of PASCALC implementations for common Delphi functions. You can use + this functions and write your own implementations for necessary functions. + There is no need to declare parameters for user-defined functions, therefore + it's types and amount are not limited. If necessary you can provide type + checking inside function code. Interpreter calculates all parameter values + and creates temporary values list (TVarList). Names of var-parameters in this + list are 'VAR', otherwise 'VALUE'. After function call interpreter updates + values for var-parameters. Function result type not checked, one function can + return number as well as string. Functions can be called as procedures (without + result usage). + + - Procedures and functions (in sense of the subroutines on interpreter language) + are supported. The function heading specifies only names of formal parameters, + without parameters types and pass method (var or value). Also, function's result + types are not declared. To return function result you should assign value to + variable "result". + + If actual parameter is variable (not expression), it considered as var-parameter. + In this case assigning new value to this parameter inside procedure or function + will affect the actual parameter variable. + + At the same time, all interpreter global variables inside a function or procedures + looks like local variables, with the same initial values as global ones. + You can change this values inside procedures (functions), but it's don't affect + the global variables. All new variables created inside procedures and functions + are local, and will be destroyed after exiting. + Therefore, it is possible to use any names for local variables, without conflicts + with the global variables. + + For libraries implementation, it is possible to use operators USES and INCLUDE. + + Syntax: USES 'filename'; + INCLUDE 'filename'; + + INCLIDE and USES are parsed by pre-processor before script execution. + INCLUDE inserts text from file 'filename' into the script, USES loads + procedures and functions declarations. + + + 2. License + ---------- + + This software is provided as it is, without any kind of warranty given. + The author can not be held responsible for any kind of damage, problems etc, + arised from using this software. PASCALC interpreter is shareware product. + Unregistered version has no time or functionality limitations, but can + show info screen. + + If you want get source code, you should register PASCALC and get registration code. + Use your registration code as password for source archive (Source\pascsrc.zip). + + Address for online registration (price $20): + https://www.regnow.com/softsell/nph-softsell.cgi?item=2608-2 + + You can modify PASCALC source code as you need, distribute executable files + compiled with PASCALC source. But you can't distribute original or modified + PASCALC source code, .DCU units or libraries based on PASCALC source code. + + + 3. PASCALC inteface + ------------------- + + +unit pascalc; + +{$F+,B-,R-} + +interface + +uses + Windows, Messages, SysUtils, Classes, Math; + +type TToken = + (tEMPTY, tVR, tCON, tTRUE, tFALSE, + tEQU, tOR, tAND, tNOT, tXOR, + tCOMMA, tLBL, tNEQ, tGT, tLS, + tGTE, tLSE, tADD, tSUB, tMUL, + tDIV, tPWR, tLBR, tRBR, tLARR, + tRARR, tSEMI, tREM, tREMB, tREME, + tASSIGN, tBEGIN, tEND, tIF, tTHEN, + tELSE, tFOR, tTO, tDOWNTO, tDO, + tWHILE, tREPEAT, tUNTIL, tBREAK, tCONTINUE, + tEXIT, tGOTO, tSHL, tSHR, tPROC, + tFUNCT, tUSES, tINCLUDE, tCASE, tOF, + tCOMMA2); + +type TTokenSet = set of TToken; + +const + ResWords : array[TToken] of string[10] = + ('', '', '', 'TRUE', 'FALSE', + '=', 'OR', 'AND', 'NOT', 'XOR', + ',', ':', '<>', '>', '<', + '>=', '<=', '+', '-', '*', + '/', '^', '(', ')', '[', + ']', ';', '//', '{', '}', + ':=', 'BEGIN', 'END', 'IF', 'THEN', + 'ELSE', 'FOR', 'TO', 'DOWNTO', 'DO', + 'WHILE', 'REPEAT', 'UNTIL', 'BREAK', 'CONTINUE', + 'EXIT', 'GOTO', 'SHL', 'SHR', 'PROCEDURE', + 'FUNCTION', 'USES', 'INCLUDE', 'CASE', 'OF', + '..'); + +const + Alpha : set of char = ['_','0'..'9','a'..'z','A'..'Z',''..'','',''..'','']; + StrDelimiter : char = ''''; + DecimalPoint : char = '.'; + TokenDelimiter : char = #127; + + +type TVar = record + Name : string; + Value : variant; +end; + +type TPVar = ^TVar; + +type TVarList = class (TList) + destructor Destroy; override; + procedure ClearAll; + function AddVar(V:TVar) : boolean; + function AddValue(N:string; V:variant) : boolean; + function VarExist(N:string):boolean; + function VarIndex(N:string):integer; + function VarByName(N:string;var V:TVar) : boolean; + function SetVar(V:TVar) : boolean; + function SetValue(N:string; V:variant) : boolean; + procedure CopyTo(VL:TVarList); +end; + +type TPVarList = ^TVarList; + +type PProcessProc = procedure; + +type PFunction = function(Sender:TObject; var A:TVarList; var R:TVar) : boolean; + +type TFunc = record + Name : string; + Func : Pointer; +end; + +type TPFunc = ^TFunc; + +type TFuncList = class (TList) + destructor Destroy; override; + procedure ClearAll; + function AddFunction(N:string; F:Pointer) : boolean; +end; + +type TProcedure = record + Name : string; + Body : string; + Params : string; + Result : boolean; +end; + +type TPProcedure = ^TProcedure; + +type TProcList = class(TList) + destructor Destroy; override; + procedure ClearAll; + function AddProc(Proc:TProcedure):boolean; + function ProcIndex(Name:string):integer; + function ProcByName(Name:string; var Proc:TProcedure):boolean; +end; + + +type TPasCalc = class + constructor Create; + destructor Destroy; override; + procedure ClearVars; + function VarCount : integer; + function VarIndex(N:string) : integer; + function VarByName(N:string; var V:TVar) : boolean; + function VarByIndex(I:integer; var V:TVar) : boolean; + function SetVar(V:TVar) : boolean; + function SetValue(N:string; V:variant):boolean; + procedure ClearFuncs; + function SetFunction(N:string; F:Pointer) : boolean; + procedure SetProcessProc(P:Pointer); + function Parse(S:string) : string; + function Calculate(S:string; var R:TVar) : boolean; + function Execute(S:string):boolean; + private + Expr : string; + ExprIndex : integer; + Token : string; + TokenCode : TToken; + + BlockLevel : integer; + BlockCmd : TToken; + GotoLabel : string; + + VarList : TVarList; + FuncList : TFuncList; + ProcList : TProcList; + + ProcessProc : PProcessProc; + + LastString : string; + LastParsed : string; + + procedure Clear; + procedure Process; + procedure Error(Msg,Line:string; Code:integer); + procedure Level1(var R:TVar); + procedure Level2(var R:TVar); + procedure Level3(var R:TVar); + procedure Level4(var R:TVar); + procedure Level5(var R:TVar); + procedure Level6(var R:TVar); + procedure Level7(var R:TVar); + procedure Level8(var R:TVar); + procedure Arith(o : TToken; var R,H:TVar); + procedure Unary(o : TToken; var R:TVar); + function GetIndex(S:string; var Index:integer; var T:TToken) : string; + function GetFuncParams(S:string; var Index:integer) : string; + function FindFunc(N:string) : integer; + function FindArray(N:string) : boolean; + procedure SetVarDirect(var R:TVar); + function CallFunc(N:string; A:string; var V:TVar) : boolean; + function CallProc(N:string; A:string; var V:TVar) : boolean; + function GetTextToken(S: string; var Index : integer; var Code : TToken) : string; + function TokenStr(T:TToken;S:string) : string; + function GetToken(S:string; var Index : integer; var Code : TToken) : string; + function GetTokenCode(S: string; var Index:integer; var Code:TToken) : integer; + function GetTokenLine(S:string; var Index:integer; var Code:TToken; + StopToken:TTokenSet) : string; + function NextToken(S:string; Index:integer) : TToken; + function GetOperator(Txt:string; var Index : integer; EndToken:TTokenSet) : string; + function ParseOperator(Txt:string; var Cmd,Line,Lbl : string) : TToken; + function DelRemarks(S:string) : string; + function UnParse(S:string; Show:boolean) : string; + function PreProcess(Txt:string):string; + function Calc(S:string; var R:TVar) : boolean; + procedure Exec(Txt:string); + procedure DoSet(CmdLine,Cmd,Line:string); + procedure DoIf(CmdLine,Line:string); + procedure DoBegin(CmdLine,Line:string); + procedure DoFor(CmdLine,Line:string); + procedure DoBreak(CmdLine,Line:string); + procedure DoContinue(CmdLine,Line:string); + procedure DoExit(CmdLine,Line:string); + procedure DoWhile(CmdLine,Line:string); + procedure DoRepeat(CmdLine,Line:string); + procedure DoGoto(CmdLine,Line:string); + procedure DoCase(CmdLine,Line:string); + public + Stop : boolean; + ErrCode : integer; + ErrMsg : string; + ErrLine : string; + end; + + + + 4. Functions (unit PASFUNC.PAS) + ------------------------------ + + // String functions + + Val + IntToStr + StrToInt + FloatToStr + StrToFloat + Copy + Pos + Length + Insert + Delete + Trim + TrimLeft + TrimRight + UpperCase + LowerCase + Format + + // DateTime functions + + Now + Date + Time + DateToStr + StrToDate + TimeToStr + StrToTime + FormatDateTime + DayOfWeek + IncMonth + DecodeDate + DecodeTime + EncodeDate + EncodeTime + YearDays + YearFrac + + // Math functions + Abs + Int + Frac + Round + Ceil + Floor + Trunc + Sin + Cos + Tan + ArcSin + ArcCos + ArcTan + Exp + Ln + IntPower + Sqr + Sqrt + Min + Max + Inc + Dec + + // Variable handling functions. + // Allows get or set variable value by calculated variable name. + + SetVar + GetVar + + // Misc functions + + Decode (simular with the Oracle Decode function) + + + 5. Interpreter usage + -------------------- + + See usage example in demo program (demo.dpr). At first you should write + user-defined functions you want to use in scripts and expressions. Function + should set result value (field Value of variable R:TVar) and return true. + On errors (wrong parameters, etc) function should return false. In your + program you should create an instance of TPasCalc class. + Then associate functions with names (TPasCalc.SetFunction). + To register pasfunc.pas function library, call SetFunctions. + You can set predefined variables (TPasCalc.SetVarNum or TPasCalc.SetVarStr). + Method TPasCalc.Calculate evaluates expression and returns result in variable + R:TVar. Method TPasCalc.Execute executes script and fills variable list. + You can access variables using TPasCalc.VarCount, TPasCalc.VarByIndex or + TPasCalc.VarByName methods. TPasCalc.ErrCode, TPasCalc.ErrMsg and + TPasCalc.ErrLine indicates last error code, error message and line that + raises error. Variable list not cleared in Calculate and Execute methods. + You can reset all variables using TPasCalc.ClearVars. TPasCalc.ClearFuncs + resets function list. Method TPasCalc.SetProcessProc sets pointer to + user-defined callback procedure. Interpreter calls this procedure in internal + cycles. In this procedure you can check some condition (timeout for example) + and break execution by assigning TPasCalc.Stop:=TRUE. It is useful to call + Application.ProcessMessages in this procedure. If callback procedure not + assigned, interpreter uses Process method instead. Process method performs + only messages processing. + To improve perfomance you can prepare script using Parse method, and then + execute previously prepared script. + + + 6. Error codes + -------------- + + 0 - O.K. + 1 - Error in expression + 2 - Unpaired parentheses + 3 - Variable not found + 4 - Invalid variable/function/procedure name + 5 - Invalid typecast + 6 - Invalidstring constant + 7 - Incorrect function call + 8 - Function not found + 9 - Invalid operator + 10 - END expected + 11 - Too many END + 12 - TO or DOWNTO expected + 13 - FOR-loop variable expected + 14 - DO expected + 15 - BREAK outside a loop + 16 - UNTIL expected + 17 - Too many UNTIL + 18 - Label not found + 19 - Index out of range + 20 - Value out of range + 21 - ']' expected + 22 - Too many '[' + 23 - Division by zero + 24 - Variable or array name duplicated + 25 - File pen error + 26 - Function must return result + 27 - CASE without OF + 28 - Too many ELSE in CASE statement + 29 - Case range expected + + + 7. Author + --------- + + Alex Boiko + alexboiko@mtu-net.ru + http://alexboiko.da.ru + http://alexboiko.chat.ru diff --git a/AsProgrammer/scripts/README_RU.TXT b/AsProgrammer/scripts/README_RU.TXT new file mode 100644 index 0000000..b690b62 --- /dev/null +++ b/AsProgrammer/scripts/README_RU.TXT @@ -0,0 +1,463 @@ + 1. + ----------- + + pascalc.dcu Pascal - + Delphi. : + + - Variant, + . + + - , + . + , . + , . + 0..255 + ( 1). + + - : + : +, -, *, /, ^ ( ), SHL, SHR + : BITOR,BITAND,BITXOR,BITNOT + : >, <, >=, <=, =, <>, AND, OR, NOT, TRUE FALSE. + T . . + + - : + BEGIN ... END + IF ... THEN ... ELSE + CASE + FOR ... TO/DOWNTO ... DO + WHILE ... DO + REPEAT ... UNTIL + CONTINUE + BREAK + GOTO + EXIT + USES + INCLUDE + + - interface . + , + . . + . + . + + - , . + + . , + . + ( MyArr MyArr[1]). + , + . + , . + . + . + ( ) + - . , + . MyArr[1][2] 2- + 1- MyArr. MyArr[1] + MyArr, . + , + . + + - user-defined. M pasfunc.pas + Delphi. + demo-. , + + . , + ( write ). + + . + . + , VAR-, + + . + . pasfunc.pas + (- Max, Min). , + . + + - . + . + , + . + "result". + , + VAR- + . + , , + + . , , + + . , + , / . , + , + . + + USES INCLUDE. + : USES ' '; + INCLUDE ' '; + + USES INCLUDE , + . INCLUDE . USES + , + . + + + 2. . + ------------ + + PASCALC " ". + , . + . + , , , + ( ) . + + http://alexboiko.da.ru + http://alexboiko.chat.ru + + + 3. : + ----------------------------------- + +unit pascalc; + +{$F+,B-,R-} + +interface + +uses + Windows, Messages, SysUtils, Classes, Math; + +type TToken = + (tEMPTY, tVR, tCON, tTRUE, tFALSE, + tEQU, tOR, tAND, tNOT, tXOR, + tCOMMA, tLBL, tNEQ, tGT, tLS, + tGTE, tLSE, tADD, tSUB, tMUL, + tDIV, tPWR, tLBR, tRBR, tLARR, + tRARR, tSEMI, tREM, tREMB, tREME, + tASSIGN, tBEGIN, tEND, tIF, tTHEN, + tELSE, tFOR, tTO, tDOWNTO, tDO, + tWHILE, tREPEAT, tUNTIL, tBREAK, tCONTINUE, + tEXIT, tGOTO, tSHL, tSHR, tPROC, + tFUNCT, tUSES, tINCLUDE, tCASE, tOF, + tCOMMA2); + +type TTokenSet = set of TToken; + +const + ResWords : array[TToken] of string[10] = + ('', '', '', 'TRUE', 'FALSE', + '=', 'OR', 'AND', 'NOT', 'XOR', + ',', ':', '<>', '>', '<', + '>=', '<=', '+', '-', '*', + '/', '^', '(', ')', '[', + ']', ';', '//', '{', '}', + ':=', 'BEGIN', 'END', 'IF', 'THEN', + 'ELSE', 'FOR', 'TO', 'DOWNTO', 'DO', + 'WHILE', 'REPEAT', 'UNTIL', 'BREAK', 'CONTINUE', + 'EXIT', 'GOTO', 'SHL', 'SHR', 'PROCEDURE', + 'FUNCTION', 'USES', 'INCLUDE', 'CASE', 'OF', + '..'); + +const + Alpha : set of char = ['_','0'..'9','a'..'z','A'..'Z',''..'','',''..'','']; + StrDelimiter : char = ''''; + DecimalPoint : char = '.'; + TokenDelimiter : char = #127; + + +type TVar = record + Name : string; + Value : variant; +end; + +type TPVar = ^TVar; + +type TVarList = class (TList) + destructor Destroy; override; + procedure ClearAll; + function AddVar(V:TVar) : boolean; + function AddValue(N:string; V:variant) : boolean; + function VarExist(N:string):boolean; + function VarIndex(N:string):integer; + function VarByName(N:string;var V:TVar) : boolean; + function SetVar(V:TVar) : boolean; + function SetValue(N:string; V:variant) : boolean; + procedure CopyTo(VL:TVarList); +end; + +type TPVarList = ^TVarList; + +type PProcessProc = procedure; + +type PFunction = function(Sender:TObject; var A:TVarList; var R:TVar) : boolean; + +type TFunc = record + Name : string; + Func : Pointer; +end; + +type TPFunc = ^TFunc; + +type TFuncList = class (TList) + destructor Destroy; override; + procedure ClearAll; + function AddFunction(N:string; F:Pointer) : boolean; +end; + +type TProcedure = record + Name : string; + Body : string; + Params : string; + Result : boolean; +end; + +type TPProcedure = ^TProcedure; + +type TProcList = class(TList) + destructor Destroy; override; + procedure ClearAll; + function AddProc(Proc:TProcedure):boolean; + function ProcIndex(Name:string):integer; + function ProcByName(Name:string; var Proc:TProcedure):boolean; +end; + + +type TPasCalc = class + constructor Create; + destructor Destroy; override; + procedure ClearVars; + function VarCount : integer; + function VarIndex(N:string) : integer; + function VarByName(N:string; var V:TVar) : boolean; + function VarByIndex(I:integer; var V:TVar) : boolean; + function SetVar(V:TVar) : boolean; + function SetValue(N:string; V:variant):boolean; + procedure ClearFuncs; + function SetFunction(N:string; F:Pointer) : boolean; + procedure SetProcessProc(P:Pointer); + function Parse(S:string) : string; + function Calculate(S:string; var R:TVar) : boolean; + function Execute(S:string):boolean; + private + Expr : string; + ExprIndex : integer; + Token : string; + TokenCode : TToken; + + BlockLevel : integer; + BlockCmd : TToken; + GotoLabel : string; + + VarList : TVarList; + FuncList : TFuncList; + ProcList : TProcList; + + ProcessProc : PProcessProc; + + LastString : string; + LastParsed : string; + + procedure Clear; + procedure Process; + procedure Error(Msg,Line:string; Code:integer); + procedure Level1(var R:TVar); + procedure Level2(var R:TVar); + procedure Level3(var R:TVar); + procedure Level4(var R:TVar); + procedure Level5(var R:TVar); + procedure Level6(var R:TVar); + procedure Level7(var R:TVar); + procedure Level8(var R:TVar); + procedure Arith(o : TToken; var R,H:TVar); + procedure Unary(o : TToken; var R:TVar); + function GetIndex(S:string; var Index:integer; var T:TToken) : string; + function GetFuncParams(S:string; var Index:integer) : string; + function FindFunc(N:string) : integer; + function FindArray(N:string) : boolean; + procedure SetVarDirect(var R:TVar); + function CallFunc(N:string; A:string; var V:TVar) : boolean; + function CallProc(N:string; A:string; var V:TVar) : boolean; + function GetTextToken(S: string; var Index : integer; var Code : TToken) : string; + function TokenStr(T:TToken;S:string) : string; + function GetToken(S:string; var Index : integer; var Code : TToken) : string; + function GetTokenCode(S: string; var Index:integer; var Code:TToken) : integer; + function GetTokenLine(S:string; var Index:integer; var Code:TToken; + StopToken:TTokenSet) : string; + function NextToken(S:string; Index:integer) : TToken; + function GetOperator(Txt:string; var Index : integer; EndToken:TTokenSet) : string; + function ParseOperator(Txt:string; var Cmd,Line,Lbl : string) : TToken; + function DelRemarks(S:string) : string; + function UnParse(S:string; Show:boolean) : string; + function PreProcess(Txt:string):string; + function Calc(S:string; var R:TVar) : boolean; + procedure Exec(Txt:string); + procedure DoSet(CmdLine,Cmd,Line:string); + procedure DoIf(CmdLine,Line:string); + procedure DoBegin(CmdLine,Line:string); + procedure DoFor(CmdLine,Line:string); + procedure DoBreak(CmdLine,Line:string); + procedure DoContinue(CmdLine,Line:string); + procedure DoExit(CmdLine,Line:string); + procedure DoWhile(CmdLine,Line:string); + procedure DoRepeat(CmdLine,Line:string); + procedure DoGoto(CmdLine,Line:string); + procedure DoCase(CmdLine,Line:string); + public + Stop : boolean; + ErrCode : integer; + ErrMsg : string; + ErrLine : string; + end; + + + 4. (unit PASFUNC.PAS) + ------------------------------ + + // + + Val + IntToStr + StrToInt + FloatToStr + StrToFloat + Copy + Pos + Length + Insert + Delete + Trim + TrimLeft + TrimRight + UpperCase + LowerCase + Format + + // + + Now + Date + Time + DateToStr + StrToDate + TimeToStr + StrToTime + FormatDateTime + DayOfWeek + IncMonth + DecodeDate + DecodeTime + EncodeDate + EncodeTime + + // + + Abs + Int + Frac + Round + Ceil + Floor + Trunc + Sin + Cos + Tan + ArcSin + ArcCos + ArcTan + Exp + Ln + IntPower + Sqr + Sqrt + Min + Max + Inc + Dec + + // PASCALC . + // . + + SetVar + GetVar + + + 5. + ------------------------------- + + demo-. + pasfunc.pas, + c , . + Value R:TVar true. + ( ) + false. + + TPasCalc. SetProcessProc + + . . + , + (Application.ProcessMessages ). , + Process, . + + TPasCalc.SetFunction + . pasfunc.pas + SetFunctions. + SetVarNum SetVarStr. + + Calculate + R:TVar, Execute + . VarCount, VarByIndex + VarByName . + ErrCode. ErrMsg ErrLine + . + + Calculate Execute + . + ClearVars. + ClearFuncs. + , true TPasCalc.Stop. + + + Parse, . + Calculate Execute. + + + 6. (ErrCode) + ------------------------ + + 0 - O.K. + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - a + 7 - + 8 - + 9 - + 10 - END + 11 - END + 12 - TO DOWNTO + 13 - + 14 - DO + 15 - BREAK + 16 - UNTIL + 17 - UNTIL + 18 - + 19 - + 20 - + 21 - ']' + 22 - '[' + 23 - 0 + 24 - / + 25 - + 26 - + 27 - OF CASE + 28 - ELSE CASE + 29 - CASE + + + 7. : + --------- + + + alexboiko@mtu-net.ru + http://alexboiko.da.ru diff --git a/AsProgrammer/scripts/blockerase.pas b/AsProgrammer/scripts/blockerase.pas new file mode 100644 index 0000000..7620497 --- /dev/null +++ b/AsProgrammer/scripts/blockerase.pas @@ -0,0 +1,24 @@ +{$erase} //секция будет выполняться при нажатии кнопки "стереть" +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + + BlockSize := 65536; //Размер блока + sreg := 0; + ProgressBar(0, (_IC_SIZE / BlockSize)-1, 0); + + for i:=0 to (_IC_SIZE / BlockSize)-1 do + begin + SPIWrite(1, 1, $06); //wren + SPIWrite(1, 4, $D8, i,0,0); //BE + + //Busy? + repeat + SPIWrite(0, 1, $05); + SPIRead(1, 1, sreg); + until((sreg and 1) <> 1); + ProgressBar(1); + end; + + ProgressBar(0, 0, 0); + SPIExitProgMode(); +end diff --git a/AsProgrammer/scripts/i2c_example.pas b/AsProgrammer/scripts/i2c_example.pas new file mode 100644 index 0000000..9abe321 --- /dev/null +++ b/AsProgrammer/scripts/i2c_example.pas @@ -0,0 +1,59 @@ +{$read} +//reading 24c08 +begin + ChipSize := 1024; + MemAddr := 0; + ReadBuff := CreateByteArray(ChipSize); + DevAddr := $A8; + + if _IC_Name = '' then + begin + ShowMessage ('Choose a component in list'); + exit; + end; + + I2CEnterProgMode; + + I2CReadWrite(DevAddr, 1, ChipSize, MemAddr, ReadBuff); + ReadToEditor(ChipSize, 0, ReadBuff); + + I2CExitProgMode; +end + +{$write} +function I2CIsBusy(DevAdr): boolean; +begin + I2CStart; + Result := not I2CWriteByte(DevAdr); + I2CStop; +end; +//writing 24c08 +begin + ChipSize := 1024; + MemAddr := 0; + WriteByte := 0; + DevAddr := $A0; + if _IC_Name = '' then + begin + ShowMessage ('Choose a component in list'); + exit; + end; + ProgressBar(0, _IC_SIZE-1, 0); + + I2CEnterProgMode; + + for i:=0 to ChipSize-1 do + begin + WriteFromEditor(1, i, WriteByte); + I2CReadWrite(DevAddr, 2, 0, MemAddr, WriteByte); + while I2CIsBusy(DevAddr) do + MemAddr := MemAddr + 1; + if MemAddr = 256 then DevAddr := $A2; + if MemAddr = 512 then DevAddr := $A4; + if MemAddr = 768 then DevAddr := $A6; + ProgressBar(1); + end; + + I2CExitProgMode; + ProgressBar(0, 0, 0); +end diff --git a/AsProgrammer/scripts/script_func.html b/AsProgrammer/scripts/script_func.html new file mode 100644 index 0000000..6c1117d --- /dev/null +++ b/AsProgrammer/scripts/script_func.html @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Секции
{$read}Код секции выполняется при нажатии кнопки чтении памяти
{$write}Код секции выполняется при нажатии кнопки записи памяти
{$erase}Код секции выполняется при нажатии кнопки стирания памяти
{$verify}Код секции выполняется при нажатии кнопки сравнения памяти
{$unlock}Код секции выполняется при нажатии кнопки снятия защиты
Предопределенные переменные
_IC_NameНазвание текущей выбранной микросхемы 
_IC_SizeРазмер, в байтах, текущей выбранной микросхемы
_IC_PageРазмер страницы, в байтах, текущей выбранной микросхемы 
_SPI_SPEED_MAXМаксимально возможная частота для SPISetSpeed
Основные функции
ShowMessage(text); +

Аналог ShowMessage

+
LogPrint(text, color); +

Выводит сообщение в лог
+ Параметры:
+    text текст сообщения
+ Необязательные параметры:
+   color цвет bgr

+
IntToHex(value, digits): string; +

 Аналог IntToHex

+
ProgressBar(inc, max, pos); +

 Устанавливает состояние ProgressBar
+ Параметры:
+    inc насколько увиличить позицию
+ Необязательные параметры:
+    max максимальная позиция ProgressBar
+    pos устанавливает конкретную позицию ProgressBar

+
CreateByteArray(size): variant; +

Создает массив с типом элементов varbyte

+
GetArrayItem(array, index): variant; +

Возвращает значение элемента массива

+
SetArrayItem(array, index, value); +

Устанавливает значение элемента массива

+
ReadToEditor(size, position, buffer, ...); +

Записывает данные из буфера в редактор размером size в позицию position

+
WriteFromEditor(size, position, buffer, ...); +

Записывает данные из редактора размером size с позиции position

+
GetEditorDataSize: longword; +

Возвращает размер данных в редакторе

+
Работа с SPI
SPIEnterProgMode(speed): boolean; +

Инициализирует состояние пинов для SPI и устанавливает частоту SPI  
+   Параметры:
+     speed
+     _SPI_SPEED_MAX = AvrIsp 8(4) MHz / USbAsp 3 MHz
+  Если частота не установлена возвращает false
+  Игнорируется для устройств с фиксированной частотой

+
SPIExitProgMode(); +

Отключает пины SPI

+
SPIRead(cs, size, buffer, ...): integer; +

Читает данные в буфер  
+    Параметры:  
+      cs если cs=1 отпускать Chip Select после чтения данных  
+      size размер данных в байтах  
+      buffer переменные для хранения данных или массив созданный CreateByteArray  
+    Возвращает количество прочитанных байт

+
SPIWrite(cs, size, buffer, ...): integer; +

Записывает данные из буфера  
+    Параметры:  
+      cs если cs=1 отпускать Chip Select после записи данных  
+      size размер данных в байтах  
+      buffer переменные с данными или массив созданный CreateByteArray  
+    Возвращает количество записанных байт

+
SPIReadToEditor(cs, size): integer; +

Читает данные в редактор  
+    Параметры:  
+      cs если cs=1 отпускать Chip Select после чтения данных  
+      size размер данных в байтах  
+    Возвращает количество прочитанных байт

+
SPIWriteFromEditor(cs, size, position): integer; +

Записывает данные из редактора размером size с позиции position  
+    Параметры:  
+      cs если cs=1 отпускать Chip Select после записи данных  
+      size размер данных в байтах  
+      position позиция в редакторе  
+    Возвращает количество записанных байт

+
Работа с I2C
I2CEnterProgMode(); +

 Инициализирует состояние пинов

+
I2cExitProgMode(); +

 Отключает пины

+
I2CReadWrite(DevAddr, wsize, rsize, wbuffer, rbuffer): integer; +

Записывает/читае данные из буферов  
+    Параметры:  
+      DevAddr адрес устройства  
+      size размер данных в байтах  
+      buffer переменные с данными или массив созданный CreateByteArray  
+    Возвращает количество записанных + прочитанных байт
+    *Если rsize=0 можно опустить параметр rbuffer

+
I2CStart(); +

Используется вместе с I2CReadByte и I2CWriteByte

+
I2CStop(); +

Используется вместе с I2CReadByte и I2CWriteByte

+
I2CReadByte(ack: boolean): byte; +

Читает байт данных и отправляет ack/nack

+
I2CWriteByte(data): boolean; +

Записывает байт данных и возвращает ack/nack

+
+

 

diff --git a/AsProgrammer/scripts/w25q32FV_64FV_128FV_SecRegisters.pas b/AsProgrammer/scripts/w25q32FV_64FV_128FV_SecRegisters.pas new file mode 100644 index 0000000..bc41491 --- /dev/null +++ b/AsProgrammer/scripts/w25q32FV_64FV_128FV_SecRegisters.pas @@ -0,0 +1,192 @@ +// designed for WINBOND W25Q32FV/JV W25Q64FV/JV W25Q128FV/JV (not BV serie) +// READ / WRITE / ERASE Security REGISTERS +// script can be adapted for other brand and models by changing 'RegSize' value in each section +{$ READ_JEDEC_ID} +begin + ID:= CreateByteArray(3); + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read JEDEC ID'); + + // read ID to test installation + SPIWrite (0, 1, $9F); + SPIRead(1, 3, ID); + + logprint('Read ID: ' + inttohex((GetArrayItem(ID, 0)),2)+ inttohex((GetArrayItem(ID, 1)),2)+ inttohex((GetArrayItem(ID, 2)),2)); + LogPrint ('End read JEDEC ID'); + SPIExitProgMode (); +end + +{$ READ_UNIQUE_ID} +begin + UID:= CreateByteArray(8); + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read UNIQUE ID'); + + // read 64bits UNIQUE ID + SPIWrite (0, 5, $4B, $00, $00, $00, $00); + SPIRead(1, 8, UID); + + logprint('Read UID: ' + inttohex((GetArrayItem(UID, 0)),2)+ inttohex((GetArrayItem(UID, 1)),2)+ inttohex((GetArrayItem(UID, 2)),2)+ inttohex((GetArrayItem(UID, 3)),2) + + inttohex((GetArrayItem(UID, 4)),2)+ inttohex((GetArrayItem(UID, 5)),2)+ inttohex((GetArrayItem(UID, 6)),2)+ inttohex((GetArrayItem(UID, 7)),2)); + LogPrint ('End read UNIQUE ID'); + SPIExitProgMode (); +end + +{$ READ_SECURITY_REGISTER_1} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read security register #1'); + RegSize := 256; + // read register 1 + SPIWrite (0, 5, $48, $00, $10, $00, $00); + SPIReadToEditor (1, RegSize); + + LogPrint ('End read security register #1'); + SPIExitProgMode (); +end + +{$ READ_SECURITY_REGISTER_2} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read security register #2'); + RegSize := 256; + // read register 2 + SPIWrite (0, 5, $48, $00, $20, $00, $00); + SPIReadToEditor (1, RegSize); + + LogPrint ('End read security register #2'); + SPIExitProgMode (); +end + +{$ READ_SECURITY_REGISTER_3} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read security register #3'); + RegSize := 256; + // read register 3 + SPIWrite (0, 5, $48, $00, $30, $00, $00); + SPIReadToEditor (1, RegSize); + + LogPrint ('End read security register #3'); + SPIExitProgMode (); +end + +{$ ERASE_SECURITY_REGISTER_1} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start Erase security register #1'); + // write enable + SPIWrite (1, 1, $06); + // erase register 1 + SPIWrite (1, 4, $44, $00, $10, $00); + + LogPrint ('End Erase security register #1'); + SPIExitProgMode (); +end + +{$ ERASE_SECURITY_REGISTER_2} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start Erase security register #2'); + + // write enable + SPIWrite (1, 1, $06); + // erase register 2 + SPIWrite (1, 4, $44, $00, $20, $00); + + LogPrint ('End Erase security register #2'); + SPIExitProgMode (); +end + +{$ ERASE_SECURITY_REGISTER_3} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start Erase security register #3'); + + // write enable + SPIWrite (1, 1, $06); + // erase register 3 + SPIWrite (1, 4, $44, $00, $30, $00); + + LogPrint ('End Erase security register #3'); + SPIExitProgMode (); +end + +{$ WRITE_SECURITY_REGISTER_1} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start write security register #1'); + RegSize := 256; + sreg := 0; + + // write enable + SPIWrite (1, 1, $06); + + // write register 1 + SPIWrite (0, 4, $42, $00, $10, $00); + SPIWriteFromEditor(1, Regsize, 0); + + //Busy + repeat + SPIWrite(0, 1, $05); + SPIRead(1, 1, sreg); + until((sreg and 1) <> 1); + + // write disable + SPIWrite (1, 1, $04); + LogPrint ('End write security register #1'); + SPIExitProgMode (); +end + +{$ WRITE_SECURITY_REGISTER_2} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start write security register #2'); + RegSize := 256; + sreg := 0; + + // write enable + SPIWrite (1, 1, $06); + + // write register 2 + SPIWrite (0, 4, $42, $00, $20, $00); + SPIWriteFromEditor(1, Regsize, 0); + + //Busy + repeat + SPIWrite(0, 1, $05); + SPIRead(1, 1, sreg); + until((sreg and 1) <> 1); + + // write disable + SPIWrite (1, 1, $04); + LogPrint ('End write security register #2'); + SPIExitProgMode (); +end + +{$ WRITE_SECURITY_REGISTER_3} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start write security register #3'); + RegSize := 256; + sreg := 0; + + // write enable + SPIWrite (1, 1, $06); + + // write register 3 + SPIWrite (0, 4, $42, $00, $30, $00); + SPIWriteFromEditor(1, Regsize, 0); + + //Busy + repeat + SPIWrite(0, 1, $05); + SPIRead(1, 1, sreg); + until((sreg and 1) <> 1); + + // write disable + SPIWrite (1, 1, $04); + LogPrint ('End write security register #3'); + SPIExitProgMode (); +end + diff --git a/AsProgrammer/scripts/w25q32FV_64FV_128FV_read_SFDP.pas b/AsProgrammer/scripts/w25q32FV_64FV_128FV_read_SFDP.pas new file mode 100644 index 0000000..0797026 --- /dev/null +++ b/AsProgrammer/scripts/w25q32FV_64FV_128FV_read_SFDP.pas @@ -0,0 +1,55 @@ +// designed for WINBOND W25Q32FV/JV W25Q64FV/JV W25Q128FV/JV (not BV serie) +// READ the 3 Serial Flash Discoverable Parameter (SFDP) REGISTERS +// note: W25Q32FV have only one SFDP register +// script can be adapted for other brand and models by changing 'RegSize' value in each section +{$ READ_JEDEC_ID} +begin + ID:= CreateByteArray(3); + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read JEDEC ID'); + + // read ID to test installation + SPIWrite (0, 1, $9F); + SPIRead(1, 3, ID); + + logprint('Read ID: ' + inttohex((GetArrayItem(ID, 0)),2)+ inttohex((GetArrayItem(ID, 1)),2)+ inttohex((GetArrayItem(ID, 2)),2)); + LogPrint ('End read JEDEC ID'); + SPIExitProgMode (); +end + +{$ Read_SFDP_Register_1} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read SFDP Register #1'); + RegSize := 256; + // read register 1 + SPIWrite (0, 5, $5A, $00, $10, $00, $00); + SPIReadToEditor (1, RegSize); + LogPrint ('End read SFDP Register #1'); + SPIExitProgMode (); +end + + +{$ Read_SFDP_Register_2} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read SFDP Register #2'); + RegSize := 256; + // read register 2 + SPIWrite (0, 5, $5A, $00, $20, $00, $00); + SPIReadToEditor (1, RegSize); + LogPrint ('End read SFDP Register #2'); + SPIExitProgMode (); +end + +{$ Read_SFDP_Register_3} +begin + if not SPIEnterProgMode(_SPI_SPEED_MAX) then LogPrint('Error setting SPI speed'); + LogPrint ('Start read SFDP Register #3'); + RegSize := 256; + // read register 3 + SPIWrite (0, 5, $5A, $00, $30, $00, $00); + SPIReadToEditor (1, RegSize); + LogPrint ('End read SFDP Register #3'); + SPIExitProgMode (); +end diff --git a/AsProgrammer/settings.xml b/AsProgrammer/settings.xml new file mode 100644 index 0000000..6e7b86e --- /dev/null +++ b/AsProgrammer/settings.xml @@ -0,0 +1,6 @@ + + + + + +