xref: /original-bsd/usr.bin/tn3270/ctlr/oia.h (revision d919d844)
1 /*
2  * Copyright (c) 1988 Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted
6  * provided that the above copyright notice and this paragraph are
7  * duplicated in all such forms and that any documentation,
8  * advertising materials, and other materials related to such
9  * distribution and use acknowledge that the software was developed
10  * by the University of California, Berkeley.  The name of the
11  * University may not be used to endorse or promote products derived
12  * from this software without specific prior written permission.
13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  *	@(#)oia.h	3.3 (Berkeley) 06/29/88
18  */
19 
20 /*
21  * This file describes the Operator Information Area in the 3270.
22  *
23  * Our OIA looks like that used by the 3270 PC and PC 3270 products.
24  */
25 
26 #define	INCLUDED_OIA
27 
28 typedef struct {
29     char
30 	online_ownership,
31 	character_selection,
32 	shift_state,
33 	pss_group_1,
34 	highlight_group_1,
35 	color_group_1,
36 	insert,
37 	input_inhibited[5],
38 	pss_group_2,
39 	highlight_group_2,
40 	color_group_2,
41 	comm_error_reminder,
42 	printer_status,
43 	reserved_group_14,
44 	reserved_group_15,
45 	autokey_play_record_status,
46 	autokey_abort_pause_status,
47 	enlarge_state;
48 } OIA;
49 
50 /* Bits in online_ownership */
51 #define	OIA_SETUP		0x80
52 #define	OIA_TEST		0x40
53 #define	OIA_SSCP_LU		0x20
54 #define	OIA_LU_LU		0x10
55 #define	OIA_UNOWNED		0x08
56 #define	OIA_SUBSYSTEM_READY	0x04
57 
58 /* Bit in character_selection */
59 #define	OIA_EXTENDED_SELECT	0x80
60 #define	OIA_APL			0x40
61 #define	OIA_KANA		0x20
62 #define	OIA_ALPHA		0x10
63 #define	OIA_TEXT		0x08
64 
65 /* Bits in shift_state */
66 #define	OIA_NUMERIC		0x80
67 #define	OIA_UPPER_SHIFT		0x40
68 
69 /* Bits in pss_group_1, highlight_group_1, and color_group_1 */
70 #define	OIA_SELECTABLE		0x80
71 #define	OIA_FIELD_INHERIT	0x40
72 
73 /* Bits in insert */
74 #define	OIA_INSERT_MODE		0x80
75 
76 /* We define this to be a 'long' followed by a 'char' (5 bytes) */
77 
78 #define	OIA_NON_RESETTABLE	0x80
79 #define	OIA_SECURITY_KEY	0x40
80 #define	OIA_MACHINE_CHECK	0x20
81 #define	OIA_COMM_CHECK		0x10
82 #define	OIA_PROGRAM_CHECK	0x08
83 #define	OIA_RETRY		0x04
84 #define	OIA_DEVICE_NOT_WORKING	0x02
85 #define	OIA_DEVICE_VERY_BUSY	0x01
86 
87 #define	OIA_DEVICE_BUSY		  0x80
88 #define	OIA_TERMINAL_WAIT	  0x40
89 #define	OIA_MINUS_SYMBOL	  0x20
90 #define	OIA_MINUS_FUNCTION	  0x10
91 #define	OIA_TOO_MUCH_ENTERED	  0x08
92 #define	OIA_NOT_ENOUGH_ENTERED	  0x04
93 #define	OIA_WRONG_NUMBER	  0x02
94 #define	OIA_NUMERIC_FIELD	  0x01
95 
96 #define	OIA_OP_UNAUTHORIZED	    0x80
97 #define	OIA_OP_UNAUTHORIZED_MIN	    0x40
98 #define	OIA_INVALID_DEAD_KEY_COMBO  0x20
99 #define	OIA_WRONG_PLACE		    0x10
100 
101 #define	OIA_MESSAGE_PENDING	      0x80
102 #define	OIA_PARTITION_WAIT	      0x40
103 #define	OIA_SYSTEM_WAIT		      0x20
104 #define	OIA_HARDWARE_MISMATCH	      0x10
105 #define	OIA_LOGICAL_TERM_NOT_CONF     0x08
106 
107 
108 #define	OIA_AUTOKEY_INHIBIT	        0x80
109 #define	OIA_API_INHIBIT		        0x40
110 
111 /* Bits in pss_group_2 */
112 #define	OIA_PS_SELECTED		0x80
113 #define	OIA_PC_DISPLAY_DISABLE	0x40
114 
115 /* Bits in highlight_group_2 and color_group_2 */
116 #define	OIA_SELECTED		0x80
117 
118 /* Bits in comm_error_reminder */
119 #define	OIA_COMM_ERROR		0x80
120 #define	OIA_RTM			0x40
121 
122 /* Bits in printer_status */
123 #define	OIA_PRINT_NOT_CUSTOM	0x80
124 #define	OIA_PRINTER_MALFUNCTION	0x40
125 #define	OIA_PRINTER_PRINTING	0x20
126 #define	OIA_ASSIGN_PRINTER	0x10
127 #define	OIA_WHAT_PRINTER	0x08
128 #define	OIA_PRINTER_ASSIGNMENT	0x04
129 
130 /* Bits in autokey_play_record_status */
131 #define	OIA_PLAY		0x80
132 #define	OIA_RECORD		0x40
133 
134 /* Bits in autokey_abort_pause_status */
135 #define	OIA_RECORDING_OVERFLOW	0x80
136 #define	OIA_PAUSE		0x40
137 
138 /* Bits in enlarge_state */
139 #define	OIA_WINDOW_IS_ENLARGED	0x80
140 
141 /* Define functions to set and read the oia */
142 
143 #define	SetOiaOnlineA(oia) SetOiaMyJob((oia))		/* Side-effect */
144 #define	ResetOiaOnlineA(oia) \
145 	/* Nothing defined for this */
146 
147 #define	IsOiaReady3274(oia)	((oia)->online_ownership&OIA_SUBSYSTEM_READY)
148 #define	ResetOiaReady3274(oia)	(oia)->online_ownership &= ~OIA_SUBSYSTEM_READY
149 #define	SetOiaReady3274(oia)	(oia)->online_ownership |= OIA_SUBSYSTEM_READY
150 
151 #define	IsOiaMyJob(oia)		((oia)->online_ownership&OIA_LU_LU)
152 #define	ResetOiaMyJob(oia)	(oia)->online_ownership &= ~OIA_LU_LU
153 #define	SetOiaMyJob(oia)	(oia)->online_ownership |= OIA_LU_LU
154 
155 #define	IsOiaInsert(oia)	((oia)->online_ownership&OIA_INSERT_MODE)
156 #define	ResetOiaInsert(oia)	(oia)->online_ownership &= ~OIA_INSERT_MODE
157 #define	SetOiaInsert(oia)	(oia)->online_ownership |= OIA_INSERT_MODE
158 
159 #define	IsOiaSystemLocked(oia)	((oia)->input_inhibited[3]&OIA_SYSTEM_WAIT)
160 #define	ResetOiaSystemLocked(oia) \
161 				(oia)->input_inhibited[3] &= ~OIA_SYSTEM_WAIT
162 #define	SetOiaSystemLocked(oia)	(oia)->input_inhibited[3] |= OIA_SYSTEM_WAIT
163 
164 #define	IsOiaTWait(oia)		((oia)->input_inhibited[1]&OIA_TERMINAL_WAIT)
165 #define	ResetOiaTWait(oia)	(oia)->input_inhibited[1] &= ~OIA_TERMINAL_WAIT
166 #define	SetOiaTWait(oia)	(oia)->input_inhibited[1] |= OIA_TERMINAL_WAIT
167 
168 #define	IsOiaApiInhibit(oia)	((oia)->input_inhibited[4] &   OIA_API_INHIBIT)
169 #define	ResetOiaApiInhibit(oia)	((oia)->input_inhibited[4] &= ~OIA_API_INHIBIT)
170 #define	SetOiaApiInhibit(oia)	((oia)->input_inhibited[4] |=  OIA_API_INHIBIT)
171 
172 /* A macro to let the world know that someone has modified the OIA. */
173 #define	SetOiaModified()	oia_modified = 1
174 #define	SetPsModified()		ps_modified = 1
175