;=====================================================================
; UP BIN2HEX konvertiert einen 16-Bit Bin�rwert aus dem ACCU in einen
; ASCII-HEX-String, der in einem Buffer mit EOS (0) am Ende abgelegt wird.
;---------------------------------------------------------------------
; �bergabe: 16-Bit Bin�rwert im ACCU
;           Stack-Pointer in AR1
; R�ckgabe: ASCII-Hex-String im globalen Buffer BUF
;---------------------------------------------------------------------
BIN2HEX: mar    *,AR1        ; ARP auf Stack, ARP=AR1
         popd   *+           ; R�cksprungadresse vom Hardwarestack auf den
                             ; Softwarestack retten
         sacl   *+           ; ACCU retten, *AR1 = ACCU, AR1++
         sar    AR7,*+       ; Register AR7 retten, *AR1 = AR7, AR1++
         sar    AR6,*+       ; Register AR6 retten, *AR1 = AR6,

         lar    AR6,#BUF     ; String-Buffer-Adresse laden
         sacb
         and    #0f000h      ; 1. Zeichen
         rpt    #11
         sfr
         call   convert
         mar    *,AR6
         sacl   *+           ; Zeichen im String-Buffer ablegen

         lacb
         and    #0f00h       ; 2. Zeichen
         rpt    #7
         sfr
         call   convert
         mar    *,AR6
         sacl   *+

         lacb
         and    #0f0h        ; 3. Zeichen
         rpt    #3
         sfr
         call   convert
         mar    *,AR6
         sacl   *+

         lacb
         and    #0fh        ; 4. Zeichen
         call   convert
         mar    *,AR6
         sacl   *+
         lacc   #0           ; 0 als EOS-Zeichen anh�ngen
         sacl   *

         mar    *,AR1        ; ARP = AR1
         mar    *-
         lar    AR6,*-       ; AR6 von Softwarestack restaurieren, AR6 = *AR1,
                             ; AR1--
         lar    AR7,*-       ; AR7 restaurieren, AR7 = *AR1, AR1--
         lacc   *-           ; ACCU restaurieren, ACCU = *AR1, AR1--
         pshd   *            ; R�cksprungadresse vom Softwarestack auf den
                             ; Hardwarestack legen
         ret
;=====================================================================
; UP convert konvertiert das Bin�r-Nibble im ACCU in ASCII-Hex
;---------------------------------------------------------------------
convert: sacl AR7            ; AR7 = ACCU
         mar  *,AR7
         splk #0ah,ARCR      ; AR-Compare-Register mit 10d laden
         nop                 ;
         nop                 ;
         cmpr 1              ; TC = AR7 < ARCR
         bcnd buchst,NTC     ; Ziffer oder Buchstabe?
         add  #48            ; Ziffer
         ret
buchst:  add  #55            ; Buchstabe
         ret
;---------------------------------------------------------------------
