Yet another couple of thoughts, Tony. 1) Should the program load / run jumper polarity be reversed? Under normal circumstances, TX out is HI while idle. To minimize power consumption, that jumper should be removed unless debug / load work is going on. 2) how about another command to return the start address of the code that is to be loaded? Maybe a 'S' ? The PC would ask for the start address before beginning the load procedure, BOOT.asm would return the address of the label 'RunProg'. This would allow a little more flexibility. I definitely see the conflict with the way I position code VS what BOOT.asm needs to see. The problem is, of course, that you can't be overwriting the code that you are executing. What makes it such a problem is the ISR stuff at 0x04. One possibility is to locate BOOT.asm right at the end of code space, much like Mchip's ICD stuff. This is gonna take more thought at my end. Actually, maybe locating BOOT at the end of code space does fix the problems! There are 4 code spaces between 0x00 and 0x04 - how about something like the following: org 0x00 movlw high(BootLoader) movwf PCLATH goto BootLoader org 0x04 ;ISR stuff near the end of code space, BootLoader ;test TX line and either enter the boot load routine or reset PCLATH and jump to ColdStart. The only thing that would be required to be the same in all versions of the user code are those 3 lines org'ed at 0x00. That also gets rid of the usefulness of that 'S' command I suggested earlier. Thoughts? dwayne Dwayne Reid Trinity Electronics Systems Ltd Edmonton, AB, CANADA (780) 489-3199 voice (780) 487-6397 fax Celebrating 16 years of Engineering Innovation (1984 - 2000) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Do NOT send unsolicited commercial email to this email address. This message neither grants consent to receive unsolicited commercial email nor is intended to solicit commercial email.