Got an LED flasher working from I2Cread->writecode with the program that performs the update in upper memory per the above.

One subtle difference:

Writecode on a PIC16Fxxxx is word length, so has to be transferred 2 bytes at a time from I2C to ONE codespace address

this works fine, just reading data out of the i2c sequentially as WORDS from every 2nd location:

' Now get data from I2C and write it to codespace
for CodeAddr=0 to 13919
I2CAddr=2*CodeAddr
i2cread PORTB.7, PORTB.6, I2CControl, I2CAddr, [Instruction], I2Cerror
writecode CodeAddr, Instruction
next CodeAddr

Thanks again!

picster