Bell 32V release
[unix-history] / usr / src / cmd / adb / command.c
index e4a7885..9fef4dd 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "defs.h"
  */
 
 #include "defs.h"
+SCCSID(@(#)command.c   2.4);
 
 
 MSG            BADEQ;
 
 
 MSG            BADEQ;
@@ -23,14 +24,14 @@ INT         mkfault;
 STRING         errflg;
 
 CHAR           lastc;
 STRING         errflg;
 
 CHAR           lastc;
-CHAR           eqformat[128] "o";
-CHAR           stformat[128] "o\"= \"^i";
-POS            *endhdr;
+CHAR           eqformat[128] = "z";
+CHAR           stformat[128] = "X\"= \"^i";
+struct user u;
 
 L_INT          dot;
 L_INT          ditto;
 INT            dotinc;
 
 L_INT          dot;
 L_INT          ditto;
 INT            dotinc;
-INT            lastcom '=';
+INT            lastcom '=';
 L_INT          var[];
 L_INT          locval;
 L_INT          locmsk;
 L_INT          var[];
 L_INT          locval;
 L_INT          locmsk;
@@ -86,7 +87,7 @@ CHAR          defcom;
                goto trystar;
 
            case '=':
                goto trystar;
 
            case '=':
-               itype=NSP; ptype=ASYM;
+               itype=NSP; ptype=0;
                goto trypr;
 
            case '?':
                goto trypr;
 
            case '?':
@@ -129,13 +130,11 @@ CHAR              defcom;
                        case 'l':
                            /*search for exp*/
                            IF eqcom THEN error(BADEQ); FI
                        case 'l':
                            /*search for exp*/
                            IF eqcom THEN error(BADEQ); FI
-                           dotinc=2; savdot=dot;
+                           dotinc=(longpr?4:2); savdot=dot;
                            expr(1); locval=expv;
                            IF expr(0) THEN locmsk=expv; ELSE locmsk = -1L; FI
                            expr(1); locval=expv;
                            IF expr(0) THEN locmsk=expv; ELSE locmsk = -1L; FI
-                           LOOP w=leng(get(dot,itype));
-                                IF longpr
-                                THEN w=itol(w,get(inkdot(2),itype));
-                                FI
+                               IF !longpr THEN locmsk &= 0xFFFF; locval &= 0xFFFF; FI
+                           LOOP w=get(dot,itype);
                                 IF errflg ORF mkfault ORF (w&locmsk)==locval THEN break; FI
                                 dot=inkdot(dotinc);
                            POOL
                                 IF errflg ORF mkfault ORF (w&locmsk)==locval THEN break; FI
                                 dot=inkdot(dotinc);
                            POOL
@@ -154,8 +153,8 @@ CHAR                defcom;
                                 errflg=0; dot=savdot;
                                 IF longpr
                                 THEN put(dot,itype,expv);
                                 errflg=0; dot=savdot;
                                 IF longpr
                                 THEN put(dot,itype,expv);
+                                ELSE put(dot,itype,itol(get(dot+2,itype),expv));
                                 FI
                                 FI
-                                put((longpr?inkdot(2):dot),itype,shorten(expv));
                                 savdot=dot;
                                 printf("=%8t"); exform(1,wformat,itype,ptype);
                                 newline();
                                 savdot=dot;
                                 printf("=%8t"); exform(1,wformat,itype,ptype);
                                 newline();
@@ -177,8 +176,8 @@ CHAR                defcom;
            case '>':
                lastcom=0; savc=rdc();
                IF regptr=getreg(savc)
            case '>':
                lastcom=0; savc=rdc();
                IF regptr=getreg(savc)
-               THEN endhdr[regptr]=shorten(dot);
-                    ptrace(WUREGS,pid,2*(512+regptr),endhdr[regptr]);
+               THEN * (ADDR *) (((ADDR)&u)+regptr)=dot;
+                    ptrace(WUREGS,pid,2*(512+regptr),* (ADDR *) (((ADDR)&u)+regptr));
                ELIF (modifier=varchk(savc)) != -1
                THEN    var[modifier]=dot;
                ELSE    error(BADVAR);
                ELIF (modifier=varchk(savc)) != -1
                THEN    var[modifier]=dot;
                ELSE    error(BADVAR);
@@ -187,7 +186,7 @@ CHAR                defcom;
 
            case '!':
                lastcom=0;
 
            case '!':
                lastcom=0;
-               unox(); break;
+               shell(); break;
 
            case '$':
                lastcom=0;
 
            case '$':
                lastcom=0;