Charles and Steve,
I took Charles code and made a couple of slight changes (in italics) to accomadate a different PIC (PIC18F4620) and to send out a longer string of serial data. It ran just as expected.

Here is the code I ran:
Code:
DEFINE  OSC 40 'Oscillator speed in MHz: 3(3.58) 4 8 10 12 16 20 24 25 32 33 40 
;define LOADER_USED 1
@        __CONFIG    _CONFIG1H, _OSC_HSPLL_1H
@        __CONFIG    _CONFIG2H, _WDT_OFF_2H & _WDTPS_128_2H
@        __CONFIG    _CONFIG3H, _PBADEN_OFF_3H
@        __CONFIG    _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L

;DEFINE NO_CLRWDT 1
DEFINE HSER_RCSTA 90H
DEFINE HSER_TXSTA 20H
DEFINE HSER_BAUD 9600
DEFINE HSER_CLROERR 1
DEFINE LOADER_USED 1 ' Bootloader
Define USE_LFSR 1

T0CON = %10001000
INTCON = %11100000 ' Timer0 and Peripheral interrupts enabled
PIE1 = %00100000 ' USART 1 receive buffer int enable

'************************************************* ***************************************
'* *
'* Declare variables *
'* *
'************************************************* ***************************************


W_HP_Save         var byte    BANKA  ' Save location for W in BANKA
STATUS_HP_Save    var byte    BANKA  ' Save location for STATUS register in BANKA
BSR_HP_Save       var byte    BANKA  ' Save location for BSR register in BANKA

R0_2 var WORD BANKA ' PBP VARS TO SAVE
R1_2 VAR WORD BANKA
R2_2 VAR WORD BANKA
R3_2 VAR WORD BANKA
R4_2 VAR WORD BANKA
R5_2 VAR WORD BANKA
R6_2 VAR WORD BANKA
R7_2 VAR WORD BANKA
R8_2 VAR WORD BANKA
FLAGS_2 VAR BYTE BANKA
GOP_2 VAR BYTE BANKA
RM1_2 VAR BYTE BANKA
RM2_2 VAR BYTE BANKA
RR1_2 VAR BYTE BANKA
RR2_2 VAR BYTE BANKA

TIMER VAR WORd
X VAR WORD 
Y VAR BYTE

SecondsCounter VAR BYTE
TimerFlag VAR BIT
KeyHitFlag VAR BIT

DEFINE INTHAND INT_CODE 'Tell PBP Where your code starts on an interrupt

T0CON = %10001000
INTCON = %11100000 ' Timer0 and Peripheral interrupts enabled
PIE1 = %00100000 ' Usart1 int enabled


TimerFlag = 0
Timer = 0
X = 0
SecondsCounter = 0
KeyHitFlag = 0

GOTO OVER_INT_CODE

asm
	
INT_CODE
    movwf   _W_HP_Save                 ; 1 copy W to W_HP_Save register
    movff   STATUS, _STATUS_HP_Save    ; 2 copy status reg to STATUS_HP_Save
    movff   BSR, _BSR_HP_Save          ; 3 copy BSR to BSR_HP_Save
	
	MOVFF R0,_R0_2
	MOVFF R0+1,_R0_2+1
	MOVFF R1,_R1_2
	MOVFF R1+1,_R1_2+1
	MOVFF R2,_R2_2
	MOVFF R2+1,_R2_2+1
	MOVFF R3,_R3_2
	MOVFF R3+1,_R3_2+1
	MOVFF R4,_R4_2
	MOVFF R4+1,_R4_2+1
	MOVFF R5,_R5_2
	MOVFF R5+1,_R5_2+1
	MOVFF R6,_R6_2
	MOVFF R6+1,_R6_2+1
	MOVFF R7,_R7_2
	MOVFF R7+1,_R7_2+1
	MOVFF R8,_R8_2
	MOVFF R8+1,_R8_2+1
	
	
	IFDEF T2
	MOVFF T2,_T2_2 
	ENDIF
	IFDEF FLAGS
	MOVFF FLAGS,_FLAGS_2 
	ENDIF
	IFDEF GOP
	MOVFF GOP,_GOP_2
	ENDIF
	IFDEF RM1
	MOVFF RM1,_RM1_2
	ENDIF
	IFDEF RM2
	MOVFF RM2,_RM2_2 
	ENDIF
	IFDEF RR1
	MOVFF RR1,_RR1_2 
	ENDIF
	IFDEF RR2
	MOVFF RR2,_RR2_2
	ENDIF


endasm
;%%%%%%%%%%%%%%%%%%%%%%%%% Interrupt handler written in PBP %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
IF INTCON.2 = 1 THEN
TMR0H = $EC ; Reload TMR0 to 65535 - 5000
TMR0L = $77
Timer = Timer + 1
IF Timer >= 1000 THEN
TimerFlag = 1
ENDIF 

ENDIF

IF PIR1.5 = 1 THEN
KeyHitFlag = 1
ENDIF 
INTCON.2 = 0 ; Clear the timer flag
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%``

ASM
	
	MOVFF _R0_2,R0
	MOVFF _R0_2 + 1,R0 + 1
	MOVFF _R1_2,R1
	MOVFF _R1_2 + 1,R1 + 1
	MOVFF _R2_2,R2
	MOVFF _R2_2 + 1,R2 + 1
	MOVFF _R3_2,R3
	MOVFF _R3_2 + 1,R3 + 1
	MOVFF _R4_2,R4
	MOVFF _R4_2 + 1,R4 + 1
	MOVFF _R5_2,R5
	MOVFF _R5_2 + 1,R5 + 1
	MOVFF _R6_2,R6
	MOVFF _R6_2 + 1,R6 + 1
	MOVFF _R7_2,R7
	MOVFF _R7_2 + 1,R7 + 1
	MOVFF _R8_2,R8
	MOVFF _R8_2 + 1,R8 + 1

	IFDEF FLAGS
	MOVFF _FLAGS_2,FLAGS 
	ENDIF
	IFDEF FLAGS
	MOVFF _GOP_2,FLAGS 
	ENDIF
	IFDEF RM1
	MOVFF _RM1_2,RM1 
	ENDIF
	IFDEF RM2 
	MOVFF _RM2_2,RM2 
	ENDIF
	IFDEF RR1
	MOVFF _RR1_2,RR1 
	ENDIF
	IFDEF RR2
	MOVFF _RR2_2,RR2 
	ENDIF
	
	IFDEF T2
	MOVFF _T2_2,T2
	ENDIF 
	
	
    movff   _BSR_HP_Save, BSR          ; Restore the BSR reg
    movf    _W_HP_Save, W              ; Restore W
    movff   _STATUS_HP_Save, STATUS    ; Restore the STATUS reg
    Retfie                             ; Exit the interrupt routine

ENDASM

OVER_INT_CODE:

Topp:
IF TimerFlag = 1 THEN
SecondsCounter = SecondsCounter + 1
HSEROUT ["Seconds = ",#SecondsCounter,13,10]
HSEROUT ["abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWZYZ1234567890",_
		rep "1"\10,rep "2"\10,rep "3"\10,rep "4"\10,rep "5"\10,13,10]
TimerFlag = 0
Timer = 0
ENDIF
IF KeyHitFlag = 1 THEN
HSERIN [Y]
HSEROUT[Y]
KeyHitFlag = 0
ENDIF 
INTCON.7 = 1 ; Turn global Ints back on 
Goto Topp
Here is the output:
Name:  untitled.jpg
Views: 1045
Size:  177.7 KB

So...
I don't think it's a problem with the HSEROUT being interrupted.

Steve