A short extension:

This is no longer working since xc8 2.0 and up. You now had to write:

    unsigned char serv_ctr __at(0x0002);

to put a variable (`serv_ctr`) at an absolute address (`0x0002`).

With XC8 2.0 it is possible to compile your old code using the `@` syntax if you set the compiler settings to use "C90" format. The setting looks like this, it is under "XC8 Global Options" and is called "C standard".