I noticed that in the file PIC16F877.pas (my reference to understand how to declare a pic) there is the line:
{$SET_UNIMP_BITS '000:00'} // INDF
After some search in the datasheet, I found 'reading the INDF register itself, indirectly
(FSR = '0') will read 00h'. That's why you add this line?
Well. I haven't written this files. They are part of some collaboration. But I guess the idea of setting 0x000 as "Unimplemented" is because INDF is not implemented as a register.
The information about unimplemented bits, is used for the compiler when find free space.
But it's more useful for the simulator, to know how it will be the result when reading some special bytes.
Anyway it's not a problem in the Baseline, and Mid-range compilers because they know that reading the INDF address is an indirect addressing.
Actually, I don't know how the PicPas simulator respond when trying to read INDF indirectly. I will test.
Don't forget directive {$SET_UNIMP_BITS} set bits to be read always as 0.
If you need to set bits to be read always as 1, you need to use {SET_UNIMP_BITS1}
PicPas is accurate in defining the state of every bit of the hardware. That's a difference from other simulator like Proteus, what is incapable of simulate the state of unimplemented bits and can give wrong results in some simulations.