xref: /csrg-svn/usr.bin/tn3270/ctlr/options.c (revision 31177)
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