/*
- * Simulator of microcontrollers (cmdutil.cc)
+ * Simulator of microcontrollers (cmd.src/cmdutil.cc)
*
* Copyright (C) 1999,99 Drotos Daniel, Talker Bt.
*
* Printing out an integer in binary format
*/
-void
-print_bin(long data, int bits, FILE *f)
+/*void
+print_bin(long data, int bits, class cl_console *con)
{
long mask= 1;
mask= mask << ((bits >= 1)?(bits-1):0);
while (bits--)
{
- fprintf(f, "%c", (data&mask)?'1':'0');
+ con->printf("%c", (data&mask)?'1':'0');
mask>>= 1;
}
-}
+}*/
/*
int i= 0;
char *p;
+ if (!tabl ||
+ !name ||
+ !(*name))
+ return(0);
for (p= name; *p; *p= toupper(*p), p++);
while (tabl[i].name &&
(!(tabl[i].cpu_type & uc->type) ||
(strcmp(tabl[i].name, name) != 0)))
- i++;
+ {
+ //printf("tabl[%d].name=%s <-> %s\n",i,tabl[i].name,name);
+ i++;
+ }
if (tabl[i].name != NULL)
return(&tabl[i]);
else
- return(NULL);
+ return(0);
}
* Interpreting a bitname
*/
-bool
+/*bool
interpret_bitname(char *name, class cl_uc *uc,
uchar **cell, uchar *celladdr,
uchar *bitaddr, uchar *bitmask,
{
dot--;
*dot= '.';
- return(FALSE);
+ return(DD_FALSE);
}
}
else
if ((*celladdr < 0x20) ||
((*celladdr > 0x2f) && (*celladdr < 0x80)) ||
((*celladdr > 0x7f) && (*celladdr & 0x07)))
- return(FALSE);
+ return(DD_FALSE);
bitnum= strtol(dot, &p, 0);
if ((p && *p) ||
(bitnum < 0) ||
(bitnum > 7))
- return(FALSE);
+ return(DD_FALSE);
if (*celladdr > 0x7f)
*bitaddr= *celladdr + bitnum;
else
*bitaddr= strtol(name, &p, 0);
if ((p && *p) ||
(*bitaddr > 0xff))
- return(FALSE);
+ return(DD_FALSE);
}
else
*bitaddr= ne->addr;
*celladdr= (*bitaddr >> 3) + 0x20;
}
// *bitaddr, *celladdr now OK
- *cell= uc->get_bit/*FIXME*/(*bitaddr);
+ *cell= uc->get_bit//FIXME
+ (*bitaddr);
*bitmask= BIT_MASK(*bitaddr);
// making symbolic name
if (!symname)
- return(TRUE);
+ return(DD_TRUE);
i= 0;
while (uc->bit_tbl()[i].name &&
(uc->bit_tbl()[i].addr != *bitaddr))
{
sym= strdup(uc->bit_tbl()[i].name);
*symname= sym;
- return(TRUE);
+ return(DD_TRUE);
}
i= 0;
while (uc->sfr_tbl()[i].name &&
sprintf(bitnumstr, "%1d", *bitaddr & 0x07);
strcat(sym, bitnumstr);
*symname= sym;
- return(TRUE);
-}
+ return(DD_TRUE);
+}*/
/*
char *
proc_escape(char *string, int *len)
{
- char spec_chars[]= "fnrtvab";
- char spec[]= "\f\n\r\t\v\a\b";
+ char spec_chars[]= "fnrtvab\"";
+ char spec[]= "\f\n\r\t\v\a\b\"";
char *s, *str, *p;
s = string;
}
-/* End of cmdutil.cc */
+int
+cmd_vfprintf(FILE *f, char *format, va_list ap)
+{
+ int ret;
+ if (!f)
+ return(0);
+#ifdef HAVE_VASPRINTF
+ char *msg= NULL;
+ vasprintf(&msg, format, ap);
+ ret= fprintf(f, "%s", msg);
+ free(msg);
+#else
+# ifdef HAVE_VSNPRINTF
+ char msg[80*25];
+ vsnprintf(msg, 80*25, format, ap);
+ ret= fprintf(f, "%s", msg);
+# else
+# ifdef HAVE_VPRINTF
+ char msg[80*25];
+ vsprintf(msg, format, ap); /* Dangerous */
+ ret= fprintf(f, "%s", msg);
+# else
+# ifdef HAVE_DOPRNT
+ /* ??? */
+ /*strcpy(msg, "Unimplemented printf has called.\n");*/
+# else
+ /*strcpy(msg, "printf can not be implemented, upgrade your libc.\n");*/
+# endif
+# endif
+# endif
+#endif
+ fflush(f);
+ return(ret);
+}
+
+int
+cmd_fprintf(FILE *f, char *format, ...)
+{
+ va_list ap;
+ va_start(ap, format);
+ int ret= cmd_vfprintf(f, format, ap);
+ va_end(ap);
+ return(ret);
+}
+
+
+/* End of cmd.src/cmdutil.cc */