mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
63 lines
817 B
C
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);
|
|
}
|