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