xref: /csrg-svn/usr.bin/tn3270/ctlr/oia.c (revision 31087)
1*31087Sminshall /*
2*31087Sminshall  * Routines to maintain the Operator Information Area.
3*31087Sminshall  */
4*31087Sminshall 
5*31087Sminshall #include "oia.h"
6*31087Sminshall 
7*31087Sminshall OIA OperatorInformationArea;
8*31087Sminshall 
9*31087Sminshall static int
10*31087Sminshall     Insert,
11*31087Sminshall     SystemLocked,
12*31087Sminshall     PWait,
13*31087Sminshall     TWait,
14*31087Sminshall     OnlineA,
15*31087Sminshall     Ready3274,
16*31087Sminshall     MyJob;
17*31087Sminshall 
18*31087Sminshall #define	X_AREA_SYSTEM	0xc6, "\xb2\xb8"
19*31087Sminshall #define	X_AREA_CLOCK	0xc6, "\xf2\xf3"
20*31087Sminshall #define	X_AREA_NULL	0xc6, ""
21*31087Sminshall 
22*31087Sminshall static void
23*31087Sminshall SetXarea(x, xwhy)
24*31087Sminshall int	x;
25*31087Sminshall char	*xwhy;
26*31087Sminshall {
27*31087Sminshall     register int i;
28*31087Sminshall 
29*31087Sminshall     OperatorInformationArea.x = x;
30*31087Sminshall     for (i = 0; i < sizeof OperatorInformationArea.xwhy; i++) {
31*31087Sminshall 	if (*xwhy) {
32*31087Sminshall 	    OperatorInformationArea.xwhy[i] = *xwhy++;
33*31087Sminshall 	} else {
34*31087Sminshall 	    OperatorInformationArea.xwhy[i] = 0;
35*31087Sminshall 	}
36*31087Sminshall     }
37*31087Sminshall }
38*31087Sminshall 
39*31087Sminshall 
40*31087Sminshall SetInsert(onoff)
41*31087Sminshall int	onoff;
42*31087Sminshall {
43*31087Sminshall     Insert = onoff;
44*31087Sminshall 
45*31087Sminshall     if (onoff) {
46*31087Sminshall 	OperatorInformationArea.insert = OIA_INSERT_ON;
47*31087Sminshall     } else {
48*31087Sminshall 	OperatorInformationArea.insert = 0;
49*31087Sminshall     }
50*31087Sminshall }
51*31087Sminshall 
52*31087Sminshall SetSystemLocked(onoff)
53*31087Sminshall int	onoff;
54*31087Sminshall {
55*31087Sminshall     SystemLocked = onoff;
56*31087Sminshall 
57*31087Sminshall     if ((PWait == 0) && (TWait == 0)) {
58*31087Sminshall 	SetXArea(X_AREA_SYSTEM);
59*31087Sminshall     }
60*31087Sminshall }
61*31087Sminshall 
62*31087Sminshall SetPWait(onoff)
63*31087Sminshall int	onoff;
64*31087Sminshall {
65*31087Sminshall     PWait = onoff;
66*31087Sminshall 
67*31087Sminshall     if (onoff) {
68*31087Sminshall 	SetXArea(X_AREA_CLOCK);
69*31087Sminshall     } else {
70*31087Sminshall 	if (SystemLocked) {
71*31087Sminshall 	    SetXArea(X_AREA_SYSTEM);
72*31087Sminshall 	} else {
73*31087Sminshall 	    SetXArea(X_AREA_NULL);
74*31087Sminshall 	}
75*31087Sminshall     }
76*31087Sminshall }
77*31087Sminshall 
78*31087Sminshall SetTWait(onoff)
79*31087Sminshall int	onoff;
80*31087Sminshall {
81*31087Sminshall     TWait = onoff;
82*31087Sminshall 
83*31087Sminshall     SetPWait(onoff);
84*31087Sminshall }
85*31087Sminshall 
86*31087Sminshall SetOnlineA(onoff)
87*31087Sminshall int	onoff;
88*31087Sminshall {
89*31087Sminshall     OnlineA = onoff;
90*31087Sminshall 
91*31087Sminshall     if (onoff) {
92*31087Sminshall 	SetMyJob(1);
93*31087Sminshall 	OperatorInformationArea.online = OIA_ONLINE_A;
94*31087Sminshall     } else {
95*31087Sminshall 	OperatorInformationArea.online = 0;
96*31087Sminshall     }
97*31087Sminshall }
98*31087Sminshall 
99*31087Sminshall SetReady3274(onoff)
100*31087Sminshall int	onoff;
101*31087Sminshall {
102*31087Sminshall     Ready3274 = onoff;
103*31087Sminshall 
104*31087Sminshall     if (onoff) {
105*31087Sminshall 	OperatorInformationArea.ready = OIA_READY_3274;
106*31087Sminshall     } else {
107*31087Sminshall 	OperatorInformationArea.ready = 0;
108*31087Sminshall     }
109*31087Sminshall }
110*31087Sminshall 
111*31087Sminshall SetMyJob(onoff)
112*31087Sminshall int	onoff;
113*31087Sminshall {
114*31087Sminshall     MyJob = onoff;
115*31087Sminshall 
116*31087Sminshall     if (onoff) {
117*31087Sminshall 	OperatorInformationArea.ownership = OIA_OWNERSHIP_MYJOB;
118*31087Sminshall     } else {
119*31087Sminshall 	OperatorInformationArea.ownership = 0;
120*31087Sminshall     }
121*31087Sminshall }
122