diff --git a/CH341A Programmer v1.4/BoxedAppSDK.dll b/CH341A Programmer v1.4/BoxedAppSDK.dll
new file mode 100644
index 0000000..fde0055
Binary files /dev/null and b/CH341A Programmer v1.4/BoxedAppSDK.dll differ
diff --git a/CH341A Programmer v1.4/CH341A.DLL b/CH341A Programmer v1.4/CH341A.DLL
new file mode 100644
index 0000000..2700957
Binary files /dev/null and b/CH341A Programmer v1.4/CH341A.DLL differ
diff --git a/CH341A Programmer v1.4/CH341AFree.exe b/CH341A Programmer v1.4/CH341AFree.exe
new file mode 100644
index 0000000..7e5e02f
Binary files /dev/null and b/CH341A Programmer v1.4/CH341AFree.exe differ
diff --git a/CH341A Programmer v1.4/Config.ini b/CH341A Programmer v1.4/Config.ini
new file mode 100644
index 0000000..1c1c33f
--- /dev/null
+++ b/CH341A Programmer v1.4/Config.ini
@@ -0,0 +1,38 @@
+[Config]
+DriverDLL=USBIOX.DLL
+language=1033
+IsWinStatus=1
+WindowState=0
+AllowWindow=0
+Left=257
+Top=58
+Width=860
+Height=585
+ChipType=2
+24ChipManuIndex=0
+25ChipManuIndex=9
+Default24ChipIndex=9
+Default25ChipIndex=0
+IsLastDir=1
+DefaultInitDir=C:\Users\Administrator\Desktop\
+24E_ChipManuIndex=0
+25E_ChipManuIndex=1
+25F_ChipManuIndex=10
+Default24E_ChipIndex=0
+Default25E_ChipIndex=7
+Default25F_ChipIndex=0
+
+[OperOption]
+IsWriteCompleteVerify=0
+UseFastRead=0
+UseAAI=0
+ChkEmptyData=1
+EraseMode=1
+IsClean=1
+IsChkBlank=1
+IsProgramming=1
+IsVerify=1
+IsWaitTime=0
+WaitTime=1000
+UseOSDialog=0
+PRG_Area=0
diff --git a/CH341A Programmer v1.4/DataBase.Dat b/CH341A Programmer v1.4/DataBase.Dat
new file mode 100644
index 0000000..4ad788a
Binary files /dev/null and b/CH341A Programmer v1.4/DataBase.Dat differ
diff --git a/CH341A Programmer v1.4/Languages/English.ini b/CH341A Programmer v1.4/Languages/English.ini
new file mode 100644
index 0000000..d9bf8e5
--- /dev/null
+++ b/CH341A Programmer v1.4/Languages/English.ini
@@ -0,0 +1,263 @@
+[!Global]
+!LanguageID=1033
+!LanguageName=English
+!TranslationAuthor=KazmiElecom
+!TranslationAuthorEmail=
+!TranslationDefaultFont=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+
+[TFrmMain]
+!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+Caption=CH341A Programmer
+mFile.Caption=&File
+mOpen.Caption=&Open
+mSave.Caption=&Save
+mExit.Caption=E&xit
+mBuffer.Caption=Data &Buffer
+mFill.Caption=&Fill Data Buffer
+mSwap.Caption=Byte &Swap
+mCopy.Caption=&Copy
+mCopyAsHex.Caption=Copy as &hex
+mFind.Caption=&Find
+mFindNext.Caption=Find &next
+mGoto.Caption=&Goto
+mSelectAll.Caption=Select &All
+mReset.Caption=R&eset
+mOpter.Caption=O&perate
+mOpterOption.Caption=&Operate Option
+mAuto.Caption=&Auto Program
+mChkEmpty.Caption=&Blank Check
+mRead.Caption=&Read Chip
+mWrite.Caption=&Write Chip
+mVerify.Caption=&Verify Chip
+mClean.Caption=&Erase Chip
+mAbort.Caption=Abor&t
+mDetect.Caption=&Detect Chip
+mlanguages.Caption=&Languages
+mHelp.Caption=&Help
+mHelpContent.Caption=&Help
+mLicense.Caption=&License Info
+mAbout.Caption=&Kazmi
+pCopy.Caption=&Copy
+pCopyAsHex.Caption=Copy as &hex
+pSelectAll.Caption=Select &All
+BtnOpen.Caption=Open
+BtnOpen.Hint=Open
+BtnSave.Caption=Save
+BtnSave.Hint=Save
+BtnFill.Caption=Fill
+BtnFill.Hint=Fill Data Buffer
+BtnSwap.Caption=Swap
+BtnSwap.Hint=Byte Swap
+BtnAuto.Caption=Auto
+BtnAuto.Hint=Auto Program
+BtnChkEmpty.Caption=Blank
+BtnChkEmpty.Hint=Blank Check
+BtnRead.Caption=Read
+BtnRead.Hint=Read Chip
+BtnWrite.Caption=Write
+BtnWrite.Hint=Write Chip
+BtnVerify.Caption=Verify
+BtnVerify.Hint=Verify Chip
+BtnClean.Caption=Erase
+BtnClean.Hint=Erase Chip
+BtnAbort.Caption=Abort
+BtnAbort.Hint=Abort
+BtnAbout.Caption=About
+BtnAbout.Hint=About
+BtnExit.Caption=Exit
+BtnExit.Hint=Exit
+pmChkEmpty.Caption=&Blank Check
+pmWrite.Caption=&Write
+pmVerify.Caption=&Verify
+pmClean.Caption=&Erase
+lbChipType.Caption=Type:
+lbManuName.Caption=Manu:
+lbChipName.Caption=Name:
+lbChipSize.Caption=Size:
+BtnChipFind.Caption=Chip &Search
+BtnDetect.Caption=&Detect
+RangeBox.Caption=Operating range
+lbStartAddr.Caption=Start address:
+lbEndAddr.Caption=End address:
+spStatus.!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+RzToolbar.CustomizeCaptions.Close=&Close
+RzToolbar.CustomizeCaptions.MoveDown=Move Down
+RzToolbar.CustomizeCaptions.MoveUp=Move Up
+RzToolbar.CustomizeCaptions.NoTextLabels=No text labels
+RzToolbar.CustomizeCaptions.SelectiveTextOnRight=Selective text on right
+RzToolbar.CustomizeCaptions.ShowTextLabels=Show text labels
+RzToolbar.CustomizeCaptions.TextOptions=Text Options
+RzToolbar.CustomizeCaptions.Title=Custom Toolbar
+OD.DefaultExt=Bin
+OD.Filter=Support File (*.bin;*.rom;*.hex)|*.bin;*.rom;*.hex|BIN File (*.bin)|*.bin|ROM File (*.rom)|*.rom|HEX File (*.hex)|*.hex|All File (*.*)|*.*
+SD.DefaultExt=Bin
+SD.Filter=Support File (*.bin;*.rom;*.hex)|*.bin;*.rom;*.hex|BIN File (*.bin)|*.bin|ROM File (*.rom)|*.rom|HEX File (*.hex)|*.hex|All File (*.*)|*.*
+sDriverLink=http://www.wch.cn/download/CH341PAR_EXE.html
+sOpenFile=Open file from: %s
+sSaveFile=Save file to: %s
+sCH341_Status=Device state: %s.
+sUseTime=%s - Time: %s
+sRW_UseTime=%s - Speed: %d Byte/Sec, Size: %d Byte, Time: %s
+sEditorOffset=Offset: %s, %d
+sNoCH341=No programmer is connected to computer!
+sIgnoreLengthRange=File length is beyond the scope of the chip storage space, the part will be ignored!
+sRangeAddress=Range(0x%s-0x%s)
+sNoChipEmpty=Mr.Kazmi Chip is not Empty! First Erase the Chip
+sWriteOperTimeout=Write operations timeout failed! code: %d
+sEraseOperTimeout=Erase operations timeout failed! code: %d
+sChipContentDifferent=Chip %s with the contents are in disagreement.
+sQustionErase=Sure you want to erase? Erased will not be restored.
+sEraseOk=Chip erasing completed, please check is empty!
+sChipBlank=Mr.Kazmi Chip is blank!
+sChipVerifyOK=Mr.Kazmi Chip and buffer is same.Thanks (Kazmi Elecom)
+sAllOperCompleted=All operation completed.
+sBeginRange=Start address out of range
+sEndRange=End address out of range
+sNotExit=Programmer working, Can't exit.
+sFindNotWords=Not Find "%s"
+sGoto=Goto
+sUserAbort=User aborted
+sCheckDriver=Detection to the driver not installed correctly, please install.
+sTrialNotSupport=The trial version does not support this function.
+sNoShowTip=Don't show this tip
+sFindNotChip=Detection fails , could not find the chip.
+sDetectChipID=Detect chip ID: $%s, $%s, $%s, $%s
+sConnectionStatus0=NotConnect
+sConnectionStatus1=Connected
+sInsertMode0=Overwrite
+sInsertMode1=Insert
+sWorkStatus0=Checking...
+sWorkStatus1=Reading...
+sWorkStatus2=Writeing...
+sWorkStatus3=Verifying...
+sWorkStatus4=Eraseing...
+sWorkStatus5=Filling...
+
+[ShellDialog]
+SOpenCaption=Open
+SSaveCaption=Save As
+SOpenButton=&Open
+SSaveButton=&Save
+SCancelButton=&Cancel
+SLookin=Look &in:
+SFileName=File &name:
+SFilesOfType=Files of &type:
+SUpOneLevelHint=Up One Level
+SShowDesktopHint=Show Desktop
+SCreateNewFolderHint=Create New Folder
+SShowTreeHint=Show Tree
+SViewListHint=List
+SViewDetailsHint=Details
+SViewMenu=&View
+SViewLargeIconsMenu=Lar&ge Icons
+SViewSmallIconsMenu=S&mall Icons
+SViewListMenu=&List
+SViewDetailsMenu=&Details
+SEditPasteMenu=&Paste
+SNewMenu=Ne&w
+SNewFolderMenu=&Folder
+SPropertiesMenu=P&roperties
+
+[TFrmFill]
+!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+Caption=Fill Data Buffer
+Btns.CaptionCancel=&Cancel
+Btns.CaptionOk=&OK
+GB1.Caption=Data
+GB2.Caption=Range(0x0-0x0)
+rbbit1.Caption=Constant byte (8bit)
+rbbit2.Caption=Constant byte (16bit)
+rbbit3.Caption=Random values
+rbbit4.Caption=Sequential bytes (8bit)
+rbbit5.Caption=Sequential words (16bit)
+RzLabel1.Caption=HEX:
+RzLabel2.Caption=HEX:
+RzLabel3.Caption=From:
+RzLabel4.Caption=To:
+
+[TFrmLoadCfg]
+!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+Caption=Config data loading
+lbFileStartAddr.Caption=File start address:
+lbBufStartAddr.Caption=Buffer start address:
+lbLoadCleanBuf.Caption=Clear buffer before load:
+cbBufClean.Items.Text=Clear by 0xFF
Clear by 0x00
Don't clear
+Btns.CaptionCancel=&Cancel
+Btns.CaptionOk=&OK
+
+[TFrmFind]
+!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+Caption=Find
+lbFind.Caption=Fi&nd content:
+cbNoCase.Caption=&Case sensitive
+cbHex.Caption=&Hex format
+BtnFind.Caption=&Find next
+BtnClose.Caption=&Cancel
+
+[TFrmOperOption]
+!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+Caption=Operate Option
+GB1.Caption=General
+ChkAllowWindow.Caption=&Allows multiple instances
+ChkWriteCompleteVerify.Caption=&Write complete after verify
+ChkWriteWaitTime.Caption=W&rite before wait
+ChkLastDir.Caption=&Memorize last use in folder
+ChkWinStatus.Caption=M&emorize windows position and size
+lbSec.Caption=Seconds
+ChkSysDialog.Caption=Use windows &OS open\save dialog
+ChkAllowSkipFF.Caption=Allows to &skip empty data
+GB2.Caption=25\26 Chips
+ChkDetectID.Caption=&Ignore ID detection
+ChkUseFastRead.Caption=&Use fast read mode
+ChkUseAAI.Caption=SST/ESMT chip use &AAI program mode
+ChkEraseMode.Caption=Use &Block/Sector erase mode
+GB3.Caption=Auto Program Option
+CL.!GroupFont=MS Sans Serif,8,B,,clHighlight,DEFAULT_CHARSET
+CL.Items.Text=Erase
Blank
Program
Verify
+PRG.!CaptionFont=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+PRG.!ItemFont=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+PRG.Caption=Programming Range(Write/Verify/Read/BankCheck)
+Btns.CaptionOk=&OK
+Btns.CaptionCancel=&Cancel
+
+[TFrmChipSel]
+!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+Caption=Chip Search
+lbChipName.Caption=Chip Name:
+lbChipFindInfo.Caption=Case insensitive, and support wildcard character '*', for example: EN25*80
+DBGrid.Columns.Item0.Title.Caption=Chip Name
+DBGrid.Columns.Item1.Title.Caption=Chip Size
+DBGrid.Columns.Item2.Title.Caption=Manufacture
+DBGrid.Columns.Item3.Title.Caption=Type
+Btns.CaptionCancel=&Cancel
+Btns.CaptionOk=&Select
+sChipFindCount=Find %d Chips.
+
+[TFrmSelChip]
+!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+Caption=Please select
+sChipSimilarCount=Found %d similar models, Please select your chips.
+Btns.CaptionCancel=&Cancel
+Btns.CaptionOk=&Select
+
+[TFrmLicense]
+!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+Btns.CaptionOk=&OK
+Caption=License Info
+lbAddr.Caption=Address:
+lbEmail.Caption=Email:
+lbID.Caption=ID:
+lbName.Caption=Name:
+lbNickName.Caption=Nick Name:
+lbPhone.Caption=Phone:
+
+
+[TFrmAbout]
+!Font=MS Sans Serif,8,,0,clWindowText,DEFAULT_CHARSET
+sAboutCaption=About
+sVerCaption=Version:
+sAuthorCaption=Author:
+sClose=&Close
+sLicenseCaption=License:
+sAuthor=Campanula night Siyu(KazmiElecom)
+sCopyRight=Copyright (C) 2004 Maple Online
\ No newline at end of file
diff --git a/CH341A Programmer v1.4/SPI.dll b/CH341A Programmer v1.4/SPI.dll
new file mode 100644
index 0000000..3c3e9fa
Binary files /dev/null and b/CH341A Programmer v1.4/SPI.dll differ
diff --git a/CH341A Programmer v1.4/USBIOX.DLL b/CH341A Programmer v1.4/USBIOX.DLL
new file mode 100644
index 0000000..c9048ae
Binary files /dev/null and b/CH341A Programmer v1.4/USBIOX.DLL differ
diff --git a/CH341A Programmer v1.4/USBIOX.INF b/CH341A Programmer v1.4/USBIOX.INF
new file mode 100644
index 0000000..db7cccf
--- /dev/null
+++ b/CH341A Programmer v1.4/USBIOX.INF
@@ -0,0 +1,87 @@
+; USBIOX.INF
+; Driver for USB=>EPP/I2C/SPI... chip V2.1
+; WDM/DLL for Windows 98/Me/2000/XP
+; Copyright (C) W.ch 2001-2008
+;
+
+[Version]
+Signature = "$Chicago$"
+Class = WCH
+ClassGuid = {77989ADF-06DB-4025-92E8-40D902C03B0A}
+Provider = %WinChipHead%
+DriverVer = 10/15/2008, 2.1.2008.10
+
+[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
+
+[ClassInstall32]
+Addreg = WCHReg
+
+[ClassInstall]
+Addreg = WCHReg
+
+[WCHReg]
+HKR, , , 0, %ClassName%
+HKR, , Icon, , -5
+HKR, , NoInstallClass, , 1
+
+[Manufacturer]
+%WinChipHead% = WinChipHead
+
+[WinChipHead]
+%USBIOX.DeviceDesc% = USBIOX.Install, USB\VID_1A86&PID_5512
+%USBIOX.DeviceDesc% = USBIOX.Install, USB\VID_4348&PID_5512
+;%USBIOX.DeviceDesc% = USBIOX.Install, USB\VID_1A86&PID_7523
+;%USBIOX.DeviceDesc% = USBIOX.Install, USB\VID_1A86&PID_5523
+;%USBIOX.DeviceDesc% = USBIOX.Install, USB\VID_4348&PID_5523
+
+[USBIOX.Install]
+CopyFiles = USBIOX.CopyFiles.SYS, USBIOX.CopyFiles.DLL
+AddReg = USBIOX.9X.AddReg
+
+[USBIOX.Install.NT]
+CopyFiles = USBIOX.CopyFiles.SYS, USBIOX.CopyFiles.DLL
+AddReg = USBIOX.NT.AddReg
+
+[USBIOX.CopyFiles.SYS]
+USBIOX.SYS, , , 2
+
+[USBIOX.CopyFiles.DLL]
+USBIOX.DLL, , , 2
+
+[USBIOX.9X.AddReg]
+HKR, , DevLoader, , *NTKERN
+HKR, , NTMPDriver, , USBIOX.SYS
+
+[USBIOX.NT.AddReg]
+
+[USBIOX.Install.NT.Services]
+AddService = USBIOX, 2, USBIOX.Service
+
+[USBIOX.Service]
+DisplayName = "USBIOX"
+ServiceType = 1
+StartType = 3
+ErrorControl = 1
+ServiceBinary = %10%\System32\Drivers\USBIOX.SYS
+
+[DestinationDirs]
+DefaultDestDir = 10, System32\Drivers
+USBIOX.CopyFiles.SYS = 10, System32\Drivers
+USBIOX.CopyFiles.DLL = 11
+
+[SourceDisksFiles]
+USBIOX.SYS = 1
+USBIOX.DLL = 1
+
+[SourceDisksNames]
+1 = "USB Parallel Installation Disk", USBIOX.SYS, ,
+
+[Strings]
+ClassName = "USB-IO"
+WinChipHead = "WCH"
+USBIOX.DeviceDesc = "USB-IO"
diff --git a/CH341A Programmer v1.4/USBIOX.SYS b/CH341A Programmer v1.4/USBIOX.SYS
new file mode 100644
index 0000000..aa3cb35
Binary files /dev/null and b/CH341A Programmer v1.4/USBIOX.SYS differ
diff --git a/CH341A Programmer v1.4/Zlib1.dll b/CH341A Programmer v1.4/Zlib1.dll
new file mode 100644
index 0000000..bff8fe6
Binary files /dev/null and b/CH341A Programmer v1.4/Zlib1.dll differ