( returns negative value on error )
: _            ( c -- n )
    ( '0' is ASCII 48 )
    48 -
    DUP 0< IF EXIT THEN                 ( bad )
    DUP 10 < IF EXIT THEN               ( good )
    ( 'a' is ASCII 97. 59 = 97 - 48 )
    49 -
    DUP 0< IF EXIT THEN                 ( bad )
    DUP 6 < IF 10 + EXIT THEN           ( good )
    ( bad )
    255 -
;