 ttl Integer to ASCII Conversion Subroutine
 nam itoa_a
 psect itoa_a,0,0,0,0,0
* int itoa(ii, str)
* int ii;
* register char str[];
* {
itoa:
 movem.l #_1!3,-(sp)
 movea.l d1,a2
*     register int size;
*     register int i, intval, j;
*     register char *digits = "0123456789";
* 
 lea _3(pc),a3
*     intval = ii < 0 ? -ii : ii;
 move.l d0,d6
 bge.s _4
_5
 neg.l d6 :2
_4
*     str[0] = '\0';
 clr.b (a2) :2
*     i = 0;
 moveq.l #0,d5 :2
* 
*     do
*     {
_9
*         j = intval % 10;
 moveq.l #10,d1 :2
 move.l d6,d0 :2
 bsr _T$LMod
 move.l d0,d7 :2
*         str[++i] = digits[j];
 addq.l #1,d5 :2
 move.b 0(a3,d7.l),0(a2,d5.l)
*         intval /= 10;
 moveq.l #10,d1 :2
 move.l d6,d0 :2
 bsr _T$LDiv
_7
 move.l d0,d6 :2
*     } while(intval);
 bne.s _9
_8
* 
*     if(ii < 0)
 tst.l (sp)
 bge.s _11
_10
*         str[++i] = '-';
 addq.l #1,d5 :2
 move.b #45,0(a2,d5.l)
*     size = i;
_11
 move.l d5,d0 :2 for return(size)
*     for(j = 0; j < i; ++j, --i)
 moveq.l #0,d7 :2
 bra.s _14
*     {
_12
*         intval = str[i];
 move.b 0(a2,d5.l),d6
*         str[i] = str[j];
 move.b 0(a2,d7.l),0(a2,d5.l)
*         str[j] = intval;
 move.b d6,0(a2,d7.l)
_15
 addq.l #1,d7 :2
 subq.l #1,d5 :2
_14
 cmp.l d5,d7 :2
 blt.s _12
_13
*     }
*     return(size);
 addq.l #8,sp :2
 movem.l (sp)+,#_1
 rts :2
* }
_1 equ 0x00000cf0 :0
_3 dc.b "0123456789"
 dc.b $0

 ends
