#include "defs.h" ITEM Lchp; INT Luse; INT Lnum; INT Ldef; INT Lout; INT Lmax; L(src) REG STRING src[]; { INT pin; INT first=0; if(*src) { pin=geti(src[3]); if(Lout){ print(";\n"); Lout=0; } if(Ldef) { print(";\n"); Ldef=0; } /* chip type sig pin */ if(equstr(src[0], Lchp)==0) { TAG t; t=gettag(src[1], &TYPES); first++; if(Lmax && (Lmax!=Lnum-1)){ missing(src); } if(Luse) prs(");\n"); Luse=1; prs(src[1]); prs(": "); prs(src[0]); prs(",("); movstr(src[0], Lchp); Lnum=t->lev; Lmax=t->flg; } if(Lnum==0) { prs("),("); first++; Lnum++; } if(pin!=Lnum++) { Lnum=pin+1; missing(src); } if(first==0) prs(","); prs(src[2]); } else{ if(Luse) prs(");\n"); } brkout(); } Ltype(src) REG STRING src[]; { REG TAG tp; tp=gettag(src[0], &TYPES); tp->flg=atoi(src[1]); tp->lev=atoi(src[2]); } Ldefn(src) REG STRING src[]; { if(src) { switch(*src[0]) { case '<': if(Ldef==0) { print("INPUTS: "); } else{ print(","); } print("%s", src[1]); Ldef++; break; case '>': if(Ldef) { print(";\n"); Ldef=0; } if(Lout==0) { print("OUTPUTS: "); } else{ print(","); } print("%s", src[1]); Lout++; break; default: bad("bad parameter pin specification\n"); } } brkout(); } Lpin(src) STRING src[]; { TAG p, r, t; if(equstr(src[0],src[1])==0) errmsg(src[1], "signal and io pin have different names\n"); generate(src[1], &PINS); p=find(src[1], PINS); while(p){ print(".g "); print("%s ", src[2]); print("%s ", p->tc); print("%s\n", p->tc); t=gettag(src[1], &LSIG); /* t->val=gettag(src[0], &PINS); */ p=p->nxt; } } brkout() { if(charpos(standout)>=60) print("\n\t"); } missing(src) REG STRING src[]; { msg(src[0]); msg(" "); msg(src[1]); msg(" missing pin\n"); }