Thanks for everyone's suggestions. In the end nothing works. It might very well be that the configuration setting s are correct but unless OSCCON selects the external crystal as its source it doesn't matter. I can change the internal oscillator and the program works fine and responds to the changes. For example, if I select 4MHZ in OSCCON and set OSC 4 it works fine and the timing is correct. Same for 8MHz. It uses the internal oscillator regardless of the setting of OSCCON bit 0.

I tried commenting out the #config part and used the Configure Bits in MPLAB to set the HS oscillator with the same negative results. On a different project that method worked using a PIC16F88, so I know it can and should work. I never got the config bits right on the F88 project but since I can set them in MPLAB it didn't matter.

I've tried multiple ways of setting things per your suggestions but nothing works. I tried a new chip with no luck.