ASCSum2Hex ; Local sub for RX handler, turn ASCII pseudo-sum into actual sum in checksum MSB
; FSR0 must be pointed at pseudo-sum MSB on entry
MOVLW 0x30
SUBWF INDF0,F,A ; Sub 30H from MSB of pseudo-sum
MOVLW .9
CPFSGT INDF0,A ; Skip if result > 9 (letter A-F)
BRA ASHa ; MS good to go, swap it
MOVLW 0x7
SUBWF INDF0,F,A ; Sub another 7 to get A-F
ASHa SWAPF POSTINC0,F,A ; Swap result to MS nibble and bump pointer to LS sum
MOVLW 0x30
SUBWF INDF0,F,A ; Sub 30H from LSB of pseudo-sum
MOVLW .9
CPFSGT INDF0,A ; Skip if result > 9 (letter A-F)
BRA ASHb ; MS good to go, swap it
MOVLW 0x7
SUBWF INDF0,F,A ; Sub another 7 to get A-F
ASHb MOVF POSTDEC0,W,A ; Fetch LS result and bump pointer back to MS
IORWF INDF0,F,A ; OR into LSnibble of result
RETURN ; Done, exit