xref: /csrg-svn/usr.bin/tn3270/ctlr/options.c (revision 62329)
148756Sbostic /*-
2*62329Sbostic  * Copyright (c) 1988, 1993
3*62329Sbostic  *	The Regents of the University of California.  All rights reserved.
430016Sminshall  *
548756Sbostic  * %sccs.include.redist.c%
630016Sminshall  */
730016Sminshall 
833816Sbostic #ifndef lint
9*62329Sbostic static char sccsid[] = "@(#)options.c	8.1 (Berkeley) 06/06/93";
1033816Sbostic #endif /* not lint */
1130016Sminshall 
1230016Sminshall /*
1330016Sminshall  * this file contains the definitions, initialization, and processing of
1430016Sminshall  *	commands to handle the various local options (APL ON, etc.)
1530016Sminshall  */
1630016Sminshall 
1730016Sminshall #include "options.h"
1830016Sminshall 
1931177Sminshall #include "../general/globals.h"
2035421Sminshall #include "declare.h"
2130016Sminshall 
2230016Sminshall void
OptInit()2330016Sminshall OptInit()
2430016Sminshall {
2530016Sminshall     register int i;
2630016Sminshall 
2730016Sminshall     OptAPLmode = 0;
2830016Sminshall     OptNullProcessing = 1;		/* improved null processing */
2930016Sminshall     OptZonesMode = 0;		/* zones mode off */
3030016Sminshall     OptEnterNL = 0;		/* regular enter/new line keys */
3130016Sminshall     OptColFieldTab = 0;		/* regular column/field tab keys */
3230016Sminshall     OptPacing = 1;			/* do pacing */
3330016Sminshall     OptAlphaInNumeric = 0;		/* allow alpha in numeric fields */
3430016Sminshall     for (i = 0; i < sizeof OptColTabs; i++) {
3530016Sminshall 	OptColTabs[i] = ((i%8) == 0);	/* every 8 columns */
3630016Sminshall     }
3730016Sminshall     OptHome = 0;
3830016Sminshall     OptLeftMargin = 0;
3930016Sminshall     OptWordWrap = 0;
4030016Sminshall }
4130016Sminshall 
OptOrder(pointer,count,control)4230016Sminshall OptOrder(pointer, count, control)
4335421Sminshall unsigned char *pointer;
4430016Sminshall int count;
4530016Sminshall int control;
4630016Sminshall {
4730016Sminshall     int i, j, character, origCount;
4830016Sminshall 
4930016Sminshall     origCount = count;
5030016Sminshall 
5130016Sminshall     if (count == 0) {
5230016Sminshall 	return(0);
5330016Sminshall     }
5430016Sminshall     character = *pointer&0xff;
5530016Sminshall     pointer++;
5630016Sminshall     count--;
5730016Sminshall     switch (character) {
5830016Sminshall     case 0xa0:
5930016Sminshall 	OptAPLmode = 1;
6030016Sminshall 	break;
6130016Sminshall     case 0x61:
6230016Sminshall 	OptAPLmode = 0;
6330016Sminshall 	break;
6430016Sminshall     case 0x95:
6530016Sminshall 	OptNullProcessing = 0;
6630016Sminshall 	break;
6730016Sminshall     case 0xd5:
6830016Sminshall 	OptNullProcessing = 1;
6930016Sminshall 	break;
7030016Sminshall     case 0xa9:
7130016Sminshall 	OptZonesMode = 1;
7230016Sminshall 	break;
7330016Sminshall     case 0xe9:
7430016Sminshall 	OptZonesMode = 0;
7530016Sminshall 	break;
7630016Sminshall     case 0x85:
7730016Sminshall 	OptEnterNL = 1;
7830016Sminshall 	break;
7930016Sminshall     case 0xc5:
8030016Sminshall 	OptEnterNL = 0;
8130016Sminshall 	break;
8230016Sminshall     case 0x83:
8330016Sminshall 	OptColFieldTab = 1;
8430016Sminshall 	break;
8530016Sminshall     case 0xc3:
8630016Sminshall 	OptColFieldTab = 0;
8730016Sminshall 	break;
8830016Sminshall     case 0x97:
8930016Sminshall 	OptPacing = 0;
9030016Sminshall 	break;
9130016Sminshall     case 0xd7:
9230016Sminshall 	OptPacing = 1;
9330016Sminshall 	break;
9430016Sminshall     case 0xa5:
9530016Sminshall 	OptAlphaInNumeric = 1;
9630016Sminshall 	break;
9730016Sminshall     case 0xe5:
9830016Sminshall 	OptAlphaInNumeric = 0;
9930016Sminshall 	break;
10030016Sminshall     case 0xe3:
10130016Sminshall 	if (!control && count < 30) {
10230016Sminshall 	    return(0);		/* want more! */
10330016Sminshall 	}
10430016Sminshall 	for (i = 0; i < sizeof OptColTabs; i++) {
10530016Sminshall 	    OptColTabs[i] = 0;
10630016Sminshall 	}
10730016Sminshall 	if (!count) {
10830016Sminshall 	    break;
10930016Sminshall 	}
11030016Sminshall 	j = (*pointer&0xff)-0x40;
11130016Sminshall 	count--;
11230016Sminshall 	pointer++;
11330016Sminshall 	if (j < 0 || j >= 24) {
11430016Sminshall 	    break;
11530016Sminshall 	}
11630016Sminshall 	OptHome = j;
11730016Sminshall 	if (!count) {
11830016Sminshall 	    break;
11930016Sminshall 	}
12030016Sminshall 	j = (*pointer&0xff)-0x40;
12130016Sminshall 	count--;
12230016Sminshall 	pointer++;
12330016Sminshall 	if (j < 0 || j >= 80) {
12430016Sminshall 	    break;
12530016Sminshall 	}
12630016Sminshall 	OptLeftMargin = j;
12730016Sminshall 	if (!count) {
12830016Sminshall 	    break;
12930016Sminshall 	}
13030016Sminshall 	i = count;
13130016Sminshall 	if (i > 28) {
13230016Sminshall 	    i = 28;
13330016Sminshall 	}
13430016Sminshall 	while (i) {
13530016Sminshall 	    j = (*pointer&0xff)-0x40;
13630016Sminshall 	    if (j < 0 || j >= sizeof OptColTabs) {
13730016Sminshall 		break;
13830016Sminshall 	    }
13930016Sminshall 	    OptColTabs[j] = 1;
14030016Sminshall 	    i --;
14130016Sminshall 	    pointer++;
14230016Sminshall 	    count--;
14330016Sminshall 	}
14430016Sminshall 	break;
14530016Sminshall     case 0xa6:
14630016Sminshall 	OptWordWrap = 1;
14730016Sminshall 	break;
14830016Sminshall     case 0xe6:
14930016Sminshall 	OptWordWrap = 0;
15030016Sminshall 	break;
15130016Sminshall     default:
15230016Sminshall 	break;
15330016Sminshall     }
15430016Sminshall     return(origCount - count);
15530016Sminshall }
156