|
|
researchv10 Norman
#include <stdio.h>
#define DBL 0200
/*
C version of pti
*/
char *ap;
int esc;
int escd;
int verd;
int esct;
int osize = 02;
int size = 02;
int leadtot;
int railmag;
int lead;
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, 36, 18};
char *asctab[128] = {
"(blank)", /*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*/
"(blank)", /*blank*/
"p", /*p*/
"em dash", /*3/4 em dash*/
";", /*;*/
"(blank)", /*blank*/
"a", /*a*/
"_ (baseline)", /*rule*/
"c", /*c*/
"` (open)", /*` open*/
"e", /*e*/
"' (close)", /*' close*/
"o", /*o*/
"1/4", /*1/4*/
"r", /*r*/
"1/2", /*1/2*/
"v", /*v*/
"hyphen", /*- hyphen*/
"w", /*w*/
"q", /*q*/
"/", /*/*/
".", /*.*/
"g", /*g*/
"3/4", /*3/4*/
",", /*,*/
"&", /*&*/
"y", /*y*/
"(blank)", /*blank*/
"%", /*%*/
"(blank)", /*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*/
"(blank)", /*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*/
"fi", /*fi*/
"fl", /*fl*/
"ff", /*ff*/
"cent", /*cent sign*/
"ffl", /*ffl*/
"ffi", /*ffi*/
"(", /*(*/
")", /*)*/
"[", /*[*/
"]", /*]*/
"degree", /*degree*/
"dagger", /*dagger*/
"=", /*=*/
"registered", /*registered*/
":", /*:*/
"+", /*+*/
"(blank)", /*blank*/
"!", /*!*/
"bullet", /*bullet*/
"?", /*?*/
"' (foot)", /*foot mark*/
"|", /*|*/
"(blank)", /*blank*/
"copyright", /*copyright*/
"[]", /*square*/
"$" }; /*$*/
char *spectab[128] = {
"(blank)", /*blank*/
"psi", /*psi*/
"theta", /*theta*/
"nu", /*nu*/
"mu", /*mu*/
"lambda", /*lambda*/
"iota", /*iota*/
"zeta", /*zeta*/
"sigma", /*sigma*/
"delta", /*delta*/
"beta", /*beta*/
"xi", /*xi*/
"eta", /*eta*/
"phi", /*phi*/
"upsilon", /*upsilon*/
"kappa", /*kappa*/
"(blank)", /*blank*/
"pi", /*pi*/
"@", /*at-sign*/
"down arrow", /*down arrow*/
"(blank)", /*blank*/
"alpha", /*alpha*/
"| or", /*or*/
"chi", /*chi*/
"\"", /*"*/
"epsilon", /*epsilon*/
"= math", /*=*/
"omicron", /*omicron*/
"left arrow", /*left arrow*/
"rho", /*rho*/
"up arrow", /*up arrow*/
"tau", /*tau*/
"_ (under)", /*underrule*/
"\\", /*\*/
"Psi", /*Psi*/
"bell system sign", /*bell system sign*/
"infinity", /*infinity*/
"gamma", /*gamma*/
"improper superset", /*improper superset*/
"proportional to", /*proportional to*/
"right hand", /*right hand*/
"omega", /*omega*/
"(blank)", /*blank*/
"gradient", /*gradient*/
"(blank)", /*blank*/
"Phi", /*Phi*/
"Theta", /*Theta*/
"Omega", /*Omega*/
"cup (union)", /*cup (union)*/
"root en", /*root en*/
"terminal sigma", /*terminal sigma*/
"Lambda", /*Lambda*/
"- math", /*minus*/
"Gamma", /*Gamma*/
"integral sign", /*integral sign*/
"Pi", /*Pi*/
"subset of", /*subset of*/
"superset of", /*superset of*/
"approximates", /*approximates*/
"partial", /*partial derivative*/
"Delta", /*Delta*/
"square root", /*square root*/
"Sigma", /*Sigma*/
"approx =", /*approx =*/
"(blank)", /*blank*/
">", /*>*/
"Xi", /*Xi*/
"<", /*<*/
"/ (match \\)", /*slash (longer)*/
"cap (intersection)", /*cap (intersection)*/
"Upsilon", /*Upsilon*/
"not", /*not*/
"right ceiling", /*right ceiling (rt of ")*/
"left top curly", /*left top (of big curly)*/
"bold vertical", /*bold vertical*/
"left center curley", /*left center of big curly bracket*/
"left bottom curley", /*left bottom*/
"right top curley", /*right top*/
"right center curley", /*right center of big curly bracket*/
"right bottom curley", /*right bot*/
"right floor", /*right floor (rb of ")*/
"left floor", /*left floor (left bot of big sq bract)*/
"left ceiling", /*left ceiling (lt of ")*/
"multiply", /*multiply*/
"divide", /*divide*/
"+-", /*plus-minus*/
"<=", /*<=*/
">=", /*>=*/
"==", /*identically equal*/
"not equal", /*not equal*/
"{", /*{*/
"}", /*}*/
"'", /*' acute accent*/
"`", /*` grave accent*/
"^", /*^*/
"#", /*sharp*/
"left hand", /*left hand*/
"member of", /*member of*/
"~", /*~*/
"empty set", /*empty set*/
"(blank)", /*blank*/
"dbl dagger", /*dbl dagger*/
"| (box rule)", /*box rule*/
"*", /*asterisk*/
"improper subset", /*improper subset*/
"circle", /*circle*/
"(blank)", /*blank*/
"+ math", /*eqn plus*/
"right arrow", /*right arrow*/
"section mark" }; /*section mark*/
long offset;
int lflg;
main(argc,argv)
int argc;
char **argv;
{
register i, j;
register char *k;
extern ex();
while((--argc > 0) && ((++argv)[0][0]=='-')){
switch(argv[0][1]){
case 'l':
lflg++;
continue;
default:
ap = &argv[0][1];
while(((j = *ap++ - '0') >= 0)
&& (j <= 9))offset = 8*offset +j;
continue;
}
}
if(argc){
if (freopen(argv[0], "r", stdin) == NULL) {
printf("Cannot open: %s\n",argv[0]);
exit(1);
}
}
if (offset)
fseek(stdin, offset, 0);
while((i = getchar()) != EOF){
if(i & 0200){
if(!lflg)printf("%o ",i);
esc += (~i) & 0177;
continue;
}
if(esc){
if(escd){
if(!lflg)printf("< %d\n",esc);
esc = -esc;
}else{
if(!lflg)printf("> %d\n",esc);
}
esct += esc;
esc = 0;
}
if(!lflg)printf("%o ",i);
if(!i){if(!lflg)printf("\n"); continue;}
switch(i){
case 0100: /*init*/
escd = verd = mcase = railmag = 0;
if(!lflg)printf("Initialize\n");
continue;
case 0101: /*lower rail*/
railmag &= ~01;
if(!lflg)printf("Lower rail\n");
continue;
case 0102: /*upper rail*/
railmag |= 01;
if(!lflg)printf("Upper rail\n");
continue;
case 0103: /*upper mag*/
railmag |= 02;
if(!lflg)printf("Upper mag\n");
continue;
case 0104: /*lower mag*/
railmag &= ~02;
if(!lflg)printf("Lower mag\n");
continue;
case 0105: /*lower case*/
mcase = 0;
if(!lflg)printf("Lower case\n");
continue;
case 0106: /*upper case*/
mcase = 0100;
if(!lflg)printf("Upper case\n");
continue;
case 0107: /*escape forward*/
escd = 0;
if(!lflg)printf("> mode, %d\n",esct);
continue;
case 0110: /*escape backward*/
escd = 1;
if(!lflg)printf("< mode, %d\n",esct);
continue;
case 0111: /*stop*/
if(!lflg)printf("STOP\n");
continue;
case 0112: /*lead forward*/
verd = 0;
if(!lflg)printf("Lead forward, %d\n",leadtot);
continue;
case 0114: /*lead backward*/
verd = 1;
if(!lflg)printf("Lead backward, %d\n",leadtot);
continue;
case 0115: /*undefined*/
case 0116:
case 0117:
case 0113:
if(!lflg)printf("Undefined code\n");
continue;
}
if((i & 0340) == 0140){ /*leading*/
lead = (~i) & 037;
if(!lflg)printf("Lead %d\n",lead);
if(verd)lead = -lead;
leadtot += lead;
continue;
}
if((i & 0360) == 0120){ /*size change*/
i &= 017;
for(j = 0; i != (stab[j] & 017); j++);
osize = size;
size = stab[j];
if(!lflg){
printf("Size %d",rtab[j]);
if(!(osize & DBL) && (size & DBL))printf(", double\n");
else if((osize & DBL) && !(size & DBL))printf(", single\n");
else printf("\n");
}
continue;
}
if(i & 0300)continue;
i = (i & 077) | mcase;
if(railmag != 03)k = asctab[i];
else k = spectab[i];
if(!lflg)printf("%s\n",k);
continue;
}
ex();
}
ex(){
printf("Total lead %d\n",leadtot);
exit(0);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.