Hmm
Code:
ADR var word : dat var byte : EEunit var byte 'define I²C address, data & unit variables
delay var byte 'define delay time variable
T1 var byte : T2 var byte : T3 var byte 'define real time buffers
T4 var byte : T5 var byte : T6 var byte '
A1 var byte : A2 var byte : A3 var byte 'define alarm time variables
A4 var byte : AA var bit : AL var bit 'define alarm condition variable bits
D1 var byte : D2 var byte : DB var byte 'define display digit buffers
D3 var byte : D4 var byte '
D5 var byte : D6 var byte '
B0 var byte 'define GPS data bytes
B2 var byte : B3 var byte '
B4 var byte : B5 var byte '
B6 var byte : B7 var byte '
DP var bit 'define decimal point status bit
JS var bit 'define joystick status variable
DC var byte 'define display comparison variable
RC var byte 'define real time clock comparison variable
mode var byte 'define mode variable byte
colcnt var byte 'define colon delay counter variable byte
sndbuff var byte 'define sound buffer value variable byte
soundcalc var byte : snd var byte 'define sound calc variable byte
L0 var byte : L1 var byte : L2 var byte 'define variables for Lat & Longitudinal coordinates
L3 var byte : L4 var byte : L5 var byte '
L6 var byte : L7 var byte : L8 var byte '
L9 var byte : LA var byte : LB var byte '
LC var byte : LD var byte : LE var byte '
LF var byte : LG var byte : N1 var byte '
LNG var byte : LAT var byte '
last var DB.bit7 : first var DB.bit0 'define display buffer first & last bits for swapping
msel var bit : ply var bit 'define mode display / play and pause status bits
LTA var byte : LTD var byte 'define lookup table value & data bytes
'
roll var byte : Rcnt var byte 'define display animation control variables
roll1 var roll.bit0 : roll2 var roll.bit1 '
roll3 var roll.bit2 : roll4 var roll.bit3 '
roll5 var roll.bit4 : roll6 var roll.bit5 '
rollo var byte '
rollo1 var rollo.bit0 : rollo2 var rollo.bit1 '
rollo3 var rollo.bit2 : rollo4 var rollo.bit3 '
rollo5 var rollo.bit4 : rollo6 var rollo.bit5 '
rolls var byte '
rolls1 var rolls.bit0 : rolls2 var rolls.bit1 '
rolls3 var rolls.bit2 : rolls4 var rolls.bit3 '
rolls5 var rolls.bit4 : rolls6 var rolls.bit5 '
F1 var byte : F2 var byte : F3 var byte '
F4 var byte : F5 var byte : F6 var byte '
'
SM var bit 'define search match status bit
as you can see, there aren't a lot of variables.
I think that the library variables are being added to total the 96 bytes
in the first bank of RAM and then the compiler is clapping out there.
If I add just a few more byte size variables and set them to any value
to make sure they are used, my program will no longer start 
If I remember correctly from my 16F84 days, PBP uses some variables
to pass values from the user's PBP routines to it's own library routines.
with a bit of assembler hacking I have managed to claim some of these
"middle man" variables in the past.
Art.
Bookmarks