Hi Tony, > It should be easy to fill the buffer with values from 0 to 63 and > write the buffer to verify that all the values appear where they are > supposed to. Yes. I've added a small routine to fill buffer48 with the consecutive values 0x17 - 0x46, overwriting the received data Something interesting happened. This evening, they are writing in the correct order, as are the received bytes. This evening, without the code being changed at all. Same PSU, programmer, everything However, I still have that problem of the block not being written to if any of the 64 bytes in the target block is not 00. I thought there might have been a glimmer of hope. I have buffer48 at 0xd0 in RAM, so to read 64 bytes would mean reading past the end of RAM. I moved it down to 0xa0 and tried again, but no luck. I'll have to look around the d/s for something. Maybe one of the EECON1 bits, like FREE, isn't working properly > Is the chip receiving and buffering the data properly. This can be > verified by reading the buffer back after writing. The data is being sent from an F88. Initially I checked the analyser trace for correct data, as at that time I was setting up the clock and data line timings. The 48 are being sent in order, starting with 0x17. The receive routine is a straight 0-47 counter using fsr and postinc, no provision for it to loop back and swap byte order Joe ----- No virus found in this message. Checked by AVG - www.avg.com Version: 2016.0.7797 / Virus Database: 4656/13181 - Release Date: 10/10/16 --=20 http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .