xref: /csrg-svn/old/tabs/tabs.c (revision 1117)
1*1117Sbill static char *sccsid = "@(#)tabs.c	4.1 (Berkeley) 10/01/80";
2*1117Sbill #include <stdio.h>
3*1117Sbill #include <sgtty.h>
4*1117Sbill 
5*1117Sbill #define SP	' '
6*1117Sbill #define TB	'\t'
7*1117Sbill #define NL	'\n'
8*1117Sbill 
9*1117Sbill # define ESC 033
10*1117Sbill # define RHM 060
11*1117Sbill # define SI 017
12*1117Sbill # define DEL 0177
13*1117Sbill # define SET '1'
14*1117Sbill # define CLR '2'
15*1117Sbill # define MGN '9'
16*1117Sbill # define CR '\r'
17*1117Sbill # define BS '\b'
18*1117Sbill 
19*1117Sbill struct sysnod {
20*1117Sbill 	char	*sysnam;
21*1117Sbill 	int	sysval;
22*1117Sbill };
23*1117Sbill 
24*1117Sbill #define	DASI300 1
25*1117Sbill #define	DASI300S 2
26*1117Sbill #define DASI450 3
27*1117Sbill #define TN300 4
28*1117Sbill #define TTY37 5
29*1117Sbill #define HP	6
30*1117Sbill struct sysnod tty[] = {
31*1117Sbill 	{"dasi300", DASI300},
32*1117Sbill 	{"300", DASI300},
33*1117Sbill 	{"dasi300s", DASI300S},
34*1117Sbill 	{"300s", DASI300S},
35*1117Sbill 	{"dasi450", DASI450},
36*1117Sbill 	{"450", DASI450},
37*1117Sbill 	{"37", TTY37},
38*1117Sbill 	{"tty37", TTY37},
39*1117Sbill 	{"tn300", TN300},
40*1117Sbill 	{"terminet", TN300},
41*1117Sbill 	{"tn", TN300},
42*1117Sbill 	{"hp",	HP},
43*1117Sbill 	{0, 0},
44*1117Sbill };
45*1117Sbill int	margset = 1;
46*1117Sbill 
syslook(w)47*1117Sbill syslook(w)
48*1117Sbill char *w;
49*1117Sbill {
50*1117Sbill 	register struct sysnod *sp;
51*1117Sbill 
52*1117Sbill 	for (sp = tty; sp->sysnam!=NULL; sp++)
53*1117Sbill 		if (strcmp(sp->sysnam, w)==0)
54*1117Sbill 			return(sp->sysval);
55*1117Sbill 	return(0);
56*1117Sbill }
57*1117Sbill 
main(argc,argv)58*1117Sbill main(argc,argv)
59*1117Sbill int argc; char **argv;
60*1117Sbill {
61*1117Sbill 	struct sgttyb tb;
62*1117Sbill 	int type;
63*1117Sbill 	char *getenv();
64*1117Sbill 
65*1117Sbill 	type=0;
66*1117Sbill 	if (argc>=2 && strcmp(argv[1],"-n")==0) {
67*1117Sbill 		margset--; argc--; argv++;
68*1117Sbill 	}
69*1117Sbill 	if (argc>=2) {
70*1117Sbill 		type=syslook(argv[1]);
71*1117Sbill 	} else {
72*1117Sbill 		type=syslook(getenv("TERM"));
73*1117Sbill 	}
74*1117Sbill 
75*1117Sbill 	switch(type) {
76*1117Sbill 
77*1117Sbill 		case DASI300:	dasi300(); break;
78*1117Sbill 
79*1117Sbill 		case DASI300S:	dasi300(); break;
80*1117Sbill 
81*1117Sbill 		case DASI450:	dasi450(); break;
82*1117Sbill 
83*1117Sbill 		case TN300:	tn300(); break;
84*1117Sbill 
85*1117Sbill 		case TTY37:	tty37(); break;
86*1117Sbill 
87*1117Sbill 		case HP:	hp2645(); break;
88*1117Sbill 
89*1117Sbill 		default:
90*1117Sbill 				gtty (0, &tb);
91*1117Sbill 				if ( (tb.sg_flags & (LCASE|CRMOD)) == CRMOD) {
92*1117Sbill 					/* test for CR map on, upper case off, i.e. terminet but not 33 */
93*1117Sbill 					if ((tb.sg_ispeed) == B300) /* test for 300 baud */
94*1117Sbill 						misc();
95*1117Sbill 				}
96*1117Sbill 				else if ((tb.sg_flags & (CRMOD|LCASE)) == 0 && (tb.sg_ispeed ) == B150) {
97*1117Sbill 					/* apparent model 37 */
98*1117Sbill 					tty37();
99*1117Sbill 				}
100*1117Sbill 	}
101*1117Sbill }
102*1117Sbill 
clear(n)103*1117Sbill clear(n)
104*1117Sbill {
105*1117Sbill 	escape(CLR);
106*1117Sbill 	delay(n);
107*1117Sbill 	putchar(CR); nl();
108*1117Sbill }
109*1117Sbill 
delay(n)110*1117Sbill delay(n)
111*1117Sbill {
112*1117Sbill 	while (n--) putchar(DEL);
113*1117Sbill }
114*1117Sbill 
tabs(n)115*1117Sbill tabs(n)
116*1117Sbill {
117*1117Sbill 	int i,j;
118*1117Sbill 
119*1117Sbill 	if(margset) n--;
120*1117Sbill 
121*1117Sbill 	for( i=0; i<n; ++i ){
122*1117Sbill 		for( j=0; j<8; ++j ) {
123*1117Sbill 			putchar(SP);
124*1117Sbill 		}
125*1117Sbill 		escape(SET);
126*1117Sbill 	}
127*1117Sbill }
128*1117Sbill 
margin(n)129*1117Sbill margin(n)
130*1117Sbill {
131*1117Sbill 	int i;
132*1117Sbill 
133*1117Sbill 	if(margset) {
134*1117Sbill 		for( i=0; i<n; ++i) putchar(SP);
135*1117Sbill 	}
136*1117Sbill }
137*1117Sbill 
escape(c)138*1117Sbill escape(c)
139*1117Sbill {
140*1117Sbill 	putchar(ESC); putchar(c);
141*1117Sbill }
142*1117Sbill 
bs(n)143*1117Sbill bs(n)
144*1117Sbill {
145*1117Sbill 	while (n--) putchar(BS);
146*1117Sbill }
147*1117Sbill 
nl()148*1117Sbill nl()
149*1117Sbill {
150*1117Sbill 	putchar(NL);
151*1117Sbill }
152*1117Sbill 
153*1117Sbill 
154*1117Sbill 
155*1117Sbill /* ======== terminal types ======== */
156*1117Sbill 
dasi450()157*1117Sbill dasi450()
158*1117Sbill {
159*1117Sbill 	struct sgttyb t;
160*1117Sbill 	gtty(0,&t);
161*1117Sbill 	t.sg_flags &= ~ALLDELAY;
162*1117Sbill 	stty(0,&t);
163*1117Sbill 	clear(8); bs(16); margin(8); escape(MGN); nl(); tabs(16);
164*1117Sbill 	escape(RHM); nl();
165*1117Sbill }
166*1117Sbill 
tty37()167*1117Sbill tty37()
168*1117Sbill {
169*1117Sbill 	putchar(SI); clear(40); bs(8); tabs(9); nl();
170*1117Sbill }
171*1117Sbill 
dasi300()172*1117Sbill dasi300()
173*1117Sbill {
174*1117Sbill 	clear(8); tabs(15); nl();
175*1117Sbill }
176*1117Sbill 
tn300()177*1117Sbill tn300()
178*1117Sbill {
179*1117Sbill 	struct sgttyb t;
180*1117Sbill 	gtty(0,&t);
181*1117Sbill 	t.sg_flags &= ~ALLDELAY;
182*1117Sbill 	t.sg_flags |= CR1|BS1;
183*1117Sbill 	stty(0,&t);
184*1117Sbill 	clear(8); margin(8); escape(SET); tabs(14); nl();
185*1117Sbill }
186*1117Sbill 
hp2645()187*1117Sbill hp2645()
188*1117Sbill {
189*1117Sbill 	escape('3'); /*clr*/
190*1117Sbill 	putchar(CR);
191*1117Sbill 	tabs(10);
192*1117Sbill 	nl();
193*1117Sbill }
194*1117Sbill 
misc()195*1117Sbill misc()
196*1117Sbill {
197*1117Sbill 	tabs(14); nl();
198*1117Sbill }
199