Here is what I came up with today:

Code:
Grab_ELM:
    IF Ebit = 0 THEN                            ;Indicates 1st Nibble ASCii Character
        Ebyt0 = RCREG1                          ;Load Upper Nibble into Ebyt0
    ELSEIF Ebit = 1 THEN                        ;Indicates 2nd Nibble ASCii Character
        Ebyt1 = RCREG1                          ;Load Lower Nibble into Ebyt1
    ENDIF
    TOGGLE Ebit                                 ;Set Up to Load Lower Nibble, or Upper Nibble of Next Character
    IF Ebit = 1 THEN                            ;Just Loaded Upper Nibble, Still Need Lower Nibble
@   INT_RETURN
    ELSE
;Combine HEX[Ebyt[0], Ebyt[1]]            
        IF (Ebyt0 => $30) AND (Ebyt0 <= $39) THEN   ;Characters 0 >> 9
            ElmIn = (Ebyt0 - $30) << 4          ;Shifts to Upper Nibble
        ELSEIF (Ebyt0 => $41) AND (Ebyt0 <= $46) THEN  ;Characters A >> F        
            ElmIn = (Ebyt0 - $37) << 4          ;Shifts to Upper Nibble
        ENDIF
        IF (Ebyt1 => $30) AND (Ebyt1 <= $39) THEN   ;Characters 0 >> 9
            ElmIn = ElmIn + (Ebyt1 - $30)       ;Adds to Upper Nibble
        ELSEIF (Ebyt1 => $41) AND (Ebyt1 <= $46) THEN  ;Characters A >> F
            ElmIn = ElmIn + (Ebyt1 - $37)       ;Adds to Upper Nibble
        ENDIF
    IF (ElmIn = $0D) OR (ElmIn = $20) THEN      ;Carriage Return or Space
@   INT_RETURN                                  ;Ignore & Return
    ELSEIF (ElmIn <> $0D) AND (ElmIn <> $20) AND (ElmIn <> $3E) THEN
        Eval[ElmCt] = ElmIn
    ELSEIF ElmIn = $3E THEN                     ;">", End Of Transmission
        ELM_Rec = 0                             ;Can now send next Request
        ElmCt = 0                               ;Next BYTE In = New
        ElmDat = 1                              ;Must Decipher Eval[x]
        Ebit = 0                                ;Ensures 1st Character Loads into Ebyt0
@   INT_RETURN                                  ;Return
    ENDIF
    ElmCt = ElmCt + 1                           ;Will Load Next Character
@   INT_RETURN                                  ;Return
At least I have variables to work with in a Hex format. From there I have other subroutines to dissect the content.