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