I'm still a little new to DT_INTs, and am having a little trouble. I'm trying to use two interrupts, one on a hardware UART, and the second using Ext Int 2. The hardware uart is reading an RFID tag and goes on to just send the data out the debug port.

Ext Int 2 is simply a wire that, when grounded, should write some fake RFID data to my TAG string, and send that out the debug port as well.

If the External interrupt goes first, it works ONCE; but after the UART interrupt works, the data that was put in the data string is only transmitted AFTER the next data read by the uart!!

I am at a loss to understand what's happening here. Can somebody see my goof/s?

Code:
'INCLUDE FILES FOR DT INTERRUPTS  
INCLUDE "DT_INTS-18.bas"
INCLUDE "ReEnterPBP-18.bas"

'======================
'CONSTANTS
'======================
MODE      CON  6                             'SERIN2/SEROUT2 TO USE 38400 BAUD 

'======================
'VARIABLES  
'======================
TP1       VAR  PORTA.0                       'TP1 (GC SIDE) 
TP2       VAR  PORTA.1                       'TP2 (GC SIDE)
TP3       VAR  PORTA.2                       'TP3 (READER SIDE)
LED       VAR  PORTA.3                       'ACTIVITY LED
ITP0      VAR  PORTA.5                       'INTERNAL TEST POINT 0  
DAV       VAR  PORTA.6                       'DAV (INT) FLAG TO GC 
DATA0     VAR  PORTB.0                       'WIEGAND INPUT 
DATA1     VAR  PORTB.1                       'WIEGAND INPUT
EXTINT    VAR  PORTB.2                       'TERMINAL STRIP INTERRUPT   
LEDR      VAR  PORTB.3                       'RED LED 
LEDG      VAR  PORTB.4                       'GRN LED  
BUZZ      VAR  PORTB.5                       'BUZZER 
ITP1      VAR  PORTC.0                       'INTERNAL TEST POINT 1
ITP2      VAR  PORTC.1                       'INTERNAL TEST POINT 2
DIAGIN    VAR  PORTC.2                       'DIAG IN (DEBUGIN)
DIAGOUT   VAR  PORTC.3                       'DIAG OUT (DEBUG)
 
X         VAR  BYTE
Y         VAR  BYTE
Z         VAR  BYTE
TAG       VAR  BYTE[10]

CLEAR

'INITIALIZE INTERRUPTS
ASM
INT_LIST  MACRO                              ;IntSource,Label,Type,ResetFlag?
        INT_Handler INT2_INT, _EXTTS,PBP,yes
        INT_Handler RX_INT, _RDRINT,PBP,yes                     
    ENDM
    INT_CREATE                               ;CREATES THE INTERRUPT PROCESSOR 
ENDASM

'ENABLE INTERRUPTS
@ INT_ENABLE RX_INT                          ;READER UART INTERRUPT
@ INT_ENABLE INT2_INT                        ;EXTERNAL INTERRUPT

'======================
MAIN:
'======================
PAUSE 1
GOTO MAIN

'======================
RDRINT:                                      'TAG READER INTERRUPT! 
'======================                      
HSERIN [WAIT($02),STR TAG\8\$03]             'READ ENTIRE TAG 
GOSUB SHOW                                   'SEND TAG/KEYPAD DATA TO DIAG PORT
GOSUB ERASETAG                                                                       
@ INT_RETURN

'======================
EXTTS:
'======================
'WRITE TAG DATA HERE:
'00995031
TAG[0]=$30:TAG[1]=$30:TAG[2]=$39:TAG[3]=$39:TAG[4]=$35:TAG[5]=$30:TAG[6]=$33:TAG[7]=$31
GOSUB SHOW
GOSUB ERASETAG
@ INT_RETURN

'======================
SHOW:
'======================
'SHOW TAG CHARACTERS:
SEROUT2 DIAGOUT,MODE,[STR TAG,10,13]         'SEND DATA TO DIAG PORT 
RETURN

ERASETAG:                                    'ERASE DATA 
FOR Z=0 TO 10
     TAG[Z]=$00
NEXT Z
RETURN