Darrel this incorporates your USART macro (works great):
Code:
DEFINE LOADER_USED 1    ' use for Boot Loader
DEFINE OSC 40   ' change to suit oscillator speed

'============================================
' Equates
'============================================

temp var byte   ' temporary storage for character

    Goto main   ' skip around Macros

'============================================
' Macros
'============================================
' Send String Macro (must be located prior to Main)
ASM
SendStr  macro Astring
    call _prntSTR
    data Astring,0
    endm
ENDASM

' USART Initialization Macro (must be located prior to Main)
' [ Initialize USART for specified baud rate at current OSC speed ]
ASM
USART_Init  macro  Baud
    clrf    TXSTA, 0
_SPBRG = (OSC * 1000000) / 16 / Baud - 1     ; calc SPBRG @ High baud rate
    if _SPBRG > 255                          ; if SPBRG is too high
_SPBRG = (OSC * 1000000) / 64 / Baud - 1     ; calc for Low baud rate
        bcf   TXSTA, BRGH, 0                 ; Set BRGH to Low Speed
        if _SPBRG > 255
_SPBRG = 255
        endif
    else                                     
        bsf   TXSTA, BRGH, 0                 ; Set BRGH to High Speed
    endif
    bsf     TXSTA, TXEN, 0                   ; Set Transmit Enable bit
    movlw   _SPBRG          
    movwf   SPBRG, 0                         ; load the calulated SPBRG
    movlw   B'10010000'                      ; enable USART
    movwf   RCSTA, 0
    endm
ENDASM

'============================================
' Main Program
'============================================
Main:
@ USART_Init 19200  ; set RS232 baudrate

' send messages through RS232
' format #1
@ SendStr "This is a string" 
@ SendStr "yet another string again"
@ SendStr "and one more time!"

' format #2
ASM
  SendStr "This is a string" 
  SendStr "yet another string again"
  SendStr "and one more time!"
ENDASM

Done:
   Goto Done        ' loop forever

'============================================
' String Extraction and Print Routines
'============================================
' print string code (locate anywhere)
ASM
_prntSTR
;copy return address to TBLPTR and then pop it off the stack
    movf    TOSU,W
    movwf   TBLPTRU
    movf    TOSH,W
    movwf   TBLPTRH
    movf    TOSL,W
    movwf   TBLPTRL
    POP

;TBLPTR should now be pointing to 1st character in string
Next_Char
    tblrd   *+              ; table read and post increment TBLPTR
    movff   TABLAT,_temp    ; fetch character from message string
    bra     Test_EOM        ; go test for EOM character
	
Continue                    ; If not EOM then...
    movf    _temp,W         ; move character into TXREG and...
    movwf   TXREG           ; send it!
    btfss   TXSTA,TRMT      ; has it been transmitted?
    goto    $-2             ; If not, keep checking
    bra     Next_Char       ; fetch next message character from table
	
Test_EOM
    movlw   .0              ; check for EOM character
    cpfseq  _temp,W         ; compare temp with w, if temp = 0 then end			
    bra     Continue        ; no EOM, so continue
    movlw   "\r"            ; move carriage return into TXREG and...
    movwf   TXREG           ; send it!
    btfss   TXSTA,TRMT      ; has it been transmitted?
    goto    $-2             ; If not, keep checking	
    movlw   "\n"            ; move line feed into TXREG and...
    movwf   TXREG           ; send it!
    btfss   TXSTA,TRMT      ; has it been transmitted?
    goto    $-2             ; If not, keep checking

;use incremented value of TBLPTR as new return address (push it)
    PUSH
    movf   TBLPTRU,W
    movwf   TOSU
    movf   TBLPTRH,W
    movwf   TOSH
    movf   TBLPTRL,W
    movwf   TOSL
    return                  ;finished with message, return to caller
ENDASM