Hello,
With the inclusion of flash page erase and byte programming code, it is a good idea that flash block protection be enabled, to prevent the accidental erasure of the user program code. The block protection setting represents the highest unprotected page - all pages above this will be protected. This means that the non-volatile parameters should occupy the first flash page within the device - for the 'JM16 device, these should commence at address 0xC000. Therefore, the user code should commence at address 0xC200, or above (page size is 512 bytes).
As has already been stated, a portion of the erase and programming code needs to execute from RAM, since flash memory does become inaccessible. This applies from when the flash command is initiated, to the completion of the command (refer to the flow diagram within the datasheet).
Regards,
Mac