xin: ld hl,0 ; ANSWER := 0; xinloop:call get ; A :== INPUT [character]; cp '0' ; is A LT '0'? ret c ; if so then return; cp ':' ; is A LT ':' [numerics]? jp c,xinshift ; if so then go shift it in; cp 'A' ; is A LT 'A'? ret c ; if so then return; cp 'G' ; is A LT'G' [alphabetic A to F]? ret nc ; if not then return; add a,9 ; A := A + 9 [convert to hexadecimal]; xinshift: and 15 ; A := A & b'00001111' [mask low order]; add hl,hl ; shift ANSWER register pair ret c ; left four bit add hl,hl ; positions using ret c ; double byte addition add hl,hl ; and test each ret c ; operation for add hl,hl ; an overflow error ret c ; return condition; or l ; A := A OR L [add new code to lower order]; ld l,a ; restore low order to ANSWER; jp xinloop ; reiterate for next nybble;