#include "defs.h" /* * scan all pins and execute * fn(px, py, s) INT px, py; char *s; * where px and py are pin coords * and s is string denoting pin type */ /* * display all pins */ pinscan(fn) INT (*fn)(); { REG INT i; soklist(fn); iolist(fn); for(i=0; i<=vgnum; i++) { STRING s = "Sx"; REG PIN pp; s[1] = i+'0'; for(pp=vgpins[i]; ppx, pp->y, s); } } /* list pins for sockets */ LOC VOID soklist(fn) INT (*fn)(); { REG SKT sp; INT sx, sy; REG CHP kp; REG PIN pp; INT pinno; scanboard(sp) { if ((kp = sp->pck) == 0) continue; sx = sp->x; sy = sp->y; pinno = 0; for (pp = kp->pins; pp < &kp->pins[kp->siz]; pp++) { if (pinno++ == 0) (*fn)(sx+pp->x, sy+pp->y, "x"); (*fn)(sx+pp->x, sy+pp->y, "o"); } } } /* list I/O pins */ LOC VOID iolist(fn) INT (*fn)(); { REG CHP cp; REG PIN pp; Lseek(file, limit+HDRSIZ, 0); scansym(symbol) { if (symbol->type != IOC) continue; cp = chp(symbol->value.v_adr+fdelta); for (pp = cp->pins; pp < &cp->pins[cp->siz]; pp++) { (*fn)(pp->x, pp->y, "o"); } } }