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