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