1*7080Srrh #ifndef lint 2*7080Srrh static char sccsid[] = "@(#)t6.c 4.1 06/07/82"; 3*7080Srrh #endif lint 4*7080Srrh 5*7080Srrh #include "tdef.h" 6*7080Srrh extern 7*7080Srrh #include "d.h" 8*7080Srrh extern 9*7080Srrh #include "v.h" 10*7080Srrh 11*7080Srrh /* 12*7080Srrh troff6.c 13*7080Srrh 14*7080Srrh width functions, sizes and fonts 15*7080Srrh */ 16*7080Srrh 17*7080Srrh extern int inchar[LNSIZE], *pinchar; /* XXX */ 18*7080Srrh extern int eschar; 19*7080Srrh extern int widthp; 20*7080Srrh extern int ohc; 21*7080Srrh extern int xpts; 22*7080Srrh extern int xfont; 23*7080Srrh extern int code; 24*7080Srrh extern int smnt; 25*7080Srrh extern int setwdf; 26*7080Srrh extern int cs; 27*7080Srrh extern int ccs; 28*7080Srrh extern int spacesz; 29*7080Srrh extern char trtab[]; 30*7080Srrh extern int xbitf; 31*7080Srrh extern int mfont; 32*7080Srrh extern int mpts; 33*7080Srrh extern int pfont; 34*7080Srrh extern int ppts; 35*7080Srrh extern int oldbits; 36*7080Srrh extern int chbits; 37*7080Srrh extern int spbits; 38*7080Srrh extern int nonumb; 39*7080Srrh extern int noscale; 40*7080Srrh extern int font; 41*7080Srrh extern int font1; 42*7080Srrh extern int pts; 43*7080Srrh extern int pts1; 44*7080Srrh extern int apts; 45*7080Srrh extern int apts1; 46*7080Srrh extern int sps; 47*7080Srrh extern int nlflg; 48*7080Srrh extern int nform; 49*7080Srrh extern int dfact; 50*7080Srrh extern int lss; 51*7080Srrh extern int lss1; 52*7080Srrh extern int vflag; 53*7080Srrh extern int ch0; 54*7080Srrh extern int lg; 55*7080Srrh char fontfile[] = "/usr/lib/font/ftXX"; 56*7080Srrh int ffi = 16; 57*7080Srrh extern int bd; 58*7080Srrh extern int level; 59*7080Srrh extern int ch; 60*7080Srrh extern int res; 61*7080Srrh extern int ptid; 62*7080Srrh extern char W1[],W2[],W3[],W4[]; 63*7080Srrh extern int xxx; 64*7080Srrh int trflg; 65*7080Srrh char *fontab[] = {W1,W2,W3,W4}; 66*7080Srrh int fontlab[] = {'R','I','B','S',0}; 67*7080Srrh char pstab[] = {6,7,8,9,10,11,12,14,16,18,20,22,24,28,36,0}; 68*7080Srrh char psctab[] = {010,000,001,007,002,003,004,005,0211,006, 69*7080Srrh 0212,0213,0214,0215,0216,0}; 70*7080Srrh int cstab[4], ccstab[4]; 71*7080Srrh int bdtab[4]; 72*7080Srrh int sbold = 0; 73*7080Srrh int spsz = 0; 74*7080Srrh struct fz { 75*7080Srrh char sign; 76*7080Srrh char size; 77*7080Srrh int inc; 78*7080Srrh } fz[4]; 79*7080Srrh 80*7080Srrh width(c) 81*7080Srrh int c; 82*7080Srrh { 83*7080Srrh register i,j,k; 84*7080Srrh 85*7080Srrh j = c; 86*7080Srrh k = 0; 87*7080Srrh if(j & MOT){ 88*7080Srrh if(j & VMOT)goto rtn; 89*7080Srrh k = j & ~MOTV; 90*7080Srrh if(j & NMOT)k = -k; 91*7080Srrh goto rtn; 92*7080Srrh } 93*7080Srrh if((i = (j & CMASK)) == 010){ 94*7080Srrh k = -widthp; 95*7080Srrh goto rtn; 96*7080Srrh } 97*7080Srrh if(i == PRESC)i = eschar; 98*7080Srrh if((i == ohc) || 99*7080Srrh (i >= 0370))goto rtn; 100*7080Srrh if((j>>BYTE) == oldbits){ 101*7080Srrh xfont = pfont; 102*7080Srrh xpts = ppts; 103*7080Srrh }else xbits(j); 104*7080Srrh if(j & ZBIT)goto rtn; 105*7080Srrh if(!trflg)i = trtab[i] & BMASK; 106*7080Srrh if((i -= 32) < 0)goto rtn; 107*7080Srrh k = getcw(i); 108*7080Srrh if(bd)k += bd - 1; 109*7080Srrh if(cs)k = cs; 110*7080Srrh widthp = k; 111*7080Srrh rtn: 112*7080Srrh xbitf = trflg = 0; 113*7080Srrh return(k); 114*7080Srrh } 115*7080Srrh getcw(i) 116*7080Srrh int i; 117*7080Srrh { 118*7080Srrh register j,k; 119*7080Srrh register char *p; 120*7080Srrh int x; 121*7080Srrh extern char codetab[]; 122*7080Srrh 123*7080Srrh bd = 0; 124*7080Srrh if((code = codetab[i]) & 0200){ 125*7080Srrh if(smnt){ 126*7080Srrh p = fontab[smnt-1]; 127*7080Srrh if(xfont == (sbold-1))bd = bdtab[smnt-1]; 128*7080Srrh goto g0; 129*7080Srrh } 130*7080Srrh code = 0; 131*7080Srrh k = 36; 132*7080Srrh goto g1; 133*7080Srrh } 134*7080Srrh p = fontab[xfont]; 135*7080Srrh g0: 136*7080Srrh if(!i)k = spacesz; 137*7080Srrh else k = *(p + i) & BMASK; 138*7080Srrh if(setwdf)v.ct |= ((k>>6) & 3); 139*7080Srrh g1: 140*7080Srrh k = (j = (k&077)*(xpts&077))/6; 141*7080Srrh if((j%6) >= 3)k++; 142*7080Srrh if(cs = cstab[xfont]){ 143*7080Srrh if(ccs = ccstab[xfont])x = ccs; else x = xpts; 144*7080Srrh cs = (j = (cs&077)*(x&077))/6; 145*7080Srrh if((j%6) >= 3)cs++; 146*7080Srrh } 147*7080Srrh if(!bd)bd = bdtab[xfont]; 148*7080Srrh return(k); 149*7080Srrh } 150*7080Srrh xbits(i) 151*7080Srrh int i; 152*7080Srrh { 153*7080Srrh register j, k; 154*7080Srrh 155*7080Srrh /* 156*7080Srrh if((j = i >> BYTE) == oldbits){ 157*7080Srrh xfont = pfont; 158*7080Srrh xpts = ppts; 159*7080Srrh goto rtn; 160*7080Srrh } 161*7080Srrh */ 162*7080Srrh j = i >> BYTE; 163*7080Srrh xfont = (j>>1) & 03; 164*7080Srrh if(k = (j>>3) & 017){ 165*7080Srrh xpts = pstab[--k]; 166*7080Srrh if(psctab[k] < 0)xpts |= DBL; 167*7080Srrh oldbits = j; 168*7080Srrh pfont = xfont; 169*7080Srrh ppts = xpts; 170*7080Srrh goto rtn; 171*7080Srrh } 172*7080Srrh switch(xbitf){ 173*7080Srrh case 0: 174*7080Srrh xfont = font; 175*7080Srrh xpts = pts; 176*7080Srrh break; 177*7080Srrh case 1: 178*7080Srrh xfont = pfont; 179*7080Srrh xpts = ppts; 180*7080Srrh break; 181*7080Srrh case 2: 182*7080Srrh xfont = mfont; 183*7080Srrh xpts = mpts; 184*7080Srrh } 185*7080Srrh rtn: 186*7080Srrh xbitf = 0; 187*7080Srrh } 188*7080Srrh setch(){ 189*7080Srrh register i,*j,k; 190*7080Srrh extern int chtab[]; 191*7080Srrh 192*7080Srrh if((i = getrq()) == 0)return(0); 193*7080Srrh for(j=chtab;*j != i;j++)if(*(j++) == 0)return(0); 194*7080Srrh k = *(++j) | chbits; 195*7080Srrh /* 196*7080Srrh if((i & CMASK) == '*'){ 197*7080Srrh if(((i = find('R',fontlab)) < 0) && 198*7080Srrh ((i = find('G',fontlab)) < 0)) 199*7080Srrh return(k); 200*7080Srrh else return((k & ~(03<<(BYTE+1))) | (i<<(BYTE+1))); 201*7080Srrh } 202*7080Srrh */ 203*7080Srrh return(k); 204*7080Srrh } 205*7080Srrh find(i,j) 206*7080Srrh int i,j[]; 207*7080Srrh { 208*7080Srrh register k; 209*7080Srrh 210*7080Srrh if(((k = i-'0') >= 1) && (k <= 4) && (k != smnt))return(--k); 211*7080Srrh for(k=0; j[k] != i; k++)if(j[k] == 0)return(-1); 212*7080Srrh return(k); 213*7080Srrh } 214*7080Srrh casefz(){ 215*7080Srrh register i, j, k; 216*7080Srrh int savinc; 217*7080Srrh 218*7080Srrh k = 0; 219*7080Srrh fz0: 220*7080Srrh if(skip() || !(i = getrq()) || 221*7080Srrh ((j = find(i,fontlab)) == -1)){ 222*7080Srrh if(k)goto fz1; 223*7080Srrh else return; 224*7080Srrh } 225*7080Srrh if(j == (smnt-1)){ 226*7080Srrh k = smnt; 227*7080Srrh goto fz0; 228*7080Srrh } 229*7080Srrh if(k){ 230*7080Srrh spsz = j + 1; 231*7080Srrh j = k -1; 232*7080Srrh } 233*7080Srrh fz1: 234*7080Srrh if((j==font) && fz[j].inc)savinc = fz[j].inc; 235*7080Srrh else savinc = 0; 236*7080Srrh fz[j].inc = fz[j].sign = fz[j].size = 0; 237*7080Srrh if(skip()){ 238*7080Srrh if(k)spsz = 0; 239*7080Srrh goto fz2; 240*7080Srrh } 241*7080Srrh if(((i=((k=getch()) & CMASK)) == '+') || (i == '-'))fz[j].sign = i; 242*7080Srrh else{ 243*7080Srrh fz[j].sign = 0; 244*7080Srrh ch = k; 245*7080Srrh } 246*7080Srrh noscale++; 247*7080Srrh fz[j].size = atoi(); 248*7080Srrh noscale = 0; 249*7080Srrh fz2: 250*7080Srrh if(j==font)casps1(apts + savinc); 251*7080Srrh else if(j == smnt-1)mchbits(); 252*7080Srrh } 253*7080Srrh caseps(){ 254*7080Srrh register i; 255*7080Srrh 256*7080Srrh if(skip())i = apts1; 257*7080Srrh else{ 258*7080Srrh noscale++; 259*7080Srrh i = inumb(&apts); 260*7080Srrh noscale = 0; 261*7080Srrh if(nonumb)return; 262*7080Srrh } 263*7080Srrh casps1(i); 264*7080Srrh } 265*7080Srrh casps1(i) 266*7080Srrh int i; 267*7080Srrh { 268*7080Srrh if(i <= 0)return; 269*7080Srrh if(fz[font].size){ 270*7080Srrh i = getfz(font, i); 271*7080Srrh } 272*7080Srrh apts1 = apts; 273*7080Srrh apts = i; 274*7080Srrh pts1 = pts; 275*7080Srrh pts = findps(i & 077); 276*7080Srrh mchbits(); 277*7080Srrh } 278*7080Srrh findps(i) 279*7080Srrh int i; 280*7080Srrh { 281*7080Srrh register j, k; 282*7080Srrh 283*7080Srrh for(j=0; i > (k = pstab[j]);j++)if(!k){k=pstab[--j];break;} 284*7080Srrh if(psctab[j] < 0)k |= DBL; 285*7080Srrh return(k); 286*7080Srrh } 287*7080Srrh mchbits(){ 288*7080Srrh register i, j, k; 289*7080Srrh 290*7080Srrh spbits = 0; 291*7080Srrh i = pts & 077; 292*7080Srrh for(j=0; i > (k = pstab[j]);j++)if(!k){k=pstab[--j];break;} 293*7080Srrh chbits = (((++j)<<2) | font) << (BYTE + 1); 294*7080Srrh sps = width(' ' | chbits); 295*7080Srrh if(font == (spsz-1)){ 296*7080Srrh i = findps(getfz(smnt-1, apts + fz[font].inc)); 297*7080Srrh for(j=0; i > (k = pstab[j]);j++)if(!k){k=pstab[--j];break;} 298*7080Srrh spbits = (((++j)<<2) | font) << (BYTE + 1); 299*7080Srrh } 300*7080Srrh } 301*7080Srrh getfz(x,y) 302*7080Srrh int x, y; 303*7080Srrh { 304*7080Srrh register i, j, k; 305*7080Srrh 306*7080Srrh i = fz[x].size; 307*7080Srrh j = fz[x].sign; 308*7080Srrh if(i || j){ 309*7080Srrh if(j == '+')i += y; 310*7080Srrh else if(j == '-')i = y - i; 311*7080Srrh } 312*7080Srrh fz[x].inc = y - i; 313*7080Srrh return(i); 314*7080Srrh } 315*7080Srrh setps(){ 316*7080Srrh register i,j; 317*7080Srrh 318*7080Srrh if((((i=getch() & CMASK) == '+') || (i == '-')) && 319*7080Srrh (((j=(ch = getch() & CMASK) - '0') >= 0) && (j <= 9))){ 320*7080Srrh if(i == '-')j = -j; 321*7080Srrh ch = 0; 322*7080Srrh casps1(apts+j); 323*7080Srrh return; 324*7080Srrh } 325*7080Srrh if((i -= '0') == 0){ 326*7080Srrh casps1(apts1); 327*7080Srrh return; 328*7080Srrh } 329*7080Srrh if((i > 0) && (i <= 9)){ 330*7080Srrh if((i <= 3) && 331*7080Srrh ((j=(ch = getch() & CMASK) - '0') >= 0) && (j <= 9)){ 332*7080Srrh i = 10*i +j; 333*7080Srrh ch = 0; 334*7080Srrh } 335*7080Srrh casps1(i); 336*7080Srrh } 337*7080Srrh } 338*7080Srrh caseft(){ 339*7080Srrh skip(); 340*7080Srrh setfont(1); 341*7080Srrh } 342*7080Srrh setfont(a) 343*7080Srrh int a; 344*7080Srrh { 345*7080Srrh register i,j; 346*7080Srrh 347*7080Srrh if(a)i = getrq(); 348*7080Srrh else i = getsn(); 349*7080Srrh if(!i || (i == 'P')){ 350*7080Srrh j = font1; 351*7080Srrh goto s0; 352*7080Srrh } 353*7080Srrh if(i == 'S')return; 354*7080Srrh if((j = find(i,fontlab)) == -1)return; 355*7080Srrh s0: 356*7080Srrh font1 = font; 357*7080Srrh font = j; 358*7080Srrh i = 0; 359*7080Srrh if(fz[font1].size){ 360*7080Srrh i++; 361*7080Srrh casps1(apts + fz[font1].inc); 362*7080Srrh }else if(fz[font].size){ 363*7080Srrh i++; 364*7080Srrh casps1(apts); 365*7080Srrh } 366*7080Srrh if(!i)mchbits(); 367*7080Srrh } 368*7080Srrh setwd(){ 369*7080Srrh register i, base, wid; 370*7080Srrh int delim, em, k; 371*7080Srrh int savlevel, savhp, savapts, savapts1, savfont, savfont1, 372*7080Srrh savpts, savpts1; 373*7080Srrh int *savpinchar, *p, *q, tempinchar[LNSIZE]; /* XXX */ 374*7080Srrh 375*7080Srrh base = v.st = v.sb = wid = v.ct = 0; 376*7080Srrh if((delim = getch() & CMASK) & MOT)return; 377*7080Srrh savhp = v.hp; 378*7080Srrh savpinchar = pinchar; /* XXX */ 379*7080Srrh for (p=inchar, q=tempinchar; p < pinchar; ) /* XXX */ 380*7080Srrh *q++ = *p++; /* XXX */ 381*7080Srrh pinchar = inchar; /* XXX */ 382*7080Srrh savlevel = level; 383*7080Srrh v.hp = level = 0; 384*7080Srrh savapts = apts; 385*7080Srrh savapts1 = apts1; 386*7080Srrh savfont = font; 387*7080Srrh savfont1 = font1; 388*7080Srrh savpts = pts; 389*7080Srrh savpts1 = pts1; 390*7080Srrh setwdf++; 391*7080Srrh while((((i = getch()) & CMASK) != delim) && !nlflg){ 392*7080Srrh wid += width(i); 393*7080Srrh if(!(i & MOT)){ 394*7080Srrh em = (xpts & 077)*6; 395*7080Srrh }else if(i & VMOT){ 396*7080Srrh k = i & ~MOTV; 397*7080Srrh if(i & NMOT)k = -k; 398*7080Srrh base -= k; 399*7080Srrh em = 0; 400*7080Srrh }else continue; 401*7080Srrh if(base < v.sb)v.sb = base; 402*7080Srrh if((k=base + em) > v.st)v.st = k; 403*7080Srrh } 404*7080Srrh nform = 0; 405*7080Srrh setn1(wid); 406*7080Srrh v.hp = savhp; 407*7080Srrh pinchar = savpinchar; /* XXX */ 408*7080Srrh for (p=inchar, q=tempinchar; p < pinchar; ) /* XXX */ 409*7080Srrh *p++ = *q++; /* XXX */ 410*7080Srrh level = savlevel; 411*7080Srrh apts = savapts; 412*7080Srrh apts1 = savapts1; 413*7080Srrh font = savfont; 414*7080Srrh font1 = savfont1; 415*7080Srrh pts = savpts; 416*7080Srrh pts1 = savpts1; 417*7080Srrh mchbits(); 418*7080Srrh setwdf = 0; 419*7080Srrh } 420*7080Srrh vmot(){ 421*7080Srrh dfact = lss; 422*7080Srrh vflag++; 423*7080Srrh return(mot()); 424*7080Srrh } 425*7080Srrh hmot(){ 426*7080Srrh dfact = 6 * (pts & 077); 427*7080Srrh return(mot()); 428*7080Srrh } 429*7080Srrh mot(){ 430*7080Srrh register i, j; 431*7080Srrh 432*7080Srrh j = HOR; 433*7080Srrh getch(); /*eat delim*/ 434*7080Srrh if(i = atoi()){ 435*7080Srrh if(vflag)j = VERT; 436*7080Srrh i = makem(quant(i,j)); 437*7080Srrh } 438*7080Srrh getch(); 439*7080Srrh vflag = 0; 440*7080Srrh dfact = 1; 441*7080Srrh return(i); 442*7080Srrh } 443*7080Srrh sethl(k) 444*7080Srrh int k; 445*7080Srrh { 446*7080Srrh register i; 447*7080Srrh 448*7080Srrh i = 3 * (pts & 077); 449*7080Srrh if(k == 'u')i = -i; 450*7080Srrh else if(k == 'r')i = -2*i; 451*7080Srrh vflag++; 452*7080Srrh i = makem(i); 453*7080Srrh vflag = 0; 454*7080Srrh return(i); 455*7080Srrh } 456*7080Srrh makem(i) 457*7080Srrh int i; 458*7080Srrh { 459*7080Srrh register j; 460*7080Srrh 461*7080Srrh if((j = i) < 0)j = -j; 462*7080Srrh j = (j & ~MOTV) | MOT; 463*7080Srrh if(i < 0)j |= NMOT; 464*7080Srrh if(vflag)j |= VMOT; 465*7080Srrh return(j); 466*7080Srrh } 467*7080Srrh getlg(i) 468*7080Srrh int i; 469*7080Srrh { 470*7080Srrh register j, k; 471*7080Srrh 472*7080Srrh switch((j = getch0()) & CMASK){ 473*7080Srrh case 'f': 474*7080Srrh if(lg!=2){switch((k =getch0()) & CMASK){ 475*7080Srrh case 'i': 476*7080Srrh j = 0214; 477*7080Srrh break; 478*7080Srrh case 'l': 479*7080Srrh j = 0215; 480*7080Srrh break; 481*7080Srrh default: 482*7080Srrh ch0 = k; 483*7080Srrh j = 0213; 484*7080Srrh } 485*7080Srrh }else j = 0213; 486*7080Srrh break; 487*7080Srrh case 'l': 488*7080Srrh j = 0212; 489*7080Srrh break; 490*7080Srrh case 'i': 491*7080Srrh j = 0211; 492*7080Srrh break; 493*7080Srrh default: 494*7080Srrh ch0 = j; 495*7080Srrh j = i; 496*7080Srrh } 497*7080Srrh return((i & ~CMASK) | j); 498*7080Srrh } 499*7080Srrh caselg(){ 500*7080Srrh 501*7080Srrh lg = 1; 502*7080Srrh if(skip())return; 503*7080Srrh lg = atoi(); 504*7080Srrh } 505*7080Srrh casefp(){ 506*7080Srrh register i, j, k; 507*7080Srrh int x; 508*7080Srrh 509*7080Srrh skip(); 510*7080Srrh if(((i = (getch() & CMASK) - '0' -1) < 0) || (i >3)){prstr("fp: bad font position\n"); return;} 511*7080Srrh if(skip() || !(j = getrq())){prstr("fp: no font name\n"); return;} 512*7080Srrh fontfile[ffi] = j & BMASK; 513*7080Srrh fontfile[ffi+1] = j>>BYTE; 514*7080Srrh if((k = open(fontfile,0)) < 0){ 515*7080Srrh prstr("Cannot open "); 516*7080Srrh c0: 517*7080Srrh prstr(fontfile); 518*7080Srrh prstr("\n"); 519*7080Srrh done(-1); 520*7080Srrh } 521*7080Srrh if(lseek(k,8L * sizeof(int),0) < 0)goto c1; 522*7080Srrh if(read(k,fontab[i],256-32) != 256-32){ 523*7080Srrh c1: 524*7080Srrh prstr("Cannot read "); 525*7080Srrh goto c0; 526*7080Srrh } 527*7080Srrh close(k); 528*7080Srrh if(i == (smnt-1)){smnt = 0; sbold = 0; spsz = 0;} 529*7080Srrh if((fontlab[i] = j) == 'S')smnt = i + 1; 530*7080Srrh bdtab[i] = cstab[i] = ccstab[i] = 0; 531*7080Srrh fz[i].inc = fz[i].sign = fz[i].size = 0; 532*7080Srrh if(ptid != 1){ 533*7080Srrh prstr("Mount font "); 534*7080Srrh prstr(&fontfile[ffi]); 535*7080Srrh prstr(" on "); 536*7080Srrh x = PAIR((i + '1'),0); 537*7080Srrh prstr((char *)&x); 538*7080Srrh prstr("\n"); 539*7080Srrh } 540*7080Srrh } 541*7080Srrh casecs(){ 542*7080Srrh register i, j; 543*7080Srrh 544*7080Srrh noscale++; 545*7080Srrh skip(); 546*7080Srrh if(!(i=getrq()) || 547*7080Srrh ((i = find(i,fontlab)) < 0))goto rtn; 548*7080Srrh skip(); 549*7080Srrh cstab[i] = atoi(); 550*7080Srrh skip(); 551*7080Srrh j = atoi(); 552*7080Srrh if(!nonumb)ccstab[i] = findps(j); 553*7080Srrh rtn: 554*7080Srrh noscale = 0; 555*7080Srrh } 556*7080Srrh casebd(){ 557*7080Srrh register i, j, k; 558*7080Srrh 559*7080Srrh k = 0; 560*7080Srrh bd0: 561*7080Srrh if(skip() || !(i = getrq()) || 562*7080Srrh ((j = find(i,fontlab)) == -1)){ 563*7080Srrh if(k)goto bd1; 564*7080Srrh else return; 565*7080Srrh } 566*7080Srrh if(j == (smnt-1)){ 567*7080Srrh k = smnt; 568*7080Srrh goto bd0; 569*7080Srrh } 570*7080Srrh if(k){ 571*7080Srrh sbold = j + 1; 572*7080Srrh j = k -1; 573*7080Srrh } 574*7080Srrh bd1: 575*7080Srrh skip(); 576*7080Srrh noscale++; 577*7080Srrh bdtab[j] = atoi(); 578*7080Srrh noscale = 0; 579*7080Srrh } 580*7080Srrh casevs(){ 581*7080Srrh register i; 582*7080Srrh 583*7080Srrh skip(); 584*7080Srrh vflag++; 585*7080Srrh dfact = 6; /*default scaling is points!*/ 586*7080Srrh res = VERT; 587*7080Srrh i = inumb(&lss); 588*7080Srrh if(nonumb)i = lss1; 589*7080Srrh if(i < VERT)i = VERT; 590*7080Srrh lss1 = lss; 591*7080Srrh lss = i; 592*7080Srrh } 593*7080Srrh casess(){ 594*7080Srrh register i; 595*7080Srrh 596*7080Srrh noscale++; 597*7080Srrh skip(); 598*7080Srrh if(i = atoi()){ 599*7080Srrh spacesz = i& 0177; 600*7080Srrh sps = width(' ' | chbits); 601*7080Srrh } 602*7080Srrh noscale = 0; 603*7080Srrh } 604*7080Srrh xlss(){ 605*7080Srrh register i, j; 606*7080Srrh 607*7080Srrh getch(); 608*7080Srrh dfact = lss; 609*7080Srrh i = quant(atoi(),VERT); 610*7080Srrh dfact = 1; 611*7080Srrh getch(); 612*7080Srrh if((j = i) < 0)j = -j; 613*7080Srrh ch0 = ((j & 03700)<<3) | HX; 614*7080Srrh if(i < 0)ch0 |= 040000; 615*7080Srrh return(((j & 077)<<9) | LX); 616*7080Srrh } 617