[net.general] utilities for Lear-Siegler ADM22 terminals

guy@proper.UUCP (Guy Hillyer ) (02/09/84)

	Here are a couple of programs for reading and
	setting options on the Lear-Siegler ADM22
	terminal.  I would be interested to know if
	anyone finds these useful.

				-guy-	(proper!guy)


---------------------adm22get.c-------------------------

/*
 *	command to get and print adm22 options.
 *
 *	proper!guy 11-29-83
 */

#include <sgtty.h>
#include <signal.h>

struct sgttyb ttyb;

char rdln_command[2] = {'\033', '$'};
char stat_line[11];

main ()
{
	register int i;
	int noresponse();

	gtty (2, &ttyb);
	ttyb.sg_flags |= RAW;
	stty (2, &ttyb);


	write (2, rdln_command, 2);

	signal (SIGALRM, noresponse);
	alarm (6);		/* in case it isn't really an adm22 */

	for (i = 0; i < 11; i++)
		read (0, stat_line + i, 1);

	ttyb.sg_flags &= ~RAW;
	stty (2, &ttyb);

	for (i = 0; i < 10; i++)
		printf ("%x ", stat_line[i] & 0xF);

	printf ("\n");
}
noresponse ()
{
	ttyb.sg_flags &= ~RAW;
	stty (2, &ttyb);
	printf ("adm22get: No response from terminal\n");
	exit ();
}

-----------------adm22set.c----------------------------

/*
 *	command to set up adm22 options.
 *	each argument is a value for a set-up nybble
 *	as diplayed on the status line in set-up mode.
 *
 *	proper!guy 11-29-83
 */

#include <sgtty.h>

struct sgttyb ttyb;

char wrln_command[2] = {'\033', '%'};
char stat_line[10];

main (argc, argv)
int argc; char *argv[];
{
	register int i;
	int j;
	int x;

	if (argc != 11)
	{
		printf("Proper usage is: %s <10 set up values>\n",
		    argv[0]);
		exit ();
	}

	gtty (1, &ttyb);
	ttyb.sg_flags |= RAW;
	stty (1, &ttyb);

	for (i = 0; i < 10; i++)
	{
		sscanf (argv[i+1], "%x", &x);
		stat_line[i] = x & 0xF;
	}

	write (1, wrln_command, 2);

	for (i=0; i < 10; i++)
	{
		for (j=0; j < 10000; j++);	/* a brief delay */
		write (1, stat_line + i, 1);
	}

	ttyb.sg_flags &= ~RAW;
	stty (1, &ttyb);
}