Byron A Jeff wrote: ++++++++++++++++++++++++++++++ ...The next stage is updating the programming algorithms so that all of the chips that folks really want to use (18F, 16F819, 16F88, 16F648A, 16F87XA) can be programmed. Our game plan is to separate each of the program/read/verify routines into a DLL. That way a new programming algorithm can be included by downloading a new DLL. ... So here's the problem. The programming software is divided into a set of low level routines that twiddle the parallel port (vpp_on, bit_on, bit_off and the like), and the high level routines that read/program the chip using the low level routines. Since the low level routines are used by every programming algorithm, and are used for auto chip detection, we are trying to keep these in the main executable, only moving the high level routines to the DLLs... ++++++++++++++++++++++++++++++ Visual Studio 6 or VS.NET are you developing with? And carefully use "callback" word. Callbacks are used for multithreading, say, when ActiveX EXE need to launch some Sub in main EXE. You are talking about only DLL - in-process creatures. They are known to fire events in the main App. Under Visual Studio 6 I'd recommend to wrap chip-specific programming matters into stand-alone ActiveX EXE with very basic forms just to test programming process; so anybody could see if this thing works at all. And User Interface should be created in any other way, say, the main EXE windows App, or MS Office to control that ActiveX EXE. Regards, Mike. -- http://www.piclist.com hint: PICList Posts must start with ONE topic: [PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads