Alice Campbell wrote: > > I have tried this. My code has sprouted bank select errors like > dandelions. I think there is something I dont understand about the > way the memory is organized. If I set: > > cblock 0x10 > buf1 :1 > buf2 :2 > buf3 :3 > etc :4 > endc I haven't tried this but cblock 0x10 ; check address >= lowest ram location for chosen chip. buffer: X ; X = number of bytes needed for buffer endc To access buffer through indirect addressing Eg. 10 bytes in buffer block starting at RAM address 0x10 Offset can vary from 0 to 9 movf offset,w ; W = 0 - 9 addlw buffer ; W = 0x10 + (0 - 9) movwf fsr ; set indirect address movf indf,w ; W = data from buffer M. Adam Davis gave a pretty good description of a boot loader. Learning changes ignorance to knowledge. No appologies needed :-) I hope this helps. -- Best regards Tony http://www.picnpoke.com mailto:sales@picnpoke.com