# #include "m6.h" define() { remove(1); newdef(decbin(3)); setdef(arg(1),arg(2)); } newdef(n) { pushdef(); de = &df[df->dtext = dend]; if((df->dswitch = n)<0) trashflag++; } setdef(s1,s2) { copydef(s1); df->dtext = de -df; copydef(s2); } copydef(s) char *s; { while(*de++ = *s++) if(de>dmax) diag("Definition table overflow"); } char * arg(n) { char *p; p = &gf->ga0; while(--n>=0 && p->word!=0) p =+ p->word; return(p->word!=0?p+2:p); } function(n) { if(n==0) ; else if(1<=n && n<=13) binop(n); else { switch(n) { case 20: doif(); return; case 21: define(); return; case 22: copy(); return; case 23: meta(); return; case 24: size(); return; case 25: substr(); return; case 26: case 27: go(n); return; case 28: remove(1); return; case 29: dnl(); return; case 32: quote(); return; case 33: result(finddef(1)->dswitch); return; case 34: list(); return; case 35: traceflag = comp(arg(1),one); return; } } }