From 3fcad733a1099376c546e42681bea3dfb9d969ef Mon Sep 17 00:00:00 2001 From: Tom London Date: Mon, 6 Nov 1978 23:38:37 -0500 Subject: [PATCH] Bell 32V development Work on file usr/src/cmd/pcat.c Co-Authored-By: John Reiser Synthesized-from: 32v --- usr/src/cmd/pcat.c | 924 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 924 insertions(+) create mode 100644 usr/src/cmd/pcat.c diff --git a/usr/src/cmd/pcat.c b/usr/src/cmd/pcat.c new file mode 100644 index 0000000000..a6566c2545 --- /dev/null +++ b/usr/src/cmd/pcat.c @@ -0,0 +1,924 @@ +#include +#define X 0 +/* +C version of tcatsim +*/ + +#define OBSZ 512 +#define MAXY 3071 +#define US 037 +#define GS 035 +#define ESC 033 +#define FF 014 +#define SO 016 +#define SI 017 +#define DBL 0200 + +int pl = 11*144; +int mpy = 1; +int div = 1; +char *ap; +int ch; +int nonumb; +int psize = 10; +int dfact = 1; +int ibuf[259]; +char obuf[OBSZ]; +char *obufp = obuf; +int esc; +int escd; +int verd; +int esct; +int osize = 02; +int size = 02; +int rx; +int xx = 0; +int yy = MAXY+62+48; +int leadtot = -31; +int ohy = -1; +int ohx = -1; +int oxb = -1; +int oly = -1; +int olx = -1; +int tflag; +int railmag; +int lead; +int skip; +int pgskip; +int ksize = ';'; +int mcase; +int stab[] = {010,0,01,07,02,03,04,05,0211,06,0212,0213,0214,0215,0216,0217}; +int rtab[] = {6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, 26, 18}; +int ktab[] = {';',';',';',';',';',';',':',':','9','9','9','9','8','8','8','9'}; +int od = 1; +int first = 1; +int alpha; +int xxx; +extern int *drawtab[], *moretab[]; + +main(argc,argv) +int argc; +char **argv; +{ + register i, j; + extern ex(); + extern char asctab[]; + extern char spectab[]; + + openpl(); + space(0,0,4095,3071); + while((--argc > 0) && ((++argv)[0][0]=='-')){ + switch(argv[0][1]){ + case 'p': + ap = &argv[0][2]; + dfact = 72; + if(i = atoi())pl = i/3; + continue; + case 't': + tflag++; + continue; + case 's': + ap = &argv[0][2]; + dfact = 1; + pgskip = atoi(); + continue; + default: + dfact = 1; + ap = &argv[0][1]; + if(i = atoi())mpy = i; + if(i = atoi())div = i; + continue; + } + } + if(argc){ + if(fopen(argv[0], ibuf) < 0){ + prstr("Cannot open: "); + prstr(argv[0]); + prstr("\n"); + exit(1); + } + } + signal(SIGINT, ex); + while((i = getc(ibuf)) >= 0){ + if(!i)continue; + if(i & 0200){ + esc += (~i) & 0177; + continue; + } + if(esc){ + if(escd)esc = -esc; + esct += esc; + xx += (esc*mpy + rx)/div; + rx = (esc*mpy + rx)%div; + sendpt(); + esc = 0; + } + switch(i){ + case 0100: /*init*/ + escd = verd = mcase = railmag = xx = 0; + yy = MAXY + 48; + if(first){ + first = 0; + yy += 62; + } + leadtot = -31; + ohy = oxb = oly = ohx = olx = -1; + init(); + continue; + case 0101: /*lower rail*/ + railmag &= ~01; + continue; + case 0102: /*upper rail*/ + railmag |= 01; + continue; + case 0103: /*upper mag*/ + railmag |= 02; + continue; + case 0104: /*lower mag*/ + railmag &= ~02; + continue; + case 0105: /*lower case*/ + mcase = 0; + continue; + case 0106: /*upper case*/ + mcase = 0100; + continue; + case 0107: /*escape forward*/ + escd = 0; + continue; + case 0110: /*escape backward*/ + escd = 1; + continue; + case 0111: /*stop*/ + continue; + case 0112: /*lead forward*/ + verd = 0; + continue; + case 0113: /*undefined*/ + continue; + case 0114: /*lead backward*/ + verd = 1; + continue; + case 0115: /*undefined*/ + case 0116: + case 0117: + continue; + } + if((i & 0340) == 0140){ /*leading*/ + lead = (~i) & 037; + if(verd)lead = -lead; + if((leadtot += lead) > pl){ + leadtot = lead; + flusho(); + if(!tflag)kwait(); + yy = MAXY; + if(pgskip)--pgskip; + init(); + continue; + } + if(skip)continue; + if((yy -= (lead<<1)) < 0){ + skip++; + yy = 0; + }else sendpt(); + continue; + } + if((i & 0360) == 0120){ /*size change*/ + i &= 017; + for(j = 0; i != (stab[j] & 017); j++); + osize = size; + size = stab[j]; + psize = rtab[j]; + ksize = ktab[j]; + i = 0; + if(!(osize & DBL) && (size & DBL))i = -55; + else if((osize & DBL) && !(size & DBL))i = 55; + if(escd)i = -i; + esc += i; + continue; + } + if(i & 0300)continue; + i = (i & 077) | mcase; + if(railmag != 03)j = asctab[i]; + else j = spectab[i]; + if(alpha)sendpt(); + if (j== 0) { /* see if we can draw this character */ + trace( railmag == 03 ? drawtab[i] : moretab[i]); + continue; + }else if(j){ + oput(j); + alpha++; + } + } + ex(); +} + +# define SCL(x) (psize*x/10) +# define PT(x,y) xx-10+SCL(x), yy-20+SCL(y) +trace (p) + int *p; +{ +if (p==0) return; +while (*p) + { + switch (*p) + { + case 'l': +/* + line(xx-10+SCL(p[1]),yy-20+SCL(p[2]),xx-10+SCL(p[3]),yy-20+SCL(p[4])); + */ line(PT(p[1], p[2]), PT(p[3], p[4])); + p+=5; + break; + case 't': + move (xx+p[2], yy+p[3]); + label(p+1); + p+=4; + break; + case 'c': + circle(PT(p[1],p[2]), SCL(p[3])); + p+=4; + break; + case 'a': + arc (PT(p[1],p[2]), PT(p[3],p[4]), PT(p[5],p[6])); + p+=7; + break; + } + } +} + +init(){ + register i; + + erase(); + flusho(); + skip = 0; + sendpt(); +} +ex(){ + yy = MAXY; + xx = 0; + sendpt(); + closepl(); + exit(0); +} +kwait(){ + ; +} +oput(i) +char i; +{ + if(pgskip)return; + label(&i); +} +flusho(){ + ; +} +sendpt(){ + move(xx,yy); + alpha = 0; + return; +} +prstr(s) +char *s; +{ + register i; + + for(i=0;*s;i++)s++; + write(2,s-i,i); +} +atoi() +{ + register i, j, acc; + int field, digits, *dd, *tscale(); + + field = digits = acc = 0; +a1: + while(((j = (i = getch()) - '0') >= 0) && (j <= 9)){ + field++; + digits++; + acc = 10*acc + j; + } + if(i == '.'){ + field++; + digits = 0; + goto a1; + } + if(!(ch = i))ch = 'x'; + dd = tscale(acc); + acc = dd[0]; + if((field != digits) && (digits > 0)){ + j = 1; + while(digits--)j *= 10; + acc = ldiv(dd[1],dd[0],j); + } + nonumb = !field; + ch = 0; + return(acc); +} +int *tscale(n) +int n; +{ + register i, j; + static int aa[2]; + + switch(i = getch()){ + case 'u': + j = 1; + break; + case 'p': /*Points*/ + j = 6; + break; + case 'i': /*Inches*/ + j = 432; + break; + case 'c': /*Centimeters; should be 170.0787*/ + j = 170; + break; + case 'P': /*Picas*/ + j = 72; + break; + default: + j = dfact; + ch = i; + } + aa[0] = n * j; + aa[1] = hmul(n,j); + return(aa); +} +getch(){ + register i; + + if(ch){ + i = ch; + ch = 0; + return(i); + } + return(*ap++); +} +/* the way this program decides what to do is: + (1) If the character is on a standard font (0-2) + + (a) look in "asctab"; if an entry, print that character. + else + (b) look in "moretab"; if an entry, it points to a vector + description, which draw. + (2) If the character is on the special font (railmag=3) + (a) look in "spectab"; if an entry >0, + print that character. + (b) if a -1, that requests the apl font; not used. + (c) if zero, look in "drawtab"; if an entry, it pooints + to a vector description, which draw. + (3) Vector descriptions are calls to the "plot" type routines. + the possible routines are 'c' (circle), 'l' (line), 't' (label, + only one character used), and 'a' (arc). + */ +char asctab[128] = { + 0, /*blank*/ +'h', /*h*/ +'t', /*t*/ +'n', /*n*/ +'m', /*m*/ +'l', /*l*/ +'i', /*i*/ +'z', /*z*/ +'s', /*s*/ +'d', /*d*/ +'b', /*b*/ +'x', /*x*/ +'f', /*f*/ +'j', /*j*/ +'u', /*u*/ +'k', /*k*/ + 0, /*blank*/ +'p', /*p*/ +'-', /*_ 3/4 em dash*/ +';', /*;*/ + 0, /*blank*/ +'a', /*a*/ +'_', /*rule*/ +'c', /*c*/ +'`', /*` open*/ +'e', /*e*/ +'\'', /*' close*/ +'o', /*o*/ + 0, /*1/4*/ +'r', /*r*/ + 0, /*1/2*/ +'v', /*v*/ +'-', /*- hyphen*/ +'w', /*w*/ +'q', /*q*/ +'/', /*/*/ +'.', /*.*/ +'g', /*g*/ + 0, /*3/4*/ +',', /*,*/ +'&', /*&*/ +'y', /*y*/ + 0, /*blank*/ +'%', /*%*/ + 0, /*blank*/ +'Q', /*Q*/ +'T', /*T*/ +'O', /*O*/ +'H', /*H*/ +'N', /*N*/ +'M', /*M*/ +'L', /*L*/ +'R', /*R*/ +'G', /*G*/ +'I', /*I*/ +'P', /*P*/ +'C', /*C*/ +'V', /*V*/ +'E', /*E*/ +'Z', /*Z*/ +'D', /*D*/ +'B', /*B*/ +'S', /*S*/ +'Y', /*Y*/ + 0, /*blank*/ +'F', /*F*/ +'X', /*X*/ +'A', /*A*/ +'W', /*W*/ +'J', /*J*/ +'U', /*U*/ +'K', /*K*/ +'0', /*0*/ +'1', /*1*/ +'2', /*2*/ +'3', /*3*/ +'4', /*4*/ +'5', /*5*/ +'6', /*6*/ +'7', /*7*/ +'8', /*8*/ +'9', /*9*/ +'*', /***/ +'-', /*minus*/ + 0, /*fi*/ + 0, /*fl*/ + 0, /*ff*/ + 0, /*cent mark*/ + 0, /*ffl*/ + 0, /* ffi */ +'(', /*(*/ +')', /*)*/ +'[', /*[*/ +']', /*]*/ + 0, /*degree*/ + 0, /*dagger*/ +'=', /*=*/ + 0, /*registered*/ +':', /*:*/ +'+', /*+*/ + 0, /*blank*/ +'!', /*!*/ + 0, /*bullet*/ +'?', /*?*/ +'\'', /*foot mark*/ +'|', /*|*/ + 0, /*blank*/ + 0, /*copyright*/ + 0, /*square*/ +'$' }; /*$*/ + +char spectab[128] = { + 0, /*blank*/ + 0, /*psi*/ + 0, /*theta*/ + 0, /*nu*/ + 0, /*mu*/ + 0, /*lambda*/ + 0, /*iota*/ + 0, /*zeta*/ + 0, /*sigma*/ + 0, /*delta*/ + 0, /*beta*/ + 0, /*xi*/ + 0, /*eta*/ + 0, /*phi*/ + 'u', /*upsilon*/ + 0, /*kappa*/ + 0, /*blank*/ + 0, /*pi*/ + '@', /*at sign @*/ + 0, /*down arrow*/ + 0, /*blank*/ + 0, /*alpha*/ +'|', /*or*/ + 0, /*chi*/ +'"', /*"*/ + 0, /*epsilon*/ + '=', /*equals*/ + 'o', /*omicron*/ + 0, /*left arrow*/ + 0, /*rho*/ + 0, /*up arrow*/ + 0, /*tau*/ +'_', /*underrule*/ +'\\', /*\*/ + 0, /*Psi*/ + 0, /*bell system sign*/ + 0, /*infinity*/ + 0, /*gamma*/ + 0, /*improper superset*/ + 0, /*proportional to*/ + 0, /*right hand*/ + 0, /*omega*/ + 0, /*blank*/ + 0, /*gradient*/ + 0, /*blank*/ + 0, /*Phi*/ + 0, /*Theta*/ + 0, /*Omega*/ + 0, /*cup (union)*/ + 0, /*root en*/ + 0, /*terminal sigma*/ + 0, /*Lambda*/ + '-', /*some horizontal line*/ + 0, /*Gamma*/ + 0, /*integral sign*/ + 0, /*Pi*/ + 0, /*subset of*/ + 0, /*superset of*/ + 0, /*approximates*/ + 0, /*partial derivative*/ + 0, /*Delta*/ + 0, /*square root*/ + 0, /*Sigma*/ + 0, /*approx =*/ + 0, /*blank*/ +'>', /*>*/ + 0, /*Xi*/ +'<', /*<*/ +'/', /*slash (longer)*/ + 0, /*cap (intersection)*/ + 'Y', /*Upsilon*/ + 0, /*not*/ +'|', /*right ceiling (rt of ")*/ +'|', /*left top (of big curly)*/ +'|', /*bold vertical*/ +'|', /*left center of big curly bracket*/ +'|', /*left bottom*/ +'|', /*right top*/ +'|', /*right center of big curly bracket*/ +'|', /*right bot*/ +'|', /*right floor (rb of ")*/ +'|', /*left floor (left bot of big sq bract)*/ +'|', /*left ceiling (lt of ")*/ +'x', /*multiply*/ + 0, /*divide*/ + 0, /*plus-minus*/ + 0, /*<=*/ + 0, /*>=*/ + 0, /*identically equal*/ + 0, /*not equal*/ +'{', /*{*/ +'}', /*}*/ +'\'', /*' acute accent*/ +'`', /*` grave accent*/ +'^', /*^*/ + '#', /*sharp*/ + 0, /*left hand*/ + 0, /*member of*/ +'~', /*~*/ + 0, /*empty set*/ + 0, /*blank*/ + 0, /*dbl dagger*/ +'|', /*box rule*/ + '*', /*telephone asterisk?*/ + 0, /*improper subset*/ + 0, /*circle*/ + 0, /*blank*/ + '+', /*eqn plus sign*/ + 0, /*right arrow*/ + 0 }; /*section mark*/ +# define STOP 0 +int dnot[] = { 'l', 0, 15, 25, 15, 'l', 25, 15, 25, 5, STOP}; +int dlambda[] = {'l', 0, 40, 6, 40, 'l', 6, 40, 30, 0, 'l', 6, 0, 18, 20, STOP}; +int dSigma[] = {'l', 0, 0, 30, 0, 'l', 0, 40, 30, 40, 'l', 0, 0, 10, 20, 'l', 10, 20, 0, 40, STOP}; +int dsquare[] = {'l', 0, 0, 30, 0, 'l', 0, 0, 0, 30, 'l', 0, 30, 30, 30, 'l', 30, 0, 30, 30, STOP}; +int dDelta[] = {'l', 0,0, 30, 0, 'l', 0, 0, 15, 40, 'l', 15,40, 30, 0, STOP}; +int dintsign[] = { 'a', 25,30, 30,32, 20,32, 'l', 20, 32, 10, 8, 'a',5, 10, 0, 8, 10, 8, STOP}; +int dtheta[] = {'a', 25, 15, 10, 30, 10, 0, 'a', -5, 15, 10, 0, 10, 30, 'l', 5, 15, 12, 15, STOP}; +int dcopyr[] = {'c', 20, 20, 20, 't', 'c', 7,3, STOP}; +int dregist[] = {'c', 20, 20, 20, 't', 'R', 7,3, STOP}; +int dpi[] = { 'l', 0, 25, 30, 25, 'l', 5, 0, 8, 25, 'l', 17, 0, 20, 25, STOP}; +int dPi[] = { 'l', 0, 40, 30, 40, 'l', 5, 0, 5, 40, 'l', 25, 0, 25, 40, STOP}; +int dsqroot[] = { 'l', 0,10,5,10, 'l', 8, 10, 15, 0, 'l', 15, 0, 30, 40, STOP}; +int dgradient[] = { 'l', 0,40, 30, 40, 'l', 0, 40, 15, 0, 'l', 15, 0, 30, 40, STOP}; +int dbeta[] = {'t', 'B', 0, 5, 'l', 0, 20, 0, -10, STOP}; +int ddagger[] = {'l', 0, 30, 20, 30, 'l', 10, 0, 10, 40, STOP}; +int dpsi[] = { 'a', 15,25, 0, 27, 30, 23, 'l', 0, 0, 30, 40, STOP}; +int dmu[] = { 't', 'u', 0,5, 'l', 0,10, 0, -10, STOP}; +int dnu[] = { 'l',0,0,0,30, 'l', 0,0,20,30, STOP}; +int diota[] = { 'l', 0, 0, 4, 24, 'l', 6, 32, 6, 36, 'l', 0, 0, 5, 0, STOP}; +int dsigma[] = { 'c', 15,15,15, 'l', 15, 30, 35, 30, STOP}; +int ddelta[] = { 'c', 10, 10, 10, 'a', 16, 28, 18, 37, 14, 19, STOP}; +int depsilon[] = { 'a', 15, 15, 15, 30, 15, 0, 'l', 0, 15, 15, 15, STOP}; +int dchi[] = { 'l', 0, 30, 4, 30, 'l', 4, 30, 16, 0, 'l', 16, 0, 20, 0, 'l', 0, 0, 20, 30, STOP}; +int dtau[] = { 'l', 0, 30, 30, 30, 'l', 10, 0, 15, 30 , 'l', 10, 0, 15, 0, STOP}; +int dlesseq[] = { 'l', 0, 20, 30, 30, 'l', 0, 20, 30, 10, 'l', 0, 15, 30, 5, STOP}; +int dgreateq[] = { 'l', 0, 30, 30, 20, 'l', 0, 10, 30, 20, 'l', 0, 5, 30, 15, STOP}; +int dinfinity[] = { 'c', 10, 10, 10, 'c', 30 , 10, 10, STOP}; +int dalpha[] = { 'c', 15, 15, 15, 'a', 52, 15, 35, 30, 35, 0, STOP}; +int dphi[] = { 'c', 10, 15, 10, 'l', 5, 0, 15, 30, STOP}; +int dgamma[] = { 'l', 10, -10, 30, 30, 'a', 10, 15, 20, 10, 0, 20, STOP}; +int dkappa[] = { 'l', 0, 0, 6, 25, 'l', 3, 12, 20, 25, 'l', 6, 15, 20, 0, STOP}; +int drho[] = {'c', 15, 15, 10, 'l', 0, -5, 5, 20, STOP}; +int dGamma[] = {'l', 0, 0, 0, 35, 'l', 0, 35, 25, 35, 'l', 25, 35, 25, 25, STOP}; +int ddownar[]= {'l', 10, 0, 10, 30, 'l', 0, 10, 10, 0, 'l', 10, 0, 20, 10, STOP}; +int dupar[] = { 'l', 10, 0, 10, 30, 'l', 0, 20, 10, 30, 'l', 10, 30, 20, 20,STOP}; +int dleftar[] = { 'l', 0, 15, 25, 15, 'l', 10, 5, 0, 15, 'l', 10, 25, 0, 15, STOP}; +int drightar[] = { 'l', 0, 15, 25, 15, 'l', 15, 5, 25, 15, 'l', 15, 25, 25, 15, STOP}; +int ddivide[]= { 'l', 0, 15, 25, 15, 'l', 12, 20, 14, 20, 'l', 12, 10, 14, 10, STOP}; +int dcap[] = { 'a', 15, 10, 30, 10, 0, 10, 'l', 0, 0, 0, 10, 'l', 30, 0, 30, 10, STOP}; +int dcup[] = {'a', 15, 15, 0, 15, 30, 15, 'l', 0, 15, 0, 25, 'l', 30, 15, 30, 25, STOP}; +int dsubset[] = {'l', 0, 0, 10, 0, 'l', 0, 30, 10, 30, 'a', 10, 15, 10, 0, 10, 30,STOP}; +int dsupset[] = {'a', 15, 15, 15, 30, 15, 0, 'l', 15, 30, 25, 30, 'l', 15, 0, 25, 0, STOP}; +int dimpsubset[] = {'l', 0, 10, 10, 10, 'l', 0, 40, 10, 40, 'a', 10, 25, 10, 10, 10, 40, 'l', 0, 0, 30, 0, STOP}; +int dimpsupset[] = {'a', 15, 25, 15, 40, 15, 10, 'l', 15, 40, 25, 40, 'l', 15, 10, 25, 10, 'l', 0, 0, 30, 0, STOP}; +int dxi[] = {'l', 0, 30, 25, 30, 'a', 5, 25, 5, 30, 5, 20, 'l', 5, 20, 25, 20, 'a', 5, 15, 5, 20, 5, 10, 'l', 5, 10, 20, 10, 'a', 20, 5, 20, 0, 20, 10, STOP}; +int deta[] = {'a', 5,20,10,20,0,20, 'l', 10, 25, 10, 10, 'a', 15, 20, 20, 20, 10, 20, 'l', 20, 20, 20, 0, STOP}; +int dzeta[] = {'l', 0, 30, 25, 30, 'a', 20, 20, 20, 30, 20, 10, 'a', 20, 5, 20, 0, 20, 10, STOP}; +int dPsi[] = {'l', 0, 0, 30, 0, 'l', 0, 35, 30, 35, 'l', 15, 0, 15, 35, 'a', 15, 25, 0, 25, 30, 25, STOP}; +int dPhi[] = { 'l', 0, 0, 30, 0, 'l', 0, 40, 30, 40, 'l', 15, 0, 15, 40, 'c', 15, 20, 10, STOP}; +int domega[] = { 'a', 8, 18, 8, 26, 16, 18, 'a', 24, 18, 16, 18, 24, 26, STOP}; +int dtsigma[] = {'a', 10, 20, 17, 27, 10, 10, 'a', 10, 5, 10, 0, 10, 10, STOP}; +int dpartial[] = { 'c', 10, 10, 10, 'a', 0, 20, 10, 0, 0, 40, STOP}; +int dprop[] = {'c', 10,10,10, 'a', 30, 10, 30, 20, 30, 0, STOP}; +int dTheta[]= { 'c', 15, 15, 15, 'l', 5,15,25,15, 'l', 5, 13, 5, 17, 'l', 25, 13, 25, 17, STOP}; +int dXi[] = { 'l', 0, 40 , 30, 40, 'l' , 0, 0, 30, 0, 'l', 7, 20, 23, 20, STOP}; +int dLambda[] = { 'l', 0, 0, 15, 40, 'l', 15, 40, 30, 0, STOP}; +int drighth[]= { 'l', 0,0,20,0, 'l', 0, 10, 20, 10, 'l',0,20,20,20, 'l',0,30,35,30, 'l',0,40,35,40, + 'a',20,5,20,0,20,10, 'a', 20,15,20,10,20,20, 'a',20,25,20,20,20,30, 'a',35,35,35,30,35,30,STOP}; +int dlefth[] = {'l', 20, 0, 40,0, 'l',20,10,40,10, 'l',20,20,40,20, 'l',5,30,40,30, 'l',5,40,40,40, + 'a', 20, 5, 20,10,20,0, 'a', 20,15,20,20,20,10, 'a', 20, 25, 20,30,20,20, 'a', 5,35,5,40,5,30, STOP}; +int dcircle[] = {'c',15,15,15,STOP}; +int dapprox[] = {'a', 7, 0, 14, 15, 0, 15, 'a', 21, 30, 14,15,28,15, STOP}; +int dappreq[] = {'a', 7, 0, 14, 15, 0, 15, 'a', 21, 30, 14,15,28,15, 'l', 0, 0, 28, 0, STOP}; +int dOmega[] = {'a', 15,25,30,25,0,25, 'l',10,0,0,25, 'l',20,0,30,25, 'l',0,0,10,0, 'l',20,0,30,0, STOP}; +int dplmn[] = {'l', 0, 0, 30, 0, 'l', 0, 25, 30, 25, 'l', 15,10, 15, 40, STOP}; +int dmultiply[] = {'l',0,0,30,30, 'l', 0,30,30,0, STOP}; +int dident[]= {'l', 0,0,30,0, 'l',0,10,30,10, 'l',0,20,30,20, STOP}; +int dnoteq[] = {'l',0,10,30,10, 'l',0,25,30,25, 'l', 0,0,30,40, STOP}; +int ddbldag[] = {'l',10,0,10,30, 'l',0,5,20,5, 'l',0,25,20,25, STOP}; +int dbullet[] = { 'c',10,10,10, 'c',10,10,8, 'c', 10,10,6, 'c', 10, 10, 4, 'c', 10, 10, 2, STOP}; +int drooten[] = {'l', 0,30,25,30, STOP}; +int dempty[] = { 'c', 15, 15, 15, 'l', 0, 0, 30, 30, STOP}; +int dsection [] = {'a', 7,7, 7, 0, 7, 14, 'c', 7,21, 7, 'a', 7, 35, 7, 42, 7, 28, STOP}; +int dff[] = { 't', 'f', 0, 0, 't', 'f', 15, 0, STOP}; +int dfi[] = { 't', 'f', 0, 0, 't', 'i', 15, 0, STOP}; +int dfl[] = { 't', 'f', 0, 0, 't', 'l', 15, 0, STOP}; +int dffi[] = { 't', 'f', 0, 0, 't', 'f', 15, 0, 't', 'i', 30, 0, STOP}; +int dffl[] = { 't', 'f', 0, 0, 't', 'f', 15, 0, 't', 'l', 30, 0, STOP}; +int dcent[] = {'a', 15, 20, 25, 17, 25, 13, 'l', 15, 0, 15, 35, STOP}; +int ddegree[] = {'t', 'o', 0, 20, STOP}; +int dhalf[] = {'t', '1', 0, 20, 'l', 0, 0, 30, 40, 't', '2', 15, 0, STOP}; +int dquarter[] = {'t', '1', 0, 20, 'l', 0, 0, 30, 40, 't', '4', 15, 0, STOP}; +int dthreequarter[] = {'t', '3', 0, 20, 'l', 0, 0, 30, 40, 't', '4', 15, 0, STOP}; +int dbell[] = {'l', 0, 10, 40, 10, 'a', 0, 15, 0, 10, 5, 15, 'a', 40, 15, 35, 15, 40, 10, +'a', 20, 15, 35, 15, 15, 15, 'l', 20, 35, 20, 40, 'l', 20, 0, 20, 10, 'c', 20, 20, 22, STOP}; +int *drawtab[128] = { + 0, /*blank*/ + dpsi, /*psi*/ + dtheta, /*theta*/ + dnu, /*nu*/ + dmu, /*mu*/ + dlambda, /*lambda*/ + diota, /*iota*/ + dzeta, /*zeta*/ + dsigma, /*sigma*/ + ddelta, /*delta*/ + dbeta, /*beta*/ + dxi, /*xi*/ + deta, /*eta*/ + dphi, /*phi*/ + 0, /*upsilon ASCII*/ + dkappa, /*kappa*/ + 0, /*blank*/ + dpi, /*pi*/ + 0, /* at sign (ASCII) */ + ddownar, /*down arrow*/ + 0, /*blank*/ + dalpha, /*alpha*/ + 0, /*or (ASCII)*/ + dchi, /*chi*/ + 0, /*" (ASCII)*/ + depsilon, /*epsilon*/ + 0, /*= (ASCII)*/ + 0, /*omicron (ASCII)*/ + dleftar, /*left arrow*/ + drho, /*rho*/ + dupar, /*up arrow*/ + dtau, /*tau*/ + 0, /*underrule (ASCII)*/ + 0, /*\ (ASCII)*/ + dPsi, /*Psi*/ + dbell, /*bell system sign*/ + dinfinity, /*infinity*/ + dgamma, /*gamma*/ + dimpsupset, /*improper superset*/ + dprop, /*proportional to*/ + drighth, /*right hand*/ + domega, /*omega*/ + 0, /*blank*/ + dgradient, /*gradient*/ + 0, /*blank*/ + dPhi, /*Phi*/ + dTheta, /*Theta*/ + dOmega, /*Omega */ + dcup, /*cup (union)*/ + drooten, /*root en*/ + dtsigma, /*terminal sigma*/ + dLambda, /*Lambda*/ + 0, /* some kind of horizontal line (ASCII) */ + dGamma, /*Gamma*/ + dintsign, /*integral sign*/ + dPi, /*Pi*/ + dsubset, /*subset of*/ + dsupset, /*superset of*/ + dapprox, /*approximates*/ + dpartial, /*partial derivative*/ + dDelta, /*Delta*/ + dsqroot, /*square root*/ + dSigma, /*Sigma*/ + dappreq, /* approx equal */ + 0, /*blank*/ + 0, /*> (ASCII)*/ + dXi, /*Xi*/ + 0, /*< (ASCII)*/ + 0, /*slash (longer)*/ + dcap, /*cap (intersection)*/ + 0, /*Upsilon (ASCII Y)*/ + dnot, /*not*/ + 0, /*right ceiling (rt of ")*/ + 0, /*left top (of big curly)*/ + 0, /*bold vertical*/ + 0, /*left center of big curly bracket*/ + 0, /*left bottom*/ + 0, /*right top*/ + 0, /*right center of big curly bracket*/ + 0, /*right bot*/ + 0, /*right floor (rb of ")*/ + 0, /*left floor (left bot of big sq bract)*/ + 0, /*left ceiling (lt of ")*/ + dmultiply, /*multiply*/ + ddivide, /*divide*/ + dplmn, /*plus-minus*/ + dlesseq, /*<=*/ + dgreateq, /*>=*/ + dident, /*identically equal*/ + dnoteq, /*not equal*/ + 0, /*{ (ASCII)*/ + 0, /*} (ASCII)*/ + 0, /*' acute accent (ASCII)*/ + 0, /*` grave accent (ASCII)*/ + 0, /*^ (ASCII)*/ + 0, /* sharp (ASCII)*/ + dlefth, /*left hand*/ + depsilon, /*member of*/ + 0, /* ~ ASCII*/ + dempty, /*empty set*/ + 0, /*blank*/ + ddbldag, /*dbl dagger*/ + 0, /*box rule ASCII*/ + 0, /*asterisk (ASCII)*/ + dimpsubset, /*improper subset*/ + dcircle, /*circle*/ + 0, /*blank*/ + 0, /*plus (ASCII)*/ + drightar, /*right arrow*/ + dsection }; /*section mark*/ +int *moretab[128] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + dquarter, /* one quarter 1/4 */ + 0, + dhalf, /* one half 1/2 */ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + dthreequarter, /* 3 /4 */ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + dfi, /* fi */ + dfl, /* fl */ + dff, /* ff */ + dcent, /* cent mark */ + dffl, /* ffl */ + dffi, /* ffi */ + 0, + 0, + 0, + 0, + 0, + ddagger, /* dagger */ + 0, + dregist, /* registered */ + 0, + 0, + 0, + 0, + dbullet, /* bullet */ + 0, + 0, + 0, + 0, + dcopyr, /* copyright */ + dsquare, /* square */ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }; -- 2.20.1