> what exactly is going on when you use a bootloader? A "bootloader", despite the term, is usually meant here as a means to upload new code onto a PIC, not to load the code every time the PIC is started. > and is this a difficult assembly language program? Like most programs, doing a quick and dirty one isn't that hard. A good one isn't hard either, but there are a few tricky issues to consider. I sortof remember my last PIC bootloader was 300+ instructions. > when you use a boot loader program, there is a programmed delay upon > power up(correct?), Depends on what you want. I sent a byte to the host letting it know new firmware could be uploaded, then waited 100mS for the host to respond. If it didn't, then the bootloader ran the stored application if it looked right. > then the program gets loaded into hi memory, > or somewhere - where the pic uses it upon re-power up, after the delay Pretty much. > so how does this work? See above. > I'd like to right a simple bootloader program, in assembly. So do it. Here are a few issues. I'll let you think about them instead of answering them: 1 - What if power goes down or communication got corrupted during an upload. This would trash the application program. 2 - Should the bootloader allow itself to be overwritten? If not, how does it know its own addresses? 3 - What exactly gets written to the reset vector? 4 - Do you want to be able to upload a new bootloader? 5 - What pins will the bootloader claim? Can these be reused by the application? ***************************************************************** Embed Inc, embedded system specialists in Littleton Massachusetts (978) 742-9014, http://www.embedinc.com -- http://www.piclist.com hint: To leave the PICList mailto:piclist-unsubscribe-request@mitvma.mit.edu