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 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 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