;=====================================================================
; UP RXDHEX liest bis zu vier ASCII-HEX-Zeichen von der RS232 und wandelt
; sie in den �quivalenten Bin�rwert. Der Bin�rwert wird im ACCU zur�ckgegeben
;---------------------------------------------------------------------
RXDHEX:  mar   *,AR1
         popd  *+
         sar   AR6,*+
         sar   AR7,*+

         call  neuein
         bcnd  rh_end,TC
         lacc  AR7
         call  neuein
         bcnd  rh_end,TC
         rpt   #3
         sfl
         add   AR7,0
         call  neuein
         bcnd  rh_end,TC
         rpt   #3
         sfl
         add   AR7,0
         call  neuein
         bcnd  rh_end,TC
         rpt   #3
         sfl
         add   AR7,0

rh_end:  mar   *,AR1
         mar   *-
         lar   AR7,*-
         lar   AR6,*-
         pshd  *
         ret                      ; R�ckgabewert im ACCU
                 
neuein:  mar   *,AR1
         popd  *+
         sacl  *+

         call  RXD                ; Zeichen einlesen
         call  hex2bin            ; Pr�fung, ob Zeichen g�ltig (TC = 0)
                                  ; AR7 = �quivaltente Zahl
         bcnd  n_end,TC           ; Wenn Zeichen ung�ltig --> Ende
         call  TXD                ; Echo
         clrc  TC

n_end:   mar   *,AR1
         mar   *-
         lacc  *-
         pshd  *
         ret

;=====================================================================
; UP hex2bin pr�ft, ob das ASCII-Zeichen im ACCU g�ltig ist. Wenn es
; g�ltig ist wird in AR7 der entsprechene Zahlenwert zur�ckgeliefer. TC
; ist hierbei gel�scht. Wird kein ASCII-Zeichen wird TC = 1 zur�ck-
; geliefert.
;---------------------------------------------------------------------
hex2bin: and   #0ffh
         sacl  AR7,0

         splk  #030h,ARCR
         mar   *,AR7              ; Pipline Protection
         nop
         cmpr  1                  ; TC = AR7 < '0'

;         bcnd  h2bend,TC
         retc  TC

         splk  #039h,ARCR
         mar   *,AR7              ; Pipline protection
         nop
         cmpr  2                  ; TC = AR7 > '9'
         bcnd  h2bzif,TC
;         retcd NTC
         sbrk  #030h              ; g�ltige Zahl in AR7, TC=0
;         nop
         ret

h2bzif:  splk  #061h,ARCR
         mar   *,AR7              ; Pipline protection
         nop
         cmpr  1                  ; TC = AR7 < 'a'
;         bcnd  h2bend,TC
         retc  TC

         splk  #066h,ARCR
         mar   *,AR7              ; Pipline protection
         nop
         cmpr  2                  ; TC = AR7 > 'f'
;         bcnd  h2bend,TC
         retcd NTC
         sbrk  #87                ; ACCU = g�ltige Zahl
         nop                      ; g�ltige Zahl in AR7, TC=0
;         clrc  TC
;         ret
h2bend:  setc  TC
         ret

;-------
cr:      sacl  AR6
         mar   *,AR6
         splk  #13,ARCR           ; CR Pr�fung
         mar   *,AR6
         nop
;         nop
         cmpr  0                  ; TC = AR7 == 13
         ret
