There is one thing I did forget to mention (and I aplogize to all of you that have offered help). The mcu initialization is done in assembly. That code block is located immediately after all the variable declarations, etc.
-----------------------------------------------------------------

Mike,
I tried the dummy variable fix, it did not cure the problem. after putting the dummies in I checked the address of every word variable in the asm listing to make sure none crossed a page. Here is the asm listing of the page banks and the dummy declarations.

RAM_START EQU 00020h
RAM_END EQU 001EFh
RAM_BANKS EQU 00004h
BANK0_START EQU 00020h
BANK0_END EQU 0007Fh
BANK1_START EQU 000A0h
BANK1_END EQU 000EFh
BANK2_START EQU 00120h
BANK2_END EQU 0016Fh
BANK3_START EQU 00190h
BANK3_END EQU 001EFh
EEPROM_START EQU 02100h
EEPROM_END EQU 021FFh


'******************************************
' Dummy Variable Declarations *
'******************************************
bogus_0 VAR BYTE $07F
bogus_1 VAR BYTE $0EF
bogus_2 VAR BYTE $16F
bogus_3 VAR BYTE $1EF

----------------------------------------------------------------

Bruce,
The code that displays the splash screen is physically located early in the code and is the first code ran once the initializatin sequences are finished.
I doubled checked my routines, as you suggested, everything ok there.

I know it is hard to help when you can't see the code, and believe me if I could I would upload the entire project and let everyone have a field day with it.


The code blocks out like this:

fuse settings
defines
constant declarations
variable decalrations

GOTO Start

INI:
assembly block (with return) to setup the chip

Setup:
routine (with return) to set initial state of variables, etc

Start:
GOSUB INI
GOSUB Setup

Splash screen is displayed here.

Some initail instrument checks ( proper hookup, etc) are performed here

Switch polling routine here

rest of code body.