Release 4.1
[unix-history] / usr / src / usr.bin / tn3270 / ctlr / options.c
CommitLineData
b3ef1ba3 1/*
ee01fcaa
KB
2 * Copyright (c) 1988 Regents of the University of California.
3 * All rights reserved.
b3ef1ba3 4 *
ee01fcaa 5 * Redistribution and use in source and binary forms are permitted
b36fc510
KB
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
b3ef1ba3
GM
16 */
17
ee01fcaa 18#ifndef lint
d43d1075 19static char sccsid[] = "@(#)options.c 4.1 (Berkeley) %G%";
ee01fcaa 20#endif /* not lint */
b3ef1ba3
GM
21
22/*
23 * this file contains the definitions, initialization, and processing of
24 * commands to handle the various local options (APL ON, etc.)
25 */
26
27#include "options.h"
28
96a643fe 29#include "../general/globals.h"
c90e19e7 30#include "declare.h"
b3ef1ba3
GM
31
32void
33OptInit()
34{
35 register int i;
36
37 OptAPLmode = 0;
38 OptNullProcessing = 1; /* improved null processing */
39 OptZonesMode = 0; /* zones mode off */
40 OptEnterNL = 0; /* regular enter/new line keys */
41 OptColFieldTab = 0; /* regular column/field tab keys */
42 OptPacing = 1; /* do pacing */
43 OptAlphaInNumeric = 0; /* allow alpha in numeric fields */
44 for (i = 0; i < sizeof OptColTabs; i++) {
45 OptColTabs[i] = ((i%8) == 0); /* every 8 columns */
46 }
47 OptHome = 0;
48 OptLeftMargin = 0;
49 OptWordWrap = 0;
50}
51
52OptOrder(pointer, count, control)
c90e19e7 53unsigned char *pointer;
b3ef1ba3
GM
54int count;
55int control;
56{
57 int i, j, character, origCount;
58
59 origCount = count;
60
61 if (count == 0) {
62 return(0);
63 }
64 character = *pointer&0xff;
65 pointer++;
66 count--;
67 switch (character) {
68 case 0xa0:
69 OptAPLmode = 1;
70 break;
71 case 0x61:
72 OptAPLmode = 0;
73 break;
74 case 0x95:
75 OptNullProcessing = 0;
76 break;
77 case 0xd5:
78 OptNullProcessing = 1;
79 break;
80 case 0xa9:
81 OptZonesMode = 1;
82 break;
83 case 0xe9:
84 OptZonesMode = 0;
85 break;
86 case 0x85:
87 OptEnterNL = 1;
88 break;
89 case 0xc5:
90 OptEnterNL = 0;
91 break;
92 case 0x83:
93 OptColFieldTab = 1;
94 break;
95 case 0xc3:
96 OptColFieldTab = 0;
97 break;
98 case 0x97:
99 OptPacing = 0;
100 break;
101 case 0xd7:
102 OptPacing = 1;
103 break;
104 case 0xa5:
105 OptAlphaInNumeric = 1;
106 break;
107 case 0xe5:
108 OptAlphaInNumeric = 0;
109 break;
110 case 0xe3:
111 if (!control && count < 30) {
112 return(0); /* want more! */
113 }
114 for (i = 0; i < sizeof OptColTabs; i++) {
115 OptColTabs[i] = 0;
116 }
117 if (!count) {
118 break;
119 }
120 j = (*pointer&0xff)-0x40;
121 count--;
122 pointer++;
123 if (j < 0 || j >= 24) {
124 break;
125 }
126 OptHome = j;
127 if (!count) {
128 break;
129 }
130 j = (*pointer&0xff)-0x40;
131 count--;
132 pointer++;
133 if (j < 0 || j >= 80) {
134 break;
135 }
136 OptLeftMargin = j;
137 if (!count) {
138 break;
139 }
140 i = count;
141 if (i > 28) {
142 i = 28;
143 }
144 while (i) {
145 j = (*pointer&0xff)-0x40;
146 if (j < 0 || j >= sizeof OptColTabs) {
147 break;
148 }
149 OptColTabs[j] = 1;
150 i --;
151 pointer++;
152 count--;
153 }
154 break;
155 case 0xa6:
156 OptWordWrap = 1;
157 break;
158 case 0xe6:
159 OptWordWrap = 0;
160 break;
161 default:
162 break;
163 }
164 return(origCount - count);
165}