Originally posted by: grwalter@watmath.UUCP (Fred Walter)
Article-I.D.: watmath.3265
Posted: Thu Nov 6 19:37:14 1986
Date-Received: Fri, 7-Nov-86 21:42:32 EST
Reply-To: grwalter@watmath.UUCP (Fred Walter)
Distribution: world
Organization: U of Waterloo, Ontario
Lines: 195
Keywords: source
Xref: watmath net.micro.cbm:2694 comp.sys.cbm:2
This is a short C program that takes c-power/pet ascii on stdin and converts
it to unix ascii on stdout (use -p as the first argument to convert the
other way).
It needs just a straight vanilla compile (ie. "cc cnv.c -o cnv" will do).
It is useful when your transfer program (say xmodem on proterm-128)
doesn't do the conversion for you.
If you have any comments, I can be reached at :
UUCP : {allegra|clyde|linus|decvax|utzoo|ihnp4}!watmath!grwalter
CSNET : grwalter%watmath@waterloo.csnet
ARPA : grwalter%watmath%waterloo.csnet@csnet-relay.arpa
---------yes-virginia-there-is-a-cut-line--------------------------------------
/*
* cnv.c
*
* by g. r. walter (grwalter@watmath) 861106
*
* take from stdin a petascii file and convert it to unixascii to sdtout
* (using 10 as the end-of-line indicator)
*
* if the -p option is used then
* take from stdin a unixascii file and convert it to petascii to sdtout
* (using 13 as the end-of-line indicator)
*
* note : this file is meant to be viewed/editted using tabs every 4 spaces
*
* credits : the conversion tables were originally made up by brian hilchie
* and they really are for the c-power petascii
*
*/
#include
char tounixascii[256] = {
0, 1, 2, 3,
4, 5, 6, 7,
8, 9, 10, 11,
12, 10, 14, 15,
16, 17, 18, 19,
20, 21, 22, 23,
24, 25, 26, 27,
28, 29, 30, 31,
' ', '!', '"', '#',
'$', '%', '&', '\'',
'(', ')', '*', '+',
',', '-', '.', '/',
'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9', ':', ';',
'<', '=', '>', '?',
'@', 'a', 'b', 'c',
'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o',
'p', 'q', 'r', 's',
't', 'u', 'v', 'w',
'x', 'y', 'z', '[',
'\\', ']', '^', '_',
'`', 'a', 'b', 'c',
'd', 'e', 'f', 'g',
'h', 'i', 'j', 'k',
'l', 'm', 'n', 'o',
'p', 'q', 'r', 's',
't', 'u', 'v', 'w',
'x', 'y', 'z', '{',
'|', '}', '~', 127,
128, 129, 130, 131,
132, 133, 134, 135,
136, 137, 138, 139,
140, 141, 142, 143,
144, 145, 146, 147,
148, 149, 150, 151,
152, 153, 154, 155,
156, 157, 158, 159,
160, 161, 162, 163,
'_', 165, 166, 167,
168, 169, 170, 171,
172, 173, 174, '~',
176, 177, 178, 179,
180, 181, 182, 183,
184, 185, 186, 187,
188, 189, 190, 191,
192, 'A', 'B', 'C',
'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K',
'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W',
'X', 'Y', 'Z', '{',
220, '}', 222, '|',
224, 225, 226, 227,
228, 229, 230, 231,
232, 233, 234, 235,
236, 237, 238, 239,
240, 241, 242, 243,
244, 245, 246, 247,
248, 249, 250, 251,
252, 253, 254, 255
};
char topetascii[256] = {
0, 1, 2, 3,
4, 5, 6, 7,
8, 9, 13, 11,
12, 13, 14, 15,
16, 17, 18, 19,
20, 21, 22, 23,
24, 25, 26, 27,
28, 29, 30, 31,
' ', '!', '"', '#',
'$', '%', '&', '\'',
'(', ')', '*', '+',
',', '-', '.', '/',
'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9', ':', ';',
'<', '=', '>', '?',
'@', 193, 194, 195,
196, 197, 198, 199,
200, 201, 202, 203,
204, 205, 206, 207,
208, 209, 210, 211,
212, 213, 214, 215,
216, 217, 218, '[',
'\\', ']', '^', 164,
'`', 'A', 'B', 'C',
'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K',
'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S',
'T', 'U', 'V', 'W',
'X', 'Y', 'Z', 219,
223, 221, 175, 127,
128, 129, 130, 131,
132, 133, 134, 135,
136, 137, 138, 139,
140, 141, 142, 143,
144, 145, 146, 147,
148, 149, 150, 151,
152, 153, 154, 155,
156, 157, 158, 159,
160, 161, 162, 163,
164, 165, 166, 167,
168, 169, 170, 171,
172, 173, 174, 175,
176, 177, 178, 179,
180, 181, 182, 183,
184, 185, 186, 187,
188, 189, 190, 191,
192, 193, 194, 195,
196, 197, 198, 199,
200, 201, 202, 203,
204, 205, 206, 207,
208, 209, 210, 211,
212, 213, 214, 215,
216, 217, 218, 219,
220, 221, 222, 223,
224, 225, 226, 227,
228, 229, 230, 231,
232, 233, 234, 235,
236, 237, 238, 239,
240, 241, 242, 243,
244, 245, 246, 247,
248, 249, 250, 251,
252, 253, 254, 255
};
int
main(argc, argv)
int argc;
char **argv;
{
int c, direction, trans;
/* see what direction the conversion must go */
direction = 0; /* assume default is tounixascii */
if (argc > 1)
if ((argv[1][0] == '-') && (argv[1][1] == 'p'))
direction = 1;
c = getchar();
while (c != EOF) {
if (direction == 0)
trans = tounixascii[c];
else
trans = topetascii[c];
(void)printf("%c", trans);
c = getchar();
}
}