1 /*-
2 * Copyright (c) 1988, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8 #ifndef lint
9 static char sccsid[] = "@(#)options.c 8.1 (Berkeley) 06/06/93";
10 #endif /* not lint */
11
12 /*
13 * this file contains the definitions, initialization, and processing of
14 * commands to handle the various local options (APL ON, etc.)
15 */
16
17 #include "options.h"
18
19 #include "../general/globals.h"
20 #include "declare.h"
21
22 void
OptInit()23 OptInit()
24 {
25 register int i;
26
27 OptAPLmode = 0;
28 OptNullProcessing = 1; /* improved null processing */
29 OptZonesMode = 0; /* zones mode off */
30 OptEnterNL = 0; /* regular enter/new line keys */
31 OptColFieldTab = 0; /* regular column/field tab keys */
32 OptPacing = 1; /* do pacing */
33 OptAlphaInNumeric = 0; /* allow alpha in numeric fields */
34 for (i = 0; i < sizeof OptColTabs; i++) {
35 OptColTabs[i] = ((i%8) == 0); /* every 8 columns */
36 }
37 OptHome = 0;
38 OptLeftMargin = 0;
39 OptWordWrap = 0;
40 }
41
OptOrder(pointer,count,control)42 OptOrder(pointer, count, control)
43 unsigned char *pointer;
44 int count;
45 int control;
46 {
47 int i, j, character, origCount;
48
49 origCount = count;
50
51 if (count == 0) {
52 return(0);
53 }
54 character = *pointer&0xff;
55 pointer++;
56 count--;
57 switch (character) {
58 case 0xa0:
59 OptAPLmode = 1;
60 break;
61 case 0x61:
62 OptAPLmode = 0;
63 break;
64 case 0x95:
65 OptNullProcessing = 0;
66 break;
67 case 0xd5:
68 OptNullProcessing = 1;
69 break;
70 case 0xa9:
71 OptZonesMode = 1;
72 break;
73 case 0xe9:
74 OptZonesMode = 0;
75 break;
76 case 0x85:
77 OptEnterNL = 1;
78 break;
79 case 0xc5:
80 OptEnterNL = 0;
81 break;
82 case 0x83:
83 OptColFieldTab = 1;
84 break;
85 case 0xc3:
86 OptColFieldTab = 0;
87 break;
88 case 0x97:
89 OptPacing = 0;
90 break;
91 case 0xd7:
92 OptPacing = 1;
93 break;
94 case 0xa5:
95 OptAlphaInNumeric = 1;
96 break;
97 case 0xe5:
98 OptAlphaInNumeric = 0;
99 break;
100 case 0xe3:
101 if (!control && count < 30) {
102 return(0); /* want more! */
103 }
104 for (i = 0; i < sizeof OptColTabs; i++) {
105 OptColTabs[i] = 0;
106 }
107 if (!count) {
108 break;
109 }
110 j = (*pointer&0xff)-0x40;
111 count--;
112 pointer++;
113 if (j < 0 || j >= 24) {
114 break;
115 }
116 OptHome = j;
117 if (!count) {
118 break;
119 }
120 j = (*pointer&0xff)-0x40;
121 count--;
122 pointer++;
123 if (j < 0 || j >= 80) {
124 break;
125 }
126 OptLeftMargin = j;
127 if (!count) {
128 break;
129 }
130 i = count;
131 if (i > 28) {
132 i = 28;
133 }
134 while (i) {
135 j = (*pointer&0xff)-0x40;
136 if (j < 0 || j >= sizeof OptColTabs) {
137 break;
138 }
139 OptColTabs[j] = 1;
140 i --;
141 pointer++;
142 count--;
143 }
144 break;
145 case 0xa6:
146 OptWordWrap = 1;
147 break;
148 case 0xe6:
149 OptWordWrap = 0;
150 break;
151 default:
152 break;
153 }
154 return(origCount - count);
155 }
156