|
|
1.1 ! root 1: #define DBL 0200 ! 2: /* ! 3: C version of pti ! 4: */ ! 5: ! 6: char *ap; ! 7: char ibuf[512]; ! 8: char *ibufp = ibuf; ! 9: char *eibufp = ibuf; ! 10: int fid; ! 11: int esc; ! 12: int escd; ! 13: int verd; ! 14: int esct; ! 15: int osize = 02; ! 16: int size = 02; ! 17: int leadtot; ! 18: int railmag; ! 19: int lead; ! 20: int mcase; ! 21: int stab[] = {010,0,01,07,02,03,04,05,0211,06,0212,0213,0214,0215,0216,0217}; ! 22: int rtab[] = {6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, 36, 18}; ! 23: char *asctab[128]; ! 24: char *spectab[128]; ! 25: long offset; ! 26: int lflg; ! 27: int xxx; ! 28: ! 29: main(argc,argv) ! 30: int argc; ! 31: char **argv; ! 32: { ! 33: register i, j; ! 34: register char *k; ! 35: extern ex(); ! 36: ! 37: while((--argc > 0) && ((++argv)[0][0]=='-')){ ! 38: switch(argv[0][1]){ ! 39: case 'l': ! 40: lflg++; ! 41: continue; ! 42: default: ! 43: ap = &argv[0][1]; ! 44: while(((j = *ap++ - '0') >= 0) ! 45: && (j <= 9))offset = 8*offset +j; ! 46: continue; ! 47: } ! 48: } ! 49: if(argc){ ! 50: if((fid=open(argv[0], 0)) < 0){ ! 51: printf("Cannot open: %s\n",argv[0]); ! 52: exit(1); ! 53: } ! 54: } ! 55: lseek(fid,offset,0); ! 56: while((i = getc()) >= 0){ ! 57: if(i & 0200){ ! 58: if(!lflg)printf("%o ",i); ! 59: esc += (~i) & 0177; ! 60: continue; ! 61: } ! 62: if(esc){ ! 63: if(escd){ ! 64: if(!lflg)printf("< %d\n",esc); ! 65: esc = -esc; ! 66: }else{ ! 67: if(!lflg)printf("> %d\n",esc); ! 68: } ! 69: esct += esc; ! 70: esc = 0; ! 71: } ! 72: if(!lflg)printf("%o ",i); ! 73: if(!i){if(!lflg)printf("\n"); continue;} ! 74: switch(i){ ! 75: case 0100: /*init*/ ! 76: escd = verd = mcase = railmag = 0; ! 77: if(!lflg)printf("Initialize\n"); ! 78: continue; ! 79: case 0101: /*lower rail*/ ! 80: railmag &= ~01; ! 81: if(!lflg)printf("Lower rail\n"); ! 82: continue; ! 83: case 0102: /*upper rail*/ ! 84: railmag |= 01; ! 85: if(!lflg)printf("Upper rail\n"); ! 86: continue; ! 87: case 0103: /*upper mag*/ ! 88: railmag |= 02; ! 89: if(!lflg)printf("Upper mag\n"); ! 90: continue; ! 91: case 0104: /*lower mag*/ ! 92: railmag &= ~02; ! 93: if(!lflg)printf("Lower mag\n"); ! 94: continue; ! 95: case 0105: /*lower case*/ ! 96: mcase = 0; ! 97: if(!lflg)printf("Lower case\n"); ! 98: continue; ! 99: case 0106: /*upper case*/ ! 100: mcase = 0100; ! 101: if(!lflg)printf("Upper case\n"); ! 102: continue; ! 103: case 0107: /*escape forward*/ ! 104: escd = 0; ! 105: if(!lflg)printf("> mode, %d\n",esct); ! 106: continue; ! 107: case 0110: /*escape backward*/ ! 108: escd = 1; ! 109: if(!lflg)printf("< mode, %d\n",esct); ! 110: continue; ! 111: case 0111: /*stop*/ ! 112: if(!lflg)printf("STOP\n"); ! 113: continue; ! 114: case 0112: /*lead forward*/ ! 115: verd = 0; ! 116: if(!lflg)printf("Lead forward, %d\n",leadtot); ! 117: continue; ! 118: case 0114: /*lead backward*/ ! 119: verd = 1; ! 120: if(!lflg)printf("Lead backward, %d\n",leadtot); ! 121: continue; ! 122: case 0115: /*undefined*/ ! 123: case 0116: ! 124: case 0117: ! 125: case 0113: ! 126: if(!lflg)printf("Undefined code\n"); ! 127: continue; ! 128: } ! 129: if((i & 0340) == 0140){ /*leading*/ ! 130: lead = (~i) & 037; ! 131: if(!lflg)printf("Lead %d\n",lead); ! 132: if(verd)lead = -lead; ! 133: leadtot += lead; ! 134: continue; ! 135: } ! 136: if((i & 0360) == 0120){ /*size change*/ ! 137: i &= 017; ! 138: for(j = 0; i != (stab[j] & 017); j++); ! 139: osize = size; ! 140: size = stab[j]; ! 141: if(!lflg){ ! 142: printf("Size %d",rtab[j]); ! 143: if(!(osize & DBL) && (size & DBL))printf(", double\n"); ! 144: else if((osize & DBL) && !(size & DBL))printf(", single\n"); ! 145: else printf("\n"); ! 146: } ! 147: continue; ! 148: } ! 149: if(i & 0300)continue; ! 150: i = (i & 077) | mcase; ! 151: if(railmag != 03)k = asctab[i]; ! 152: else k = spectab[i]; ! 153: if(!lflg)printf("%s\n",k); ! 154: continue; ! 155: } ! 156: ex(); ! 157: } ! 158: ex(){ ! 159: printf("Total lead %d\n",leadtot); ! 160: exit(0); ! 161: } ! 162: getc(){ ! 163: register i; ! 164: ! 165: if(ibufp >= eibufp){ ! 166: if((i=read(fid,ibuf,512)) <= 0)ex(); ! 167: eibufp = ibuf + i; ! 168: ibufp = ibuf; ! 169: } ! 170: return(*ibufp++ & 0377); ! 171: } ! 172: char *asctab[128] = { ! 173: 0, /*blank*/ ! 174: "h", /*h*/ ! 175: "t", /*t*/ ! 176: "n", /*n*/ ! 177: "m", /*m*/ ! 178: "l", /*l*/ ! 179: "i", /*i*/ ! 180: "z", /*z*/ ! 181: "s", /*s*/ ! 182: "d", /*d*/ ! 183: "b", /*b*/ ! 184: "x", /*x*/ ! 185: "f", /*f*/ ! 186: "j", /*j*/ ! 187: "u", /*u*/ ! 188: "k", /*k*/ ! 189: 0, /*blank*/ ! 190: "p", /*p*/ ! 191: "-", /*_ 3/4 em dash*/ ! 192: ";", /*;*/ ! 193: 0, /*blank*/ ! 194: "a", /*a*/ ! 195: "_", /*rule*/ ! 196: "c", /*c*/ ! 197: "`", /*` open*/ ! 198: "e", /*e*/ ! 199: "'", /*' close*/ ! 200: "o", /*o*/ ! 201: 0, /*1/4*/ ! 202: "r", /*r*/ ! 203: 0, /*1/2*/ ! 204: "v", /*v*/ ! 205: "-", /*- hyphen*/ ! 206: "w", /*w*/ ! 207: "q", /*q*/ ! 208: "/", /*/*/ ! 209: ".", /*.*/ ! 210: "g", /*g*/ ! 211: 0, /*3/4*/ ! 212: ",", /*,*/ ! 213: "&", /*&*/ ! 214: "y", /*y*/ ! 215: 0, /*blank*/ ! 216: "%", /*%*/ ! 217: 0, /*blank*/ ! 218: "Q", /*Q*/ ! 219: "T", /*T*/ ! 220: "O", /*O*/ ! 221: "H", /*H*/ ! 222: "N", /*N*/ ! 223: "M", /*M*/ ! 224: "L", /*L*/ ! 225: "R", /*R*/ ! 226: "G", /*G*/ ! 227: "I", /*I*/ ! 228: "P", /*P*/ ! 229: "C", /*C*/ ! 230: "V", /*V*/ ! 231: "E", /*E*/ ! 232: "Z", /*Z*/ ! 233: "D", /*D*/ ! 234: "B", /*B*/ ! 235: "S", /*S*/ ! 236: "Y", /*Y*/ ! 237: 0, /*blank*/ ! 238: "F", /*F*/ ! 239: "X", /*X*/ ! 240: "A", /*A*/ ! 241: "W", /*W*/ ! 242: "J", /*J*/ ! 243: "U", /*U*/ ! 244: "K", /*K*/ ! 245: "0", /*0*/ ! 246: "1", /*1*/ ! 247: "2", /*2*/ ! 248: "3", /*3*/ ! 249: "4", /*4*/ ! 250: "5", /*5*/ ! 251: "6", /*6*/ ! 252: "7", /*7*/ ! 253: "8", /*8*/ ! 254: "9", /*9*/ ! 255: "*", /***/ ! 256: "-", /*minus*/ ! 257: 0, /*fi*/ ! 258: 0, /*fl*/ ! 259: 0, /*ff*/ ! 260: 0, /*cent mark*/ ! 261: 0, /*ffl*/ ! 262: 0, /* ffi */ ! 263: "(", /*(*/ ! 264: ")", /*)*/ ! 265: "[", /*[*/ ! 266: "]", /*]*/ ! 267: 0, /*degree*/ ! 268: 0, /*dagger*/ ! 269: "=", /*=*/ ! 270: 0, /*registered*/ ! 271: ":", /*:*/ ! 272: "+", /*+*/ ! 273: 0, /*blank*/ ! 274: "!", /*!*/ ! 275: 0, /*bullet*/ ! 276: "?", /*?*/ ! 277: "'", /*foot mark*/ ! 278: "|", /*|*/ ! 279: 0, /*blank*/ ! 280: 0, /*copyright*/ ! 281: 0, /*square*/ ! 282: "$" }; /*$*/ ! 283: ! 284: char *spectab[128] = { ! 285: 0, /*blank*/ ! 286: 0, /*psi*/ ! 287: 0, /*theta*/ ! 288: 0, /*nu*/ ! 289: 0, /*mu*/ ! 290: 0, /*lambda*/ ! 291: 0, /*iota*/ ! 292: 0, /*zeta*/ ! 293: 0, /*sigma*/ ! 294: 0, /*delta*/ ! 295: 0, /*beta*/ ! 296: 0, /*xi*/ ! 297: 0, /*eta*/ ! 298: 0, /*phi*/ ! 299: "u", /*upsilon*/ ! 300: 0, /*kappa*/ ! 301: 0, /*blank*/ ! 302: 0, /*pi*/ ! 303: "@", /*at sign @*/ ! 304: 0, /*down arrow*/ ! 305: 0, /*blank*/ ! 306: 0, /*alpha*/ ! 307: "|", /*or*/ ! 308: 0, /*chi*/ ! 309: "\"", /*"*/ ! 310: 0, /*epsilon*/ ! 311: "=", /*equals*/ ! 312: "o", /*omicron*/ ! 313: 0, /*left arrow*/ ! 314: 0, /*rho*/ ! 315: 0, /*up arrow*/ ! 316: 0, /*tau*/ ! 317: "_", /*underrule*/ ! 318: "\\", /*\*/ ! 319: 0, /*Psi*/ ! 320: 0, /*bell system sign*/ ! 321: 0, /*infinity*/ ! 322: 0, /*gamma*/ ! 323: 0, /*improper superset*/ ! 324: 0, /*proportional to*/ ! 325: 0, /*right hand*/ ! 326: 0, /*omega*/ ! 327: 0, /*blank*/ ! 328: 0, /*gradient*/ ! 329: 0, /*blank*/ ! 330: 0, /*Phi*/ ! 331: 0, /*Theta*/ ! 332: 0, /*Omega*/ ! 333: 0, /*cup (union)*/ ! 334: 0, /*root en*/ ! 335: 0, /*terminal sigma*/ ! 336: 0, /*Lambda*/ ! 337: "-", /*some horizontal line*/ ! 338: 0, /*Gamma*/ ! 339: 0, /*integral sign*/ ! 340: 0, /*Pi*/ ! 341: 0, /*subset of*/ ! 342: 0, /*superset of*/ ! 343: 0, /*approximates*/ ! 344: 0, /*partial derivative*/ ! 345: 0, /*Delta*/ ! 346: 0, /*square root*/ ! 347: 0, /*Sigma*/ ! 348: 0, /*approx =*/ ! 349: 0, /*blank*/ ! 350: ">", /*>*/ ! 351: 0, /*Xi*/ ! 352: "<", /*<*/ ! 353: "/", /*slash (longer)*/ ! 354: 0, /*cap (intersection)*/ ! 355: "Y", /*Upsilon*/ ! 356: 0, /*not*/ ! 357: "|", /*right ceiling (rt of ")*/ ! 358: "|", /*left top (of big curly)*/ ! 359: "|", /*bold vertical*/ ! 360: "|", /*left center of big curly bracket*/ ! 361: "|", /*left bottom*/ ! 362: "|", /*right top*/ ! 363: "|", /*right center of big curly bracket*/ ! 364: "|", /*right bot*/ ! 365: "|", /*right floor (rb of ")*/ ! 366: "|", /*left floor (left bot of big sq bract)*/ ! 367: "|", /*left ceiling (lt of ")*/ ! 368: "x", /*multiply*/ ! 369: 0, /*divide*/ ! 370: 0, /*plus-minus*/ ! 371: 0, /*<=*/ ! 372: 0, /*>=*/ ! 373: 0, /*identically equal*/ ! 374: 0, /*not equal*/ ! 375: "{", /*{*/ ! 376: "}", /*}*/ ! 377: "'", /*' acute accent*/ ! 378: "`", /*` grave accent*/ ! 379: "^", /*^*/ ! 380: "#", /*sharp*/ ! 381: 0, /*left hand*/ ! 382: 0, /*member of*/ ! 383: "~", /*~*/ ! 384: 0, /*empty set*/ ! 385: 0, /*blank*/ ! 386: 0, /*dbl dagger*/ ! 387: "|", /*box rule*/ ! 388: "*", /*telephone asterisk?*/ ! 389: 0, /*improper subset*/ ! 390: 0, /*circle*/ ! 391: 0, /*blank*/ ! 392: "+", /*eqn plus sign*/ ! 393: 0, /*right arrow*/ ! 394: 0 }; /*section mark*/
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.