void xprintf(unsigned char* fmt, ...)
{
va_list ap; //Argument Pointer
unsigned char* p;
unsigned char Bval;
unsigned int ival, temp;
unsigned long lval;
va_start(ap, fmt);
p = fmt;
while (*p)
{
switch (*p)
{
case '\n':
EA = 0;
putchar('\n');
putchar(0x0D);
EA = 1;
break;
case '%':
p++;
switch (*p)
{
case 'x':
ival = va_arg(ap,int);
//if ((unsigned char) ival >> 8)
//{
EA = 0;
PrintHex((unsigned char) (ival >> 8));
EA = 1;
//}
/*
EA = 0;
PrintHex((unsigned char) ival);
*/
EA = 1;
break;
case 'd':
ival = va_arg(ap, int);
EA = 0;
putint(ival);
EA = 1;
break;
case 'l':
lval = va_arg(ap, long);
//if ((unsigned char) lval >> 24)
//{
EA = 0;
PrintHex((unsigned char) (lval >> 24));
//}
//if ((unsigned char) lval >> 16)
//{
PrintHex((unsigned char) (lval >> 16));
//}
//if ((unsigned char) lval >> 8)
//{
PrintHex((unsigned char) (lval >> 8));
//}
PrintHex((unsigned char) lval);
EA = 1;
break;
case '%':
EA = 0;
putchar('%');
EA = 1;
break;
}
break;
default:
EA = 0;
putchar(*p);
EA = 1;
break;
}
p++;
}
va_end(ap);
}