: (parseh)          ( a -- n f )
    ( '0': ASCII 0x30 'x': 0x78 0x7830: 30768 )
    DUP @ 30768 = NOT IF 0 EXIT THEN    ( a 0 )
    ( We have "0x" prefix )
    2+
    0  ( a r )
    BEGIN
    SWAP C@+                            ( r a+1 c )
    DUP NOT IF 2DROP 1 EXIT THEN        ( r, 1 )
    _                                   ( r a n )
    DUP 0< IF ROT 2DROP 0 EXIT THEN     ( a 0 )
    ROT 16 * +                          ( a r*16+n )
    AGAIN
;