void ultoa(unsigned long value, __data unsigned char* str, unsigned char radix) { unsigned int index; unsigned char ch; unsigned char buffer[NUMBER_OF_DIGITS]; /* space for NUMBER_OF_DIGITS + '\0' */ index = NUMBER_OF_DIGITS; do { ch = '0' + (value % radix); if ( ch > '9') ch += 'a' - '9' - 1; #if _DEBUG io_str( "ultoa: " ); io_long( value ); io_long( (unsigned long) ch ); #endif buffer[ --index ] = ch; value /= radix; } while (value != 0); do { *str++ = buffer[index++]; } while ( index < NUMBER_OF_DIGITS ); *str = 0; /* string terminator */ }
int fprintf (FILE *stream, const char *fmt, ...) { va_list ap; #if _DEBUG io_str ("fprintf: "); io_long ((unsigned long) stream); io_long ((unsigned long) fmt); #endif va_start (ap, fmt); return vfprintf (stream, fmt, ap); }
void ltoa(long value, __data unsigned char* str, unsigned char radix) { #if _DEBUG io_str( "ltoa: " ); io_long( (unsigned long)value ); #endif if (value < 0 && radix == 10) { *str++ = '-'; value = -value; } ultoa((unsigned long)value, str, radix); }
unsigned int vfprintf(FILE *stream, char *fmt, va_list ap) { unsigned char radix; unsigned char flong, fstr; unsigned char fchar, nosign; unsigned char upcase; unsigned int count=0; unsigned char *str, *ch; __data char *str1; long val; // static char buffer[16]; char buffer[16]; #if _DEBUG io_str( "vfprintf: " ); io_long( (unsigned long)stream ); io_long( (unsigned long)fmt ); #endif // va_start(ap,fmt); ch = fmt; while( *ch ) { //for (; *fmt ; fmt++ ) if (*ch == '%') { flong = 0; fstr = 0; fchar = 0; nosign = 0; radix = 0; upcase = 0; ch++; if(*ch == '%') { __stream_putchar(stream, *ch); ++count; ++ch; continue; } if(*ch == 'u') { nosign = 1; ch++; } if(*ch == 'l') { flong = 1; ch++; } else if(*ch == 'h') { fchar = 1; ch++; } if(*ch == 's')fstr = 1; else if(*ch == 'd')radix = 10; else if(*ch == 'x'){ radix = 16; upcase = 0; } else if(*ch == 'X'){ radix = 16; upcase = 1; } else if(*ch == 'c')radix = 0; else if(*ch == 'o')radix = 8; else if(*ch == 'b')radix = 2; else { __stream_putchar(stream, *ch); ++count; ++ch; continue; } if(fstr) { str = va_arg(ap, char *); while(*str) { __stream_putchar(stream, *str); str++; count++; } } else { val = 0; if(flong) { val = va_arg(ap, long); #if _DEBUG io_long(val); #endif } else if(fchar) { val = va_arg(ap, char); #if _DEBUG io_long(val); #endif } else {