Files
Digital-Research-Source-Code/CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v102a/lib7/prtint.c
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

63 lines
817 B
C

char *__prtint(pobj, buf, base, signed, f, upper)
int *pobj;
char *buf;
int base;
int signed;
int upper;
char *(*f)();
{
char digs[15];
register char *dp;
register int k;
register char *p;
dp = (*f)(pobj, &buf, base, signed, digs);
if (dp == digs)
*dp++ = 0;
p = buf;
while (dp != digs)
{
k = *--dp;
if (k < 10)
k =+ '0';
else
k =+ upper ? 'A'-10 : 'a'-10;
*p++ = k;
}
*p = 0;
return (p);
}
char *__prtshort(pobj, pbuf, base, signed, digs)
int *pobj;
char **pbuf;
int base;
int signed;
char *digs;
{
extern long ldivr;
register long n;
register char *p;
register long b;
p = digs;
b = base;
n = *pobj;
if (signed && n < 0)
{
n = -n;
*(*pbuf)++ = '-';
}
else {
n =& 0xffffL; //clear upper half
}
while (n != 0)
{
n = ldiv(n,b);
*p++ = ldivr;
}
return (p);
}