converting ascii for cybers (ugh)

Mister Snuffle-upagus arnold at gatech.UUCP
Fri Oct 26 07:23:49 AEST 1984


This is a cute little program my office mate and I wrote to translate
regular 7 bit ASCII into the escape 6/12 codes that CDC Cybers use.
It may come in useful to the rest of the world.

It does not translate the ascii LF into the ^) combination, since I use
it to prepare input to 'dd', which blocks the records on the tape, and
then the cyber unblocks it and supplies the newline.

Don't forget the .signature (I didn't think it necessary to 'shar'
just one file).

-------------------------------- cut here --------------------------
/* cyber --- map ascii into display code equivalents (ugh) */

/* Jeff Lee and Arnold Robbins, October 1984, Georgia Tech */
/* gatech!jeff && gatech!arnold */

#include <stdio.h>
#include <ctype.h>

char *table[] = {
	"^5",	/* NUL */
	"^6",	/* SOH */
	"^7",	/* STX */
	"^8",	/* ETX */
	"^9",	/* EOT */
	"^+",	/* ENQ */
	"^-",	/* ACK */
	"^*",	/* BEL */

	"^/",	/* BS */
	"^(",	/* HT */
	"\n",	/* LF */	/* ("^)") leave alone: dd will futz with it */
	"^$",	/* VT */
	"^=",	/* FF */
	"^ ",	/* CR */
	"^,",	/* SO */
	"^.",	/* SI */

	"^#",	/* DLE */
	"^[",	/* DC1 */
	"^]",	/* DC2 */
	"^%",	/* DC3 */
	"^\"",	/* DC4 */
	"^_",	/* NAK */
	"^!",	/* SYN */
	"^&",	/* ETB */

	"^'",	/* CAN */
	"^?",	/* EM */
	"^<",	/* SUB */
	"^>",	/* ESC */
	"^@",	/* FS */
	"^\\",	/* GS */
	"^^",	/* RS */
	"^;",	/* US */

	" ",	/* space */
	"!",	/* exclamation point */
	"\"",	/* quote */
	"#",	/* number sign */
	"$",	/* dollar sign */
	"%",	/* percent sign */
	"&",	/* ampersand */
	"'",	/* apostrophe */

	"(",	/* opening parenthesis */
	")",	/* closing parenthesis */
	"*",	/* asterisk */
	"+",	/* plus */
	",",	/* comma */
	"-",	/* dash */
	".",	/* period */
	"/",	/* slant */

	"0",	/* zero */
	"1",	/* one */
	"2",	/* two */
	"3",	/* three */
	"4",	/* four */
	"5",	/* five */
	"6",	/* six */
	"7",	/* seven */

	"8",	/* eight */
	"9",	/* nine */
	"@D",	/* colon (':')  */
	";",	/* semicolon */
	"<",	/* less than */
	"=",	/* equal */
	">",	/* greater than */
	"?",	/* question mark */

	"@A",	/* commercial at ('@') */
	"A",	/* upper case letters go as themselves */
	"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",
	"[",	/* opening bracket */
	"\\",	/* reverse slant */
	"]",	/* closing bracket */
	"@B",	/* circumflex ('^') */
	"_",	/* underline */

	"@G",	/* grave accent ('`') */
	"^A",	/* lower case letters... */
	"^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",
	"^0",	/* opening brace ('{') */
	"^1",	/* vertical line ('|') */
	"^2",	/* closing brace ('}') */
	"^3",	/* tilde ('~') */
	"^4",	/* DEL */
	NULL
	};

main()
{
	register int c, i, j, cnt;
	char ibuf[BUFSIZ], obuf[2 * sizeof ibuf];

	int read(), write();

	/* use raw i/o for speed */
	while ((cnt = read (0, ibuf, sizeof ibuf)) > 0)
	{
		i = j = 0;
		while (i < cnt)
		{
			c = ibuf[i++] & 0177;	/* ensure 7 bits */
			obuf[j++] = table[c][0];
			if (table[c][1])
				obuf[j++] = table[c][1];
		}

		write(1, obuf, j);
	}
}
-- 
Arnold Robbins
CSNET: arnold at gatech	ARPA:	arnold%gatech.csnet at csnet-relay.arpa
UUCP: { akgua, allegra, hplabs, ihnp4 }!gatech!arnold

Can you tell me how to get, how to get to Sesame Street?



More information about the Comp.sources.unix mailing list