xref: /csrg-svn/usr.bin/tn3270/ctlr/options.c (revision 30016)
1*30016Sminshall /*
2*30016Sminshall  *	Copyright (c) 1984, 1985, 1986 by the Regents of the
3*30016Sminshall  *	University of California and by Gregory Glenn Minshall.
4*30016Sminshall  *
5*30016Sminshall  *	Permission to use, copy, modify, and distribute these
6*30016Sminshall  *	programs and their documentation for any purpose and
7*30016Sminshall  *	without fee is hereby granted, provided that this
8*30016Sminshall  *	copyright and permission appear on all copies and
9*30016Sminshall  *	supporting documentation, the name of the Regents of
10*30016Sminshall  *	the University of California not be used in advertising
11*30016Sminshall  *	or publicity pertaining to distribution of the programs
12*30016Sminshall  *	without specific prior permission, and notice be given in
13*30016Sminshall  *	supporting documentation that copying and distribution is
14*30016Sminshall  *	by permission of the Regents of the University of California
15*30016Sminshall  *	and by Gregory Glenn Minshall.  Neither the Regents of the
16*30016Sminshall  *	University of California nor Gregory Glenn Minshall make
17*30016Sminshall  *	representations about the suitability of this software
18*30016Sminshall  *	for any purpose.  It is provided "as is" without
19*30016Sminshall  *	express or implied warranty.
20*30016Sminshall  */
21*30016Sminshall 
22*30016Sminshall #ifndef	lint
23*30016Sminshall static	char	sccsid[] = "@(#)options.c	3.1  10/29/86";
24*30016Sminshall #endif	/* ndef lint */
25*30016Sminshall 
26*30016Sminshall /*
27*30016Sminshall  * this file contains the definitions, initialization, and processing of
28*30016Sminshall  *	commands to handle the various local options (APL ON, etc.)
29*30016Sminshall  */
30*30016Sminshall 
31*30016Sminshall #include "options.h"
32*30016Sminshall 
33*30016Sminshall #include "../system/globals.h"
34*30016Sminshall #include "options.ext"
35*30016Sminshall 
36*30016Sminshall void
37*30016Sminshall OptInit()
38*30016Sminshall {
39*30016Sminshall     register int i;
40*30016Sminshall 
41*30016Sminshall     OptAPLmode = 0;
42*30016Sminshall     OptNullProcessing = 1;		/* improved null processing */
43*30016Sminshall     OptZonesMode = 0;		/* zones mode off */
44*30016Sminshall     OptEnterNL = 0;		/* regular enter/new line keys */
45*30016Sminshall     OptColFieldTab = 0;		/* regular column/field tab keys */
46*30016Sminshall     OptPacing = 1;			/* do pacing */
47*30016Sminshall     OptAlphaInNumeric = 0;		/* allow alpha in numeric fields */
48*30016Sminshall     for (i = 0; i < sizeof OptColTabs; i++) {
49*30016Sminshall 	OptColTabs[i] = ((i%8) == 0);	/* every 8 columns */
50*30016Sminshall     }
51*30016Sminshall     OptHome = 0;
52*30016Sminshall     OptLeftMargin = 0;
53*30016Sminshall     OptWordWrap = 0;
54*30016Sminshall }
55*30016Sminshall 
56*30016Sminshall OptOrder(pointer, count, control)
57*30016Sminshall char *pointer;
58*30016Sminshall int count;
59*30016Sminshall int control;
60*30016Sminshall {
61*30016Sminshall     int i, j, character, origCount;
62*30016Sminshall 
63*30016Sminshall     origCount = count;
64*30016Sminshall 
65*30016Sminshall     if (count == 0) {
66*30016Sminshall 	return(0);
67*30016Sminshall     }
68*30016Sminshall     character = *pointer&0xff;
69*30016Sminshall     pointer++;
70*30016Sminshall     count--;
71*30016Sminshall     switch (character) {
72*30016Sminshall     case 0xa0:
73*30016Sminshall 	OptAPLmode = 1;
74*30016Sminshall 	break;
75*30016Sminshall     case 0x61:
76*30016Sminshall 	OptAPLmode = 0;
77*30016Sminshall 	break;
78*30016Sminshall     case 0x95:
79*30016Sminshall 	OptNullProcessing = 0;
80*30016Sminshall 	break;
81*30016Sminshall     case 0xd5:
82*30016Sminshall 	OptNullProcessing = 1;
83*30016Sminshall 	break;
84*30016Sminshall     case 0xa9:
85*30016Sminshall 	OptZonesMode = 1;
86*30016Sminshall 	break;
87*30016Sminshall     case 0xe9:
88*30016Sminshall 	OptZonesMode = 0;
89*30016Sminshall 	break;
90*30016Sminshall     case 0x85:
91*30016Sminshall 	OptEnterNL = 1;
92*30016Sminshall 	break;
93*30016Sminshall     case 0xc5:
94*30016Sminshall 	OptEnterNL = 0;
95*30016Sminshall 	break;
96*30016Sminshall     case 0x83:
97*30016Sminshall 	OptColFieldTab = 1;
98*30016Sminshall 	break;
99*30016Sminshall     case 0xc3:
100*30016Sminshall 	OptColFieldTab = 0;
101*30016Sminshall 	break;
102*30016Sminshall     case 0x97:
103*30016Sminshall 	OptPacing = 0;
104*30016Sminshall 	break;
105*30016Sminshall     case 0xd7:
106*30016Sminshall 	OptPacing = 1;
107*30016Sminshall 	break;
108*30016Sminshall     case 0xa5:
109*30016Sminshall 	OptAlphaInNumeric = 1;
110*30016Sminshall 	break;
111*30016Sminshall     case 0xe5:
112*30016Sminshall 	OptAlphaInNumeric = 0;
113*30016Sminshall 	break;
114*30016Sminshall     case 0xe3:
115*30016Sminshall 	if (!control && count < 30) {
116*30016Sminshall 	    return(0);		/* want more! */
117*30016Sminshall 	}
118*30016Sminshall 	for (i = 0; i < sizeof OptColTabs; i++) {
119*30016Sminshall 	    OptColTabs[i] = 0;
120*30016Sminshall 	}
121*30016Sminshall 	if (!count) {
122*30016Sminshall 	    break;
123*30016Sminshall 	}
124*30016Sminshall 	j = (*pointer&0xff)-0x40;
125*30016Sminshall 	count--;
126*30016Sminshall 	pointer++;
127*30016Sminshall 	if (j < 0 || j >= 24) {
128*30016Sminshall 	    break;
129*30016Sminshall 	}
130*30016Sminshall 	OptHome = j;
131*30016Sminshall 	if (!count) {
132*30016Sminshall 	    break;
133*30016Sminshall 	}
134*30016Sminshall 	j = (*pointer&0xff)-0x40;
135*30016Sminshall 	count--;
136*30016Sminshall 	pointer++;
137*30016Sminshall 	if (j < 0 || j >= 80) {
138*30016Sminshall 	    break;
139*30016Sminshall 	}
140*30016Sminshall 	OptLeftMargin = j;
141*30016Sminshall 	if (!count) {
142*30016Sminshall 	    break;
143*30016Sminshall 	}
144*30016Sminshall 	i = count;
145*30016Sminshall 	if (i > 28) {
146*30016Sminshall 	    i = 28;
147*30016Sminshall 	}
148*30016Sminshall 	while (i) {
149*30016Sminshall 	    j = (*pointer&0xff)-0x40;
150*30016Sminshall 	    if (j < 0 || j >= sizeof OptColTabs) {
151*30016Sminshall 		break;
152*30016Sminshall 	    }
153*30016Sminshall 	    OptColTabs[j] = 1;
154*30016Sminshall 	    i --;
155*30016Sminshall 	    pointer++;
156*30016Sminshall 	    count--;
157*30016Sminshall 	}
158*30016Sminshall 	break;
159*30016Sminshall     case 0xa6:
160*30016Sminshall 	OptWordWrap = 1;
161*30016Sminshall 	break;
162*30016Sminshall     case 0xe6:
163*30016Sminshall 	OptWordWrap = 0;
164*30016Sminshall 	break;
165*30016Sminshall     default:
166*30016Sminshall 	break;
167*30016Sminshall     }
168*30016Sminshall     return(origCount - count);
169*30016Sminshall }
170