Here is what I came up with today:
At least I have variables to work with in a Hex format. From there I have other subroutines to dissect the content.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




Bookmarks