130016Sminshall /* 230016Sminshall * Copyright (c) 1984, 1985, 1986 by the Regents of the 330016Sminshall * University of California and by Gregory Glenn Minshall. 430016Sminshall * 530016Sminshall * Permission to use, copy, modify, and distribute these 630016Sminshall * programs and their documentation for any purpose and 730016Sminshall * without fee is hereby granted, provided that this 830016Sminshall * copyright and permission appear on all copies and 930016Sminshall * supporting documentation, the name of the Regents of 1030016Sminshall * the University of California not be used in advertising 1130016Sminshall * or publicity pertaining to distribution of the programs 1230016Sminshall * without specific prior permission, and notice be given in 1330016Sminshall * supporting documentation that copying and distribution is 1430016Sminshall * by permission of the Regents of the University of California 1530016Sminshall * and by Gregory Glenn Minshall. Neither the Regents of the 1630016Sminshall * University of California nor Gregory Glenn Minshall make 1730016Sminshall * representations about the suitability of this software 1830016Sminshall * for any purpose. It is provided "as is" without 1930016Sminshall * express or implied warranty. 2030016Sminshall */ 2130016Sminshall 2230016Sminshall #ifndef lint 2330016Sminshall static char sccsid[] = "@(#)options.c 3.1 10/29/86"; 2430016Sminshall #endif /* ndef lint */ 2530016Sminshall 2630016Sminshall /* 2730016Sminshall * this file contains the definitions, initialization, and processing of 2830016Sminshall * commands to handle the various local options (APL ON, etc.) 2930016Sminshall */ 3030016Sminshall 3130016Sminshall #include "options.h" 3230016Sminshall 33*31177Sminshall #include "../general/globals.h" 3430016Sminshall #include "options.ext" 3530016Sminshall 3630016Sminshall void 3730016Sminshall OptInit() 3830016Sminshall { 3930016Sminshall register int i; 4030016Sminshall 4130016Sminshall OptAPLmode = 0; 4230016Sminshall OptNullProcessing = 1; /* improved null processing */ 4330016Sminshall OptZonesMode = 0; /* zones mode off */ 4430016Sminshall OptEnterNL = 0; /* regular enter/new line keys */ 4530016Sminshall OptColFieldTab = 0; /* regular column/field tab keys */ 4630016Sminshall OptPacing = 1; /* do pacing */ 4730016Sminshall OptAlphaInNumeric = 0; /* allow alpha in numeric fields */ 4830016Sminshall for (i = 0; i < sizeof OptColTabs; i++) { 4930016Sminshall OptColTabs[i] = ((i%8) == 0); /* every 8 columns */ 5030016Sminshall } 5130016Sminshall OptHome = 0; 5230016Sminshall OptLeftMargin = 0; 5330016Sminshall OptWordWrap = 0; 5430016Sminshall } 5530016Sminshall 5630016Sminshall OptOrder(pointer, count, control) 5730016Sminshall char *pointer; 5830016Sminshall int count; 5930016Sminshall int control; 6030016Sminshall { 6130016Sminshall int i, j, character, origCount; 6230016Sminshall 6330016Sminshall origCount = count; 6430016Sminshall 6530016Sminshall if (count == 0) { 6630016Sminshall return(0); 6730016Sminshall } 6830016Sminshall character = *pointer&0xff; 6930016Sminshall pointer++; 7030016Sminshall count--; 7130016Sminshall switch (character) { 7230016Sminshall case 0xa0: 7330016Sminshall OptAPLmode = 1; 7430016Sminshall break; 7530016Sminshall case 0x61: 7630016Sminshall OptAPLmode = 0; 7730016Sminshall break; 7830016Sminshall case 0x95: 7930016Sminshall OptNullProcessing = 0; 8030016Sminshall break; 8130016Sminshall case 0xd5: 8230016Sminshall OptNullProcessing = 1; 8330016Sminshall break; 8430016Sminshall case 0xa9: 8530016Sminshall OptZonesMode = 1; 8630016Sminshall break; 8730016Sminshall case 0xe9: 8830016Sminshall OptZonesMode = 0; 8930016Sminshall break; 9030016Sminshall case 0x85: 9130016Sminshall OptEnterNL = 1; 9230016Sminshall break; 9330016Sminshall case 0xc5: 9430016Sminshall OptEnterNL = 0; 9530016Sminshall break; 9630016Sminshall case 0x83: 9730016Sminshall OptColFieldTab = 1; 9830016Sminshall break; 9930016Sminshall case 0xc3: 10030016Sminshall OptColFieldTab = 0; 10130016Sminshall break; 10230016Sminshall case 0x97: 10330016Sminshall OptPacing = 0; 10430016Sminshall break; 10530016Sminshall case 0xd7: 10630016Sminshall OptPacing = 1; 10730016Sminshall break; 10830016Sminshall case 0xa5: 10930016Sminshall OptAlphaInNumeric = 1; 11030016Sminshall break; 11130016Sminshall case 0xe5: 11230016Sminshall OptAlphaInNumeric = 0; 11330016Sminshall break; 11430016Sminshall case 0xe3: 11530016Sminshall if (!control && count < 30) { 11630016Sminshall return(0); /* want more! */ 11730016Sminshall } 11830016Sminshall for (i = 0; i < sizeof OptColTabs; i++) { 11930016Sminshall OptColTabs[i] = 0; 12030016Sminshall } 12130016Sminshall if (!count) { 12230016Sminshall break; 12330016Sminshall } 12430016Sminshall j = (*pointer&0xff)-0x40; 12530016Sminshall count--; 12630016Sminshall pointer++; 12730016Sminshall if (j < 0 || j >= 24) { 12830016Sminshall break; 12930016Sminshall } 13030016Sminshall OptHome = j; 13130016Sminshall if (!count) { 13230016Sminshall break; 13330016Sminshall } 13430016Sminshall j = (*pointer&0xff)-0x40; 13530016Sminshall count--; 13630016Sminshall pointer++; 13730016Sminshall if (j < 0 || j >= 80) { 13830016Sminshall break; 13930016Sminshall } 14030016Sminshall OptLeftMargin = j; 14130016Sminshall if (!count) { 14230016Sminshall break; 14330016Sminshall } 14430016Sminshall i = count; 14530016Sminshall if (i > 28) { 14630016Sminshall i = 28; 14730016Sminshall } 14830016Sminshall while (i) { 14930016Sminshall j = (*pointer&0xff)-0x40; 15030016Sminshall if (j < 0 || j >= sizeof OptColTabs) { 15130016Sminshall break; 15230016Sminshall } 15330016Sminshall OptColTabs[j] = 1; 15430016Sminshall i --; 15530016Sminshall pointer++; 15630016Sminshall count--; 15730016Sminshall } 15830016Sminshall break; 15930016Sminshall case 0xa6: 16030016Sminshall OptWordWrap = 1; 16130016Sminshall break; 16230016Sminshall case 0xe6: 16330016Sminshall OptWordWrap = 0; 16430016Sminshall break; 16530016Sminshall default: 16630016Sminshall break; 16730016Sminshall } 16830016Sminshall return(origCount - count); 16930016Sminshall } 170