home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / m6 / m65.c < prev    next >
Encoding:
C/C++ Source or Header  |  1975-07-17  |  1.1 KB  |  86 lines

  1. #
  2.  
  3. #include "m6.h"
  4.  
  5. define() {
  6.     remove(1);
  7.     newdef(decbin(3));
  8.     setdef(arg(1),arg(2)); 
  9. }
  10.  
  11. newdef(n) {
  12.     pushdef();
  13.     de = &df[df->dtext = dend]; 
  14.     if((df->dswitch = n)<0) trashflag++;
  15. }
  16.  
  17. setdef(s1,s2) {
  18.     copydef(s1);
  19.     df->dtext = de -df;
  20.     copydef(s2); 
  21. }
  22.  
  23. copydef(s) 
  24. char *s; 
  25. {
  26.     while(*de++ = *s++)
  27.         if(de>dmax) diag("Definition table overflow"); 
  28. }
  29.  
  30. char *
  31. arg(n) {
  32.     char *p;
  33.     p = &gf->ga0;
  34.     while(--n>=0 && p->word!=0) p =+ p->word;
  35.     return(p->word!=0?p+2:p); 
  36. }
  37.  
  38. function(n) {
  39.     if(n==0) ;
  40.     else if(1<=n && n<=13) binop(n);
  41.     else {
  42.         switch(n) {
  43.         case 20: 
  44.             doif(); 
  45.             return;
  46.         case 21: 
  47.             define(); 
  48.             return;
  49.         case 22: 
  50.             copy(); 
  51.             return;
  52.         case 23: 
  53.             meta(); 
  54.             return;
  55.         case 24: 
  56.             size(); 
  57.             return;
  58.         case 25: 
  59.             substr(); 
  60.             return;
  61.         case 26: 
  62.         case 27: 
  63.             go(n); 
  64.             return;
  65.         case 28: 
  66.             remove(1); 
  67.             return;
  68.         case 29: 
  69.             dnl(); 
  70.             return;
  71.         case 32: 
  72.             quote(); 
  73.             return;
  74.         case 33: 
  75.             result(finddef(1)->dswitch); 
  76.             return;
  77.         case 34: 
  78.             list(); 
  79.             return;
  80.         case 35: 
  81.             traceflag = comp(arg(1),one); 
  82.             return;
  83.         }
  84.     } 
  85. }
  86.