This version works better than the last.
[unix-history] / usr / src / usr.bin / tn3270 / ctlr / api.h
CommitLineData
3f328054
GM
1/*
2 * This file contains header information used by the PC API routines.
3 */
4
d4967272
GM
5#if !defined(MSDOS)
6#define far /* For 'far *' checks */
7#endif /* !defined(MSDOS) */
8
3f328054
GM
9#define API_INTERRUPT_NUMBER 0x7A /* API Interrupt Number */
10
11/*
12 * Define the gate numbers. These are returned via the Name Resolution
13 * service.
14 */
15
16#define GATE_SESSMGR 1
17#define GATE_KEYBOARD 2
18#define GATE_COPY 3
19#define GATE_OIAM 4
20
86057566
GM
21/*
22 * The names which correspond to the above gate numbers.
23 */
24
25#define NAME_SESSMGR "SESSMGR "
e75c75e7 26#define NAME_KEYBOARD "KEYBOARD"
86057566
GM
27#define NAME_COPY "COPY "
28#define NAME_OIAM "OIAM "
e75c75e7
GM
29
30
3f328054
GM
31/*
32 * Name Resolution is specified in AH.
33 */
34
35#define NAME_RESOLUTION 0x81
36
37/*
38 * Codes specified in AL for various services.
39 */
40
86057566
GM
41#define QUERY_SESSION_ID 0x01
42#define QUERY_SESSION_PARMS 0x02
43#define QUERY_SESSION_CURSOR 0x0b
3f328054 44
86057566 45#define CONNECT_TO_KEYBOARD 0x01
3f328054 46#define DISCONNECT_FROM_KEYBOARD 0x02
86057566
GM
47#define WRITE_KEYSTROKE 0x04
48#define DISABLE_INPUT 0x05
49#define ENABLE_INPUT 0x06
50
51#define COPY_STRING 0x01
52
53#define READ_OIA_GROUP 0x02
54\f
55/*
56 * For each service, we define the assoicated parameter blocks.
57 */
58
59/*
60 * Supervisor Services
61 */
62
63typedef struct {
64 char gate_name[8];
65} NameResolveParms;
66
67
68/*
69 * Session Information Services
70 */
71
72typedef struct {
73 char
74 short_name,
75 type,
76 session_id,
77 reserved,
78 long_name[8];
79} NameArrayElement;
80
81typedef struct {
82 char
83 length,
84 number_matching_session;
85 NameArrayElement
86 name_array_element; /* Variable number */
87} NameArray;
88
89typedef struct {
90 char
91 rc,
92 function_id,
93 option_code,
94 data_code;
95 NameArray far
96 *name_array;
97 char
98 long_name[8];
99} QuerySessionIdParms;
100
101typedef struct {
102 char
103 rc,
104 function_id,
105 session_id,
106 reserved,
107 session_type,
108 session_characteristics,
109 rows,
110 columns;
111 char far
112 *presentation_space;
65c9fa1f 113} QuerySessionParametersParms;
86057566
GM
114
115#define TYPE_WSCTL 0x01 /* Work Station Control */
116#define TYPE_DFT 0x02 /* DFT Host Session */
117#define TYPE_CUT 0x03 /* CUT Host Session */
118#define TYPE_NOTEPAD 0x04 /* Notepad Session */
119#define TYPE_PC 0x05 /* Personal Computer Session */
120
121#define CHARACTERISTIC_EAB 0x80 /* Extended Attribute Buffer */
122#define CHARACTERISTIC_PSS 0x40 /* Program Symbols Supported */
123
124typedef struct {
125 char
126 rc,
127 function_id,
128 session_id,
129 cursor_type,
130 row_address, /* from 0 */
131 column_address; /* from 0 */
132} QuerySessionCursorParms;
133
134#define CURSOR_INHIBITED_AUTOSCROLL 0x10
135#define CURSOR_INHIBITED 0x04
136#define CURSOR_BLINKING 0x02
137#define CURSOR_BOX 0x01
138typedef struct {
139 char
140 rc,
141 function_id,
142 session_id,
143 reserved;
144 int
145 event_queue_id,
146 input_queue_id;
147 char
148 intercept_options,
149 first_connection_identifier;
150} ConnectToKeyboardParms;
151
152typedef struct {
153 char
154 rc,
155 function_id,
156 session_id,
157 reserved;
158 int
65c9fa1f 159 connectors_task_id;
86057566
GM
160} DisconnectFromKeyboardParms;
161
162typedef struct {
163 char
164 scancode,
165 shift_state;
166} KeystrokeEntry;
167
168typedef struct {
169 int
170 length; /* Length (in bytes) of list */
171 KeystrokeEntry keystrokes; /* Variable size */
172} KeystrokeList;
173
174typedef struct {
175 char
176 rc,
177 function_id,
178 session_id,
179 reserved;
180 int
181 connectors_task_id;
182 char
183 options,
184 number_of_keys_sent;
185 union {
186 KeystrokeEntry
187 keystroke_entry;
188 KeystrokeList far
189 *keystroke_list;
190 } keystroke_specifier;
191} WriteKeystrokeParms;
192
cbdd0b03
GM
193#define OPTION_SINGLE_KEYSTROKE 0x20
194#define OPTION_MULTIPLE_KEYSTROKES 0x30
195
86057566
GM
196typedef struct {
197 char
198 rc,
199 function_id,
200 session_id,
201 reserved;
202 int
203 connectors_task_id;
204} DisableInputParms;
205
206typedef DisableInputParms EnableInputParms;
207
208typedef struct {
209 char
210 session_id,
211 reserved;
212 char far
213 *buffer;
214 char
215 characteristics,
216 session_type;
217 int
218 begin; /* Offset within buffer */
219} BufferDescriptor;
220
221typedef struct {
222 char
223 rc,
224 function_id;
225 BufferDescriptor
226 source;
227 int
228 source_end; /* Offset within source buffer */
229 BufferDescriptor
230 target;
231 char
232 copy_mode,
233 reserved;
234} CopyStringParms;
235
236#define COPY_MODE_7_COLOR 0x80 /* Else 4 color mode */
237#define COPY_MODE_FIELD_ATTRIBUTES 0x40 /* Else don't copy attributes */
238
239typedef struct {
240 char
241 rc,
242 function_id,
243 session_id,
244 reserved;
245 char far
246 *oia_buffer;
247 char
248 oia_group_number;
249} ReadOiaGroupParms;
250
92f7501a
GM
251/* If the user wants all groups, we return API_OIA_BYTES_ALL_GROUPS bytes */
252#define API_OIA_ALL_GROUPS 0xFF
253#define API_OIA_BYTES_ALL_GROUPS 22 /* 22 bytes of data */
254
255/* API_OIA_INPUT_INHIBITED is special. It returns more than on byte of data */
256#define API_OIA_INPUT_INHIBITED 8
257
258#define API_OIA_LAST_LEGAL_GROUP 18 /* Highest legal number */
86057566 259
3f328054 260
3f328054 261
d4967272
GM
262#if defined(MSDOS)
263
264#if !defined(FP_SEG)
265#include <dos.h>
266#endif /* !defined(FP_SEG) */
267
268#else /* defined(MSDOS) */
269
270/*
271 * These definitions are here to provide the descriptions of
272 * some registers which are, normally, defined in <dos.h> on
273 * a dos system.
274 */
275
92f7501a
GM
276#define FP_SEG(x) (x)
277#define FP_OFF(y) (y)
d4967272
GM
278
279struct highlow {
280 char
281 ah,
282 al,
283 bh,
284 bl,
285 ch,
286 cl,
287 dh,
288 dl;
289};
290
291struct words {
292 int
293 ax,
294 bx,
295 cx,
296 dx,
297 si,
298 di;
299};
300
301union REGS {
302 struct highlow h;
303 struct words x;
304};
305
306struct SREGS {
307 int
308 cs,
309 ds,
310 es,
311 ss;
312};
313#endif /* defined(MSDOS) (else section) */