I might see what's going wrong, and if I'm right, it's a PBP problem.

I wish I had an 8722, but I don't. If you have a couple minutes, can you try this program. It should zero the area when programmed and displays the memory first. Then erases it and shows memory again. After manually writing 64 bytes, it dumps the memory 1 last time.
Code:
AA VAR WORD
BB VAR WORD
CC VAR WORD
DD VAR WORD

Gosub ShowFlash
ERASECODE $1F00
Gosub ShowFlash

TBLPTRU = 0
TBLPTRH = $1F
TBLPTRL = 0
For BB = 0 to 63
    TABLAT = BB.Lowbyte
    @ tblwt*+
NEXT BB
TBLPTRL = TBLPTRL - 1
EECON1 = $84
EECON2 = $55
EECON2 = $AA
ASM
    bsf   EECON1, WR
    nop
    bcf   EECON1, WREN
endasm

Gosub ShowFlash

stop
;_____________________________________________
ShowFlash:
    For CC = $1F00 to $1F3F STEP 2
        READCODE CC,DD
        HSEROUT [HEX4 CC," ",HEX4 DD,13,10]
    NEXT CC
    HSEROUT [10]
return

ASM                   ; load 0's in the area we want to write to
  org 1F00h
  db  0,0,0,0,0,0,0,0
  db  0,0,0,0,0,0,0,0
  db  0,0,0,0,0,0,0,0
  db  0,0,0,0,0,0,0,0
  db  0,0,0,0,0,0,0,0
  db  0,0,0,0,0,0,0,0
  db  0,0,0,0,0,0,0,0
  db  0,0,0,0,0,0,0,0
endasm
If that works, then I'll know where the problem is.
<br>