; Fil: I2ASC.ASM                   Datum: 85-08-30 
; Inskrivet av:  Kristoffer Eriksson 
; F|r b}da ABC800 och ABC80, ja alla Z80-processorer |ver huvud taget. 

;*   Skriver talet DE decimalt med ASCII-siffror p} adressen HL. 
;*   Inledande nollor undertrycks om A=0 vid anrop. 
;*   I2ASC tar tal upp till 65535, I1ASC upp till 999. 
;*   A, BC f|rst|rs, HL |kas med antalet siffror. (A blir ej 0). 


I2ASC:      LD    BC,-10000        ; Heltal i DE till ASCII-tal vid HL. 
            CALL  I.DIGIT 
            LD    BC,-1000 
            CALL  I.DIGIT 
I1ASC:      LD    BC,-100 
            CALL  I.DIGIT 
            LD    BC,-10 
            CALL  I.DIGIT 
            LD    A,E 
            JR    I.SAVDIG 

I.DIGIT:    PUSH  HL 
            EX    DE,HL 
            LD    E,255 
I.L1:       ADD   HL,BC 
            INC   E 
            JR C  I.L1 
            SBC   HL,BC 
            AND   A                ; A {r 0 om inget skrivits ut {n. 
            LD    A,E              ; Har siffror skrivits ut f|re denna ska 
            EX    DE,HL            ; {ven denna skrivas oavsett om den {r en 
            POP   HL               ; nolla eller inte. 
            JR NZ I.SAVDIG 
            AND   A 
            RET   Z                ; [r tecknet en nolla, skrivs det inte ut. 
I.SAVDIG:   OR    48               ; Den sista siffran g}r alltid direkt hit. 
            LD    (HL),A 
            INC   HL 
            RET 
