* sim/ucsim/cmd.src/newcmd.cc, sim/ucsim/cmd.src/newcmdcl.h,
[fw/sdcc] / sim / ucsim / cmd.src / cmdutil.cc
index 90bb15dccc81539471f085050acac339873ece36..977068fc1b7b8eeb60f8dc3e424b89853aee2215 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Simulator of microcontrollers (cmdutil.cc)
+ * Simulator of microcontrollers (cmd.src/cmdutil.cc)
  *
  * Copyright (C) 1999,99 Drotos Daniel, Talker Bt.
  * 
@@ -31,10 +31,12 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include <stdlib.h>
 #include <ctype.h>
 #include <sys/types.h>
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-# include <netinet/in.h>
-# include <arpa/inet.h>
+#ifdef SOCKET_AVAIL
+# include HEADER_SOCKET
+# if defined HAVE_SYS_SOCKET_H
+#  include <netinet/in.h>
+#  include <arpa/inet.h>
+# endif
 #endif
 #include "i_string.h"
 
@@ -86,18 +88,18 @@ make_server_socket(unsigned short int port)
  * 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;
     }
-}
+}*/
 
 
 /*
@@ -110,15 +112,22 @@ get_name_entry(struct name_entry tabl[], char *name, class cl_uc *uc)
   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++;
+         (!(tabl[i].cpu_type & uc->type) ||
+         (strcmp(tabl[i].name, name) != 0)))
+    {
+      //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);
 }
 
 
@@ -126,11 +135,11 @@ get_name_entry(struct name_entry tabl[], char *name, class cl_uc *uc)
  * Interpreting a bitname
  */
 
-bool
+/*bool
 interpret_bitname(char *name, class cl_uc *uc,
-                 uchar **cell, uchar *celladdr,
-                 uchar *bitaddr, uchar *bitmask,
-                 char **symname)
+                  uchar **cell, uchar *celladdr,
+                  uchar *bitaddr, uchar *bitmask,
+                  char **symname)
 {
   char *dot, *p;
   char *sym, bitnumstr[2];
@@ -141,58 +150,59 @@ interpret_bitname(char *name, class cl_uc *uc,
     {
       *dot++= '\0';
       if ((ne= get_name_entry(uc->sfr_tbl(), name, uc)) == NULL)
-       {
-         *celladdr= strtol(name, &p, 0);
-         if (p && *p)
-           {
-             dot--;
-             *dot= '.';
-             return(DD_FALSE);
-           }
-       }
+        {
+          *celladdr= strtol(name, &p, 0);
+          if (p && *p)
+            {
+              dot--;
+              *dot= '.';
+              return(DD_FALSE);
+            }
+        }
       else
-       *celladdr= ne->addr;
+        *celladdr= ne->addr;
       if ((*celladdr < 0x20) ||
-         ((*celladdr > 0x2f) && (*celladdr < 0x80)) ||
-         ((*celladdr > 0x7f) && (*celladdr & 0x07)))
-       return(DD_FALSE);
+          ((*celladdr > 0x2f) && (*celladdr < 0x80)) ||
+          ((*celladdr > 0x7f) && (*celladdr & 0x07)))
+        return(DD_FALSE);
       bitnum= strtol(dot, &p, 0);
       if ((p && *p) ||
-         (bitnum < 0) ||
-         (bitnum > 7))
-       return(DD_FALSE);
+          (bitnum < 0) ||
+          (bitnum > 7))
+        return(DD_FALSE);
       if (*celladdr > 0x7f)
-       *bitaddr= *celladdr + bitnum;
+        *bitaddr= *celladdr + bitnum;
       else
-       *bitaddr= (*celladdr - 0x20)*8 + bitnum;
+        *bitaddr= (*celladdr - 0x20)*8 + bitnum;
       dot--;
       *dot= '.';
     }
   else
     {
       if ((ne= get_name_entry(uc->bit_tbl(), name, uc)) == NULL)
-       {
-         *bitaddr= strtol(name, &p, 0);
-         if ((p && *p) ||
-             (*bitaddr > 0xff))
-           return(DD_FALSE);
-       }
+        {
+          *bitaddr= strtol(name, &p, 0);
+          if ((p && *p) ||
+              (*bitaddr > 0xff))
+            return(DD_FALSE);
+        }
       else
-       *bitaddr= ne->addr;
+        *bitaddr= ne->addr;
       if (*bitaddr > 0x7f)
-       *celladdr= *bitaddr & 0xf8;
+        *celladdr= *bitaddr & 0xf8;
       else
-       *celladdr= (*bitaddr >> 3) + 0x20;
+        *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(DD_TRUE);
   i= 0;
   while (uc->bit_tbl()[i].name &&
-        (uc->bit_tbl()[i].addr != *bitaddr))
+         (uc->bit_tbl()[i].addr != *bitaddr))
     i++;
   if (uc->bit_tbl()[i].name)
     {
@@ -202,7 +212,7 @@ interpret_bitname(char *name, class cl_uc *uc,
     }
   i= 0;
   while (uc->sfr_tbl()[i].name &&
-        (uc->sfr_tbl()[i].addr != *celladdr))
+         (uc->sfr_tbl()[i].addr != *celladdr))
     i++;
   if (uc->sfr_tbl()[i].name)
     sym= strdup(uc->sfr_tbl()[i].name);
@@ -217,7 +227,7 @@ interpret_bitname(char *name, class cl_uc *uc,
   strcat(sym, bitnumstr);
   *symname= sym;
   return(DD_TRUE);
-}
+}*/
 
 
 /*
@@ -227,8 +237,8 @@ interpret_bitname(char *name, class cl_uc *uc,
 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;
@@ -239,43 +249,43 @@ proc_escape(char *string, int *len)
       char *spec_c;
 
       if (*s == '\\' &&
-         *(s+1))
-       {
-         s++;
-         if (*s == '0')
-           {
-             if (!isdigit(*(s+1)))
-               {
-                 *p++= '\0';
-                 s++;
-               }
-             else
-               {
-                 char *octal, *chk, data;
-                 int i, j;
-                 i= strspn(s, "01234567");
-                 octal= (char *)malloc(i+1);
-                 j= 0;
-                 while (*s &&
-                        (j < i))
-                   octal[j++]= *s++;
-                 octal[j]= '\0';
-                 data= strtol(octal, &chk, 8);
-                 if (!chk || !(*chk))
-                   *p++= data;
-               }
-           }
-         else
-           if ((spec_c= strchr(spec_chars, *s)) != NULL)
-             {
-               *p++= spec[spec_c-spec_chars];
-               s++;
-             }
-           else
-             *p++= *s++;
-       }
+          *(s+1))
+        {
+          s++;
+          if (*s == '0')
+            {
+              if (!isdigit(*(s+1)))
+                {
+                  *p++= '\0';
+                  s++;
+                }
+              else
+                {
+                  char *octal, *chk, data;
+                  int i, j;
+                  i= strspn(s, "01234567");
+                  octal= (char *)malloc(i+1);
+                  j= 0;
+                  while (*s &&
+                         (j < i))
+                    octal[j++]= *s++;
+                  octal[j]= '\0';
+                  data= strtol(octal, &chk, 8);
+                  if (!chk || !(*chk))
+                    *p++= data;
+                }
+            }
+          else
+            if ((spec_c= strchr(spec_chars, *s)) != NULL)
+              {
+                *p++= spec[spec_c-spec_chars];
+                s++;
+              }
+            else
+              *p++= *s++;
+        }
       else
-       *p++= *s++;
+        *p++= *s++;
     }
   *p= '\0';
   *len= p-str;
@@ -283,4 +293,4 @@ proc_escape(char *string, int *len)
 }
 
 
-/* End of cmdutil.cc */
+/* End of cmd.src/cmdutil.cc */