You need the extra read because you don't send the dummy byte after the address inside the loop.
Could you try to read only the last byte, P9 at address 0x9F and print it, should be 23
SSPBUF = 0x9f ' adress of the last byte
While Not SSPSTAT.BF
Wend
' maybe a short delay is needed here?
SSPBUF = 0x00 ' change to 0xFf if 0x00 does not work
While Not SSPSTAT.BF
Wend
Could you try to read only the last byte, P9 at address 0x9F and print it, should be 23
SSPBUF = 0x9f ' adress of the last byte
While Not SSPSTAT.BF
Wend
' maybe a short delay is needed here?
SSPBUF = 0x00 ' change to 0xFf if 0x00 does not work
While Not SSPSTAT.BF
Wend