I'm very sorry, but I didn't engage enough grey matter when composing my answer yesterday. There is no way that either PP.EXE or FPPDOS.EXE are going to work under Windows 2000. I just don't understand why I said that they would. I think the only explanation is that I was having a "senior moment" :-) These programs are meant for people still using DOS only or Windows 3.1 machines. I believe all you want is a command line programmer that can be included in a batch file or run in a Windows 2000 DOS box. Well, provided you've installed the GIVEIO.SYS driver, FPP.EXE can be run in command line mode although I haven't bothered documenting it anywhere. As there may be one or two PICLIST members interested I hope nobody will mind if I include some info here. To run FPP without a GUI open a DOS box and type: fpp -w0 (that's 0 for zero) and you'll get this for your pain: Flash PIC Programmer Version 0.9 Copyright (C) 1994-2001 David Tait. Usage: FPP [ -devgqsnumwcrphft! ] hexfile d = dump, e = erase, v = verify, g = go q = debug, s = silent, n = no read, ! = no wait u = update, m = mplab, wF = winui, cHHHH = config r = record, p = purge, hS:D = hardware fDDDD:DDDD = device, tDD:DD = timing Some of the command line arguments you'll recognize from PP.EXE. I talked about the f and h flags in my last post to the list. The t switch changes the programming cycle delay (which defaults to 20ms) and the power-up delay (time between application of VDD to start of programming which is 25ms by default); for example to use 10ms cycle time use -t10 or if you want to also increase the power-up delay to 50ms use -t10:50. The record and purge switches are used to store or remove registry info. With the r switch you can set the hardware, device and timing configuration permanently. Using the p switch removes all FPP entries from the registry. Although I gave some details of the hardware switch yesterday you need more info to use it properly. Here is a complete list of hardware configs taken directly from the source code of FPP: HWSETUP known[] = { { 0, "PPA-OCVM----I-------", "7406/4066" }, { 1, "PPA-ocvm----i-------", "7407/4066" }, { 2, "PPA-OCvm----I-------", "7406/PNP" }, { 3, "PPA-ocVM----i-------", "7407/PNP" }, { 4, "PIM-oc--------------", "QandD (LPT)" }, { 5, "SIM---o--c--", "QandD (COM)" }, { 6, "PIM-ocM-----i-------", "PARPIC" }, { 7, "SIM--MO--CI-", "SERPIC" }, { 8, "PIAcM--------i--o-Pr", "TOPIC" }, { 9, "PPA-OCVM----I-------", "Maplin" }, { 10, "PPA-ocmp----i-------", "TLVP" }, { 11, "SPM--po--ci-", "COMPORT" }, { 12, "PIAcrv-------i--o-mp", "TOPIC2" }, { 13, "SIM--Mo--ci-", "PMICP" }, { 14, NULL, NULL } /* keep this! */ }; If you understood my description of the hS:D switch then perhaps this will make sense (or perhaps not :-). The vital things are the programmer names and the associated number. Here's an example. Lets say you want to program file.hex into a 16F628 with my "Classic" programmer (it's the one with a 7407 plus a couple of PNP transistors) attached to LPT1 while setting the cycle time to 10ms, use: fpp -w0 -h3:1 -t10 -f628 file.hex This will block after programming so that you can read errors. If you don't want that to happen you can get errors reported via Windows style dialogs with: fpp -mw0 -h3:1 -t10 -f628 file.hex or if you want FPP to run silently but set the DOS ERRORLEVEL on exit (0 means no error) use: fpp -smw0 -h3:1 -t10 -f628 file.hex I hope that helps. I'll eventually add this info, and any other comments I subsequently think of, to my message board: http://www.man.ac.uk/~mbhstdj/piclinks.html David -- http://www.piclist.com hint: The PICList is archived three different ways. See http://www.piclist.com/#archives for details.