diff --git a/Drivers/CH341PAR.ZIP b/Drivers/CH341PAR.ZIP new file mode 100644 index 0000000..0134440 Binary files /dev/null and b/Drivers/CH341PAR.ZIP differ diff --git a/Drivers/CH341SER.zip b/Drivers/CH341SER.zip new file mode 100644 index 0000000..140d255 Binary files /dev/null and b/Drivers/CH341SER.zip differ diff --git a/Drivers/COMTransmit.ZIP b/Drivers/COMTransmit.ZIP new file mode 100644 index 0000000..9de95c3 Binary files /dev/null and b/Drivers/COMTransmit.ZIP differ diff --git a/Tools/AsProgrammer/AsProgrammer.exe b/Tools/AsProgrammer/AsProgrammer.exe new file mode 100644 index 0000000..ec69a29 Binary files /dev/null and b/Tools/AsProgrammer/AsProgrammer.exe differ diff --git a/Tools/AsProgrammer/CH341DLL.DLL b/Tools/AsProgrammer/CH341DLL.DLL new file mode 100644 index 0000000..c9f2eb1 Binary files /dev/null and b/Tools/AsProgrammer/CH341DLL.DLL differ diff --git a/Tools/AsProgrammer/Devices/FuseBits.xml b/Tools/AsProgrammer/Devices/FuseBits.xml new file mode 100644 index 0000000..d22f4f9 --- /dev/null +++ b/Tools/AsProgrammer/Devices/FuseBits.xml @@ -0,0 +1,447 @@ + + + + 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,, + + + BOOTRST,BOOTSZ0,BOOTSZ1,EESAVE,WDTON,,JTAGEN,OCDEN + CKSEL0,CKSEL1,CKSEL2,CKSEL3,SUT0,SUT1,,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,CUTUT,CKOUT,CKOUT + 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/Tools/AsProgrammer/Devices/StatBits.xml b/Tools/AsProgrammer/Devices/StatBits.xml new file mode 100644 index 0000000..2d70fc0 --- /dev/null +++ b/Tools/AsProgrammer/Devices/StatBits.xml @@ -0,0 +1,227 @@ + + + + + + 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,INC,,UV,SRWD + + + BUSY,WEL,BP0,BP1,,,,SRWD + + + BUSY,WEL,BP0,BP1,,,,SRWD + + + + + + + + \ No newline at end of file diff --git a/Tools/AsProgrammer/Drivers/CH341A/CH341A_setup.png b/Tools/AsProgrammer/Drivers/CH341A/CH341A_setup.png new file mode 100644 index 0000000..84e96e8 Binary files /dev/null and b/Tools/AsProgrammer/Drivers/CH341A/CH341A_setup.png differ diff --git a/Tools/AsProgrammer/Drivers/CH341A/CH341DLL.DLL b/Tools/AsProgrammer/Drivers/CH341A/CH341DLL.DLL new file mode 100644 index 0000000..c9f2eb1 Binary files /dev/null and b/Tools/AsProgrammer/Drivers/CH341A/CH341DLL.DLL differ diff --git a/Tools/AsProgrammer/Drivers/CH341A/CH341W64.SYS b/Tools/AsProgrammer/Drivers/CH341A/CH341W64.SYS new file mode 100644 index 0000000..d890020 Binary files /dev/null and b/Tools/AsProgrammer/Drivers/CH341A/CH341W64.SYS differ diff --git a/Tools/AsProgrammer/Drivers/CH341A/CH341WDM.CAT b/Tools/AsProgrammer/Drivers/CH341A/CH341WDM.CAT new file mode 100644 index 0000000..9193156 Binary files /dev/null and b/Tools/AsProgrammer/Drivers/CH341A/CH341WDM.CAT differ diff --git a/Tools/AsProgrammer/Drivers/CH341A/CH341WDM.INF b/Tools/AsProgrammer/Drivers/CH341A/CH341WDM.INF new file mode 100644 index 0000000..b89166d --- /dev/null +++ b/Tools/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/Tools/AsProgrammer/Drivers/CH341A/CH341WDM.SYS b/Tools/AsProgrammer/Drivers/CH341A/CH341WDM.SYS new file mode 100644 index 0000000..dbb47da Binary files /dev/null and b/Tools/AsProgrammer/Drivers/CH341A/CH341WDM.SYS differ diff --git a/Tools/AsProgrammer/Drivers/CH341A/DRVSETUP64/DRVSETUP64.exe b/Tools/AsProgrammer/Drivers/CH341A/DRVSETUP64/DRVSETUP64.exe new file mode 100644 index 0000000..e262ef7 Binary files /dev/null and b/Tools/AsProgrammer/Drivers/CH341A/DRVSETUP64/DRVSETUP64.exe differ diff --git a/Tools/AsProgrammer/Drivers/CH341A/SETUP.EXE b/Tools/AsProgrammer/Drivers/CH341A/SETUP.EXE new file mode 100644 index 0000000..e3b8cca Binary files /dev/null and b/Tools/AsProgrammer/Drivers/CH341A/SETUP.EXE differ diff --git a/Tools/AsProgrammer/Drivers/ch341_jumper.jpg b/Tools/AsProgrammer/Drivers/ch341_jumper.jpg new file mode 100644 index 0000000..9541f5c Binary files /dev/null and b/Tools/AsProgrammer/Drivers/ch341_jumper.jpg differ diff --git a/Tools/AsProgrammer/Pinouts/ISP.gif b/Tools/AsProgrammer/Pinouts/ISP.gif new file mode 100644 index 0000000..73b221d Binary files /dev/null and b/Tools/AsProgrammer/Pinouts/ISP.gif differ diff --git a/Tools/AsProgrammer/Pinouts/schemeI2C.gif b/Tools/AsProgrammer/Pinouts/schemeI2C.gif new file mode 100644 index 0000000..69968f2 Binary files /dev/null and b/Tools/AsProgrammer/Pinouts/schemeI2C.gif differ diff --git a/Tools/AsProgrammer/Pinouts/schemeMW.gif b/Tools/AsProgrammer/Pinouts/schemeMW.gif new file mode 100644 index 0000000..4fae3f9 Binary files /dev/null and b/Tools/AsProgrammer/Pinouts/schemeMW.gif differ diff --git a/Tools/AsProgrammer/Pinouts/schemeSPI25.gif b/Tools/AsProgrammer/Pinouts/schemeSPI25.gif new file mode 100644 index 0000000..874c823 Binary files /dev/null and b/Tools/AsProgrammer/Pinouts/schemeSPI25.gif differ diff --git a/Tools/AsProgrammer/Pinouts/schemeSPI25_to_93Cxx.gif b/Tools/AsProgrammer/Pinouts/schemeSPI25_to_93Cxx.gif new file mode 100644 index 0000000..71a2f18 Binary files /dev/null and b/Tools/AsProgrammer/Pinouts/schemeSPI25_to_93Cxx.gif differ diff --git a/Tools/AsProgrammer/Pinouts/schemeSPI45.gif b/Tools/AsProgrammer/Pinouts/schemeSPI45.gif new file mode 100644 index 0000000..39c3613 Binary files /dev/null and b/Tools/AsProgrammer/Pinouts/schemeSPI45.gif differ diff --git a/Tools/AsProgrammer/chiplist.xml b/Tools/AsProgrammer/chiplist.xml new file mode 100644 index 0000000..e3063eb --- /dev/null +++ b/Tools/AsProgrammer/chiplist.xml @@ -0,0 +1,1015 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_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/Tools/AsProgrammer/lang/cn.po b/Tools/AsProgrammer/lang/cn.po new file mode 100644 index 0000000..4e5a0b0 --- /dev/null +++ b/Tools/AsProgrammer/lang/cn.po @@ -0,0 +1,685 @@ +#简体中文 +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +#: avrfuses.fus_str_msg +msgid "AVR Fuses and Bit Lock " +msgstr "AVR保险丝和位锁" + +#: msgstr.str_45page_powerof2 +msgid "Page size is power of 2!" +msgstr "页面大小是2的倍数!" + +#: 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 "" + +#: 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 "(未知的 ID)" + +#: msgstr.str_mini_eeprom_support +msgid "This firmware do not support I2C and 93Cxx" +msgstr "此固件不支持 I2C 和 93Cxx" + +#: 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 "此固件不支持 EEPROM 编程" + +#: 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 "查找十六进制值" + +#: msgstr.str_sel_chip +msgid "Selected CHIP: " +msgstr "已选 CHIP" + +#: 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 "Programming memory..." +msgstr "正在写入/编程..." + +#: msgstr.str_writing_flash_wchk +msgid "Programming memory(verifying)..." +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 "进入保护页 (APP)" + +#: 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 "擦除 IC" + +#: tmainform.buttonopenfile.hint +msgid "Open File" +msgstr "打开文件" + +#: tmainform.buttonread.hint +msgctxt "tmainform.buttonread.hint" +msgid "Read IC" +msgstr "读取 IC" + +#: 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 "校验 IC" + +#: tmainform.buttonwrite.hint +msgctxt "tmainform.buttonwrite.hint" +msgid "Write IC" +msgstr "写入/编程 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 "逐字节读取/写入" + +#: 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 "" + +#: 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 "I2C 高级选项" + +#: 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 "清空缓冲区(FF)" + +#: 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.menuexit.caption +msgid "Exit" +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 "不校验忙位" + +#: 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 "交换高低位字节" + +#: 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 "移除APP中的保护" + +#: 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 "查找十六进制值" + +#: 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 +msgctxt "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 "查找 IC" + +#: tchipsearchform.label1.caption +msgid "Content:" +msgstr "请输入FLASH型号(例如W25Q128):" + +#: tchipsearchform.ChipSearchSelectButton.caption +msgid "Select IC" +msgstr "选择 IC" + +#: 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/Tools/AsProgrammer/lang/en.po b/Tools/AsProgrammer/lang/en.po new file mode 100644 index 0000000..43862cb --- /dev/null +++ b/Tools/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/Tools/AsProgrammer/lang/fr.po b/Tools/AsProgrammer/lang/fr.po new file mode 100644 index 0000000..827915e --- /dev/null +++ b/Tools/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/Tools/AsProgrammer/lang/ru.po b/Tools/AsProgrammer/lang/ru.po new file mode 100644 index 0000000..d1eae05 --- /dev/null +++ b/Tools/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/Tools/AsProgrammer/libusb0.dll b/Tools/AsProgrammer/libusb0.dll new file mode 100644 index 0000000..6e475b9 Binary files /dev/null and b/Tools/AsProgrammer/libusb0.dll differ diff --git a/Tools/AsProgrammer/scripts/GD25Q64_128_SecRegisters.pas b/Tools/AsProgrammer/scripts/GD25Q64_128_SecRegisters.pas new file mode 100644 index 0000000..a23e384 --- /dev/null +++ b/Tools/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/Tools/AsProgrammer/scripts/blockerase.pas b/Tools/AsProgrammer/scripts/blockerase.pas new file mode 100644 index 0000000..7620497 --- /dev/null +++ b/Tools/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/Tools/AsProgrammer/scripts/i2c_example.pas b/Tools/AsProgrammer/scripts/i2c_example.pas new file mode 100644 index 0000000..cd2a283 --- /dev/null +++ b/Tools/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/Tools/AsProgrammer/scripts/w25q32FV_64FV_128FV_SecRegisters.pas b/Tools/AsProgrammer/scripts/w25q32FV_64FV_128FV_SecRegisters.pas new file mode 100644 index 0000000..fa63947 --- /dev/null +++ b/Tools/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/Tools/AsProgrammer/scripts/w25q32FV_64FV_128FV_read_SFDP.pas b/Tools/AsProgrammer/scripts/w25q32FV_64FV_128FV_read_SFDP.pas new file mode 100644 index 0000000..8f77048 --- /dev/null +++ b/Tools/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/Tools/AsProgrammer/settings.xml b/Tools/AsProgrammer/settings.xml new file mode 100644 index 0000000..a2e8f90 --- /dev/null +++ b/Tools/AsProgrammer/settings.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/Tools/CH341A Programmer V1.03.zip b/Tools/CH341A Programmer V1.03.zip new file mode 100644 index 0000000..94419a6 Binary files /dev/null and b/Tools/CH341A Programmer V1.03.zip differ diff --git a/Tools/COMTransmit/COMTransmit.exe b/Tools/COMTransmit/COMTransmit.exe new file mode 100644 index 0000000..16804e3 Binary files /dev/null and b/Tools/COMTransmit/COMTransmit.exe differ diff --git a/docs/CH341DS1.PDF b/docs/CH341DS1.PDF new file mode 100644 index 0000000..30fcf41 Binary files /dev/null and b/docs/CH341DS1.PDF differ