/ From the Conroy C runtime system. / Long to ascii. / A subroutine of `printf'. / .globl __ltoa / / Double precision power of / ten table. Used by the decimal / conversion. / tab:.word 052013, 162000 .word 035632, 145000 .word 002765, 160400 .word 000230, 113200 .word 000017, 041100 .word 000001, 103240 .word 000000, 023420 .word 000000, 001750 .word 000000, 000144 .word 000000, 000012 tabe: / / __ltoa(b, r, l); / char *b; int r; long l; / The long integer `l' is converted from / binary to ascii and the result stored / in the buffer `b'. The argument `r' / determines the conversion radix; it is / one of `d' (decimal), `o' (octal), `x' / (hexadecimal with 10 thru 15 in lower / case), `X' (hexadecimal with 10 thru / 15 in upper case) or `u' (unsigned). / __ltoa: jsr r0,__csav mov 12(r5),r4 mov 16(r5),r2 mov 20(r5),r3 clr -(sp) cmp 14(r5),$'d beq 3f cmp 14(r5),$'u beq 4f / / Octal. / Hexadecimal. / mov $8.,r1 cmp 14(r5),$'o bne 2f mov $11.,r1 clr r0 br 0f 2: clr r0 asl r3 rol r2 rol r0 0: asl r3 rol r2 rol r0 asl r3 rol r2 rol r0 cmp 14(r5),$'o beq 0f asl r3 rol r2 rol r0 0: cmp r1,$1 beq 0f tst r0 bne 0f tst (sp) beq 1f 0: inc (sp) add $'0,r0 cmp r0,$'9 blos 0f add $'A-'0-10.,r0 cmp 14(r5),$'X beq 0f add $'a-'A,r0 0: movb r0,(r4)+ 1: dec r1 bne 2b br 5f / / Decimal. / Unsigned. / 3: tst r2 bpl 4f movb $'-,(r4)+ neg r2 neg r3 sbc r2 4: mov $tab,r1 2: clr r0 1: cmp r2,(r1) blo 1f bhi 0f cmp r3,2(r1) blo 1f 0: sub (r1),r2 sub 2(r1),r3 sbc r2 inc r0 br 1b 1: tst r0 bne 0f tst (sp) beq 1f 0: inc (sp) add $'0,r0 movb r0,(r4)+ 1: add $4,r1 cmp r1,$tabe blo 2b add $'0,r3 movb r3,(r4)+ 5: clrb (r4) jmp __cret