Thanks for the reply Mac.
I dont think COP is an issue as the LED flash's on boot, which only happens once.
RE Page issue, I have tried address 0x4000, 0x8000 and 0xC000. Also, I can read the address using the method in the code, and, if i step through the code, it appears to read the correct address's.
I have quite a few products in production which use a similar method to which you posted. When I copied that code over to the QE128, nothing worked as expected. So, I started searching and came across another thread which had some far more effectient and simple code so decided to use that, but had the same result, still no flash erase/write.
I tried various ideas, but still no luck on this QE128. I assume its something to do with this QE128 as similar routines work fine in SH8, QD2, GT32, AW32 etc.