<b><font color="#078d4d">
        CJNE    A, #SENT_STR, CARD_RD6  ; is it the start sentinel?
;
        MOV     R1, #0              ; set counter for the digit number
        CALL    PUT_DIG             ; store the start sentinel as first digit
        INC     R1                  ; bump up the digit number
;
        MOV     R2, B               ; set R2 to number of digits to fetch
        DEC     R2
CARD_RD5_LP:
        CALL    GET_CODE_F          ; get next code to A
        JNB     P, CARD_RD6         ; check the parity and if bad try rev reading
        ANL     A, #00FH            ; mask the code
        CJNE    A, #SENT_END, CARD_RD5C ; code is not the end code
;
        CJNE    R2, #2, $+3         ; if remaining digit count is >= 2 then trim
        JC      CARD_RD5C           ; if came too close to end so use residual count
        MOV     R2, #2              ; trim total count of digits to 2 more
;
CARD_RD5C:
        CALL    PUT_DIG             ; store the digit in the list
</font></b>