xref: /csrg-svn/usr.bin/tn3270/ctlr/api.h (revision 31193)
131159Sminshall /*
231159Sminshall  * This file contains header information used by the PC API routines.
331159Sminshall  */
431159Sminshall 
531183Sminshall #if	!defined(MSDOS)
631183Sminshall #define far			/* For 'far *' checks */
731183Sminshall #endif	/* !defined(MSDOS) */
831183Sminshall 
931159Sminshall #define	API_INTERRUPT_NUMBER	0x7A		/* API Interrupt Number */
1031159Sminshall 
1131159Sminshall /*
1231159Sminshall  * Define the gate numbers.  These are returned via the Name Resolution
1331159Sminshall  * service.
1431159Sminshall  */
1531159Sminshall 
1631159Sminshall #define	GATE_SESSMGR	1
1731159Sminshall #define	GATE_KEYBOARD	2
1831159Sminshall #define	GATE_COPY	3
1931159Sminshall #define	GATE_OIAM	4
2031159Sminshall 
2131167Sminshall /*
2231167Sminshall  * The names which correspond to the above gate numbers.
2331167Sminshall  */
2431167Sminshall 
2531167Sminshall #define	NAME_SESSMGR	"SESSMGR "
2631161Sminshall #define	NAME_KEYBOARD	"KEYBOARD"
2731167Sminshall #define	NAME_COPY	"COPY    "
2831167Sminshall #define	NAME_OIAM	"OIAM    "
2931161Sminshall 
3031161Sminshall 
3131159Sminshall /*
3231159Sminshall  * Name Resolution is specified in AH.
3331159Sminshall  */
3431159Sminshall 
3531159Sminshall #define	NAME_RESOLUTION	0x81
3631159Sminshall 
3731159Sminshall /*
3831159Sminshall  * Codes specified in AL for various services.
3931159Sminshall  */
4031159Sminshall 
4131167Sminshall #define	QUERY_SESSION_ID		0x01
4231167Sminshall #define	QUERY_SESSION_PARMS		0x02
4331167Sminshall #define	QUERY_SESSION_CURSOR		0x0b
4431159Sminshall 
4531167Sminshall #define	CONNECT_TO_KEYBOARD		0x01
4631159Sminshall #define	DISCONNECT_FROM_KEYBOARD	0x02
4731167Sminshall #define	WRITE_KEYSTROKE			0x04
4831167Sminshall #define	DISABLE_INPUT			0x05
4931167Sminshall #define	ENABLE_INPUT			0x06
5031159Sminshall 
5131167Sminshall #define	COPY_STRING			0x01
5231159Sminshall 
5331167Sminshall #define	READ_OIA_GROUP			0x02
5431167Sminshall 
5531167Sminshall /*
5631167Sminshall  * For each service, we define the assoicated parameter blocks.
5731167Sminshall  */
5831167Sminshall 
5931167Sminshall /*
6031167Sminshall  * Supervisor Services
6131167Sminshall  */
6231167Sminshall 
6331167Sminshall typedef struct {
6431167Sminshall     char	gate_name[8];
6531167Sminshall } NameResolveParms;
6631167Sminshall 
6731167Sminshall 
6831167Sminshall /*
6931167Sminshall  * Session Information Services
7031167Sminshall  */
7131167Sminshall 
7231167Sminshall typedef struct {
7331167Sminshall     char
7431167Sminshall 	short_name,
7531167Sminshall 	type,
7631167Sminshall 	session_id,
7731167Sminshall 	reserved,
7831167Sminshall 	long_name[8];
7931167Sminshall } NameArrayElement;
8031167Sminshall 
8131167Sminshall typedef struct {
8231167Sminshall     char
8331167Sminshall 	length,
8431167Sminshall 	number_matching_session;
8531167Sminshall     NameArrayElement
8631167Sminshall 	name_array_element;		/* Variable number */
8731167Sminshall } NameArray;
8831167Sminshall 
8931167Sminshall typedef struct {
9031167Sminshall     char
9131167Sminshall 	rc,
9231167Sminshall 	function_id,
9331167Sminshall 	option_code,
9431167Sminshall 	data_code;
9531167Sminshall     NameArray far
9631167Sminshall 	*name_array;
9731167Sminshall     char
9831167Sminshall 	long_name[8];
9931167Sminshall } QuerySessionIdParms;
10031167Sminshall 
10131167Sminshall typedef struct {
10231167Sminshall     char
10331167Sminshall 	rc,
10431167Sminshall 	function_id,
10531167Sminshall 	session_id,
10631167Sminshall 	reserved,
10731167Sminshall 	session_type,
10831167Sminshall 	session_characteristics,
10931167Sminshall 	rows,
11031167Sminshall 	columns;
11131167Sminshall     char far
11231167Sminshall 	*presentation_space;
11331168Sminshall } QuerySessionParametersParms;
11431167Sminshall 
11531167Sminshall #define	TYPE_WSCTL		0x01		/* Work Station Control */
11631167Sminshall #define	TYPE_DFT		0x02		/* DFT Host Session */
11731167Sminshall #define	TYPE_CUT		0x03		/* CUT Host Session */
11831167Sminshall #define	TYPE_NOTEPAD		0x04		/* Notepad Session */
11931167Sminshall #define	TYPE_PC			0x05		/* Personal Computer Session */
12031167Sminshall 
12131167Sminshall #define	CHARACTERISTIC_EAB	0x80		/* Extended Attribute Buffer */
12231167Sminshall #define	CHARACTERISTIC_PSS	0x40		/* Program Symbols Supported */
12331167Sminshall 
12431167Sminshall typedef struct {
12531167Sminshall     char
12631167Sminshall 	rc,
12731167Sminshall 	function_id,
12831167Sminshall 	session_id,
12931167Sminshall 	cursor_type,
13031167Sminshall 	row_address,				/* from 0 */
13131167Sminshall 	column_address;				/* from 0 */
13231167Sminshall } QuerySessionCursorParms;
13331167Sminshall 
13431167Sminshall #define	CURSOR_INHIBITED_AUTOSCROLL	0x10
13531167Sminshall #define	CURSOR_INHIBITED		0x04
13631167Sminshall #define	CURSOR_BLINKING			0x02
13731167Sminshall #define	CURSOR_BOX			0x01
13831167Sminshall typedef struct {
13931167Sminshall     char
14031167Sminshall 	rc,
14131167Sminshall 	function_id,
14231167Sminshall 	session_id,
14331167Sminshall 	reserved;
14431167Sminshall     int
14531167Sminshall 	event_queue_id,
14631167Sminshall 	input_queue_id;
14731167Sminshall     char
14831167Sminshall 	intercept_options,
14931167Sminshall 	first_connection_identifier;
15031167Sminshall } ConnectToKeyboardParms;
15131167Sminshall 
15231167Sminshall typedef struct {
15331167Sminshall     char
15431167Sminshall 	rc,
15531167Sminshall 	function_id,
15631167Sminshall 	session_id,
15731167Sminshall 	reserved;
15831167Sminshall     int
15931168Sminshall 	connectors_task_id;
16031167Sminshall } DisconnectFromKeyboardParms;
16131167Sminshall 
16231167Sminshall typedef struct {
16331167Sminshall     char
16431167Sminshall 	scancode,
16531167Sminshall 	shift_state;
16631167Sminshall } KeystrokeEntry;
16731167Sminshall 
16831167Sminshall typedef struct {
16931167Sminshall     int
17031167Sminshall 	length;			/* Length (in bytes) of list */
17131167Sminshall     KeystrokeEntry keystrokes;	/* Variable size */
17231167Sminshall } KeystrokeList;
17331167Sminshall 
17431167Sminshall typedef struct {
17531167Sminshall     char
17631167Sminshall 	rc,
17731167Sminshall 	function_id,
17831167Sminshall 	session_id,
17931167Sminshall 	reserved;
18031167Sminshall     int
18131167Sminshall 	connectors_task_id;
18231167Sminshall     char
18331167Sminshall 	options,
18431167Sminshall 	number_of_keys_sent;
18531167Sminshall     union {
18631167Sminshall 	KeystrokeEntry
18731167Sminshall 	    keystroke_entry;
18831167Sminshall 	KeystrokeList far
18931167Sminshall 	    *keystroke_list;
19031167Sminshall     } keystroke_specifier;
19131167Sminshall } WriteKeystrokeParms;
19231167Sminshall 
19331167Sminshall typedef struct {
19431167Sminshall     char
19531167Sminshall 	rc,
19631167Sminshall 	function_id,
19731167Sminshall 	session_id,
19831167Sminshall 	reserved;
19931167Sminshall     int
20031167Sminshall 	connectors_task_id;
20131167Sminshall } DisableInputParms;
20231167Sminshall 
20331167Sminshall typedef DisableInputParms EnableInputParms;
20431167Sminshall 
20531167Sminshall typedef struct {
20631167Sminshall     char
20731167Sminshall 	session_id,
20831167Sminshall 	reserved;
20931167Sminshall     char far
21031167Sminshall 	*buffer;
21131167Sminshall     char
21231167Sminshall 	characteristics,
21331167Sminshall 	session_type;
21431167Sminshall     int
21531167Sminshall 	begin;			/* Offset within buffer */
21631167Sminshall } BufferDescriptor;
21731167Sminshall 
21831167Sminshall typedef struct {
21931167Sminshall     char
22031167Sminshall 	rc,
22131167Sminshall 	function_id;
22231167Sminshall     BufferDescriptor
22331167Sminshall 	source;
22431167Sminshall     int
22531167Sminshall 	source_end;		/* Offset within source buffer */
22631167Sminshall     BufferDescriptor
22731167Sminshall 	target;
22831167Sminshall     char
22931167Sminshall 	copy_mode,
23031167Sminshall 	reserved;
23131167Sminshall } CopyStringParms;
23231167Sminshall 
23331167Sminshall #define	COPY_MODE_7_COLOR		0x80	/* Else 4 color mode */
23431167Sminshall #define	COPY_MODE_FIELD_ATTRIBUTES	0x40	/* Else don't copy attributes */
23531167Sminshall 
23631167Sminshall typedef struct {
23731167Sminshall     char
23831167Sminshall 	rc,
23931167Sminshall 	function_id,
24031167Sminshall 	session_id,
24131167Sminshall 	reserved;
24231167Sminshall     char far
24331167Sminshall 	*oia_buffer;
24431167Sminshall     char
24531167Sminshall 	oia_group_number;
24631167Sminshall } ReadOiaGroupParms;
24731167Sminshall 
248*31193Sminshall /* If the user wants all groups, we return API_OIA_BYTES_ALL_GROUPS bytes */
249*31193Sminshall #define	API_OIA_ALL_GROUPS		0xFF
250*31193Sminshall #define	API_OIA_BYTES_ALL_GROUPS	22	/* 22 bytes of data */
25131167Sminshall 
252*31193Sminshall /* API_OIA_INPUT_INHIBITED is special.  It returns more than on byte of data */
253*31193Sminshall #define	API_OIA_INPUT_INHIBITED		8
25431167Sminshall 
255*31193Sminshall #define	API_OIA_LAST_LEGAL_GROUP	18	/* Highest legal number */
25631167Sminshall 
25731167Sminshall 
25831167Sminshall 
25931183Sminshall #if	defined(MSDOS)
26031183Sminshall 
26131183Sminshall #if	!defined(FP_SEG)
26231183Sminshall #include <dos.h>
26331183Sminshall #endif	/* !defined(FP_SEG) */
26431183Sminshall 
26531183Sminshall #else	/* defined(MSDOS) */
26631183Sminshall 
26731183Sminshall /*
26831183Sminshall  * These definitions are here to provide the descriptions of
26931183Sminshall  * some registers which are, normally, defined in <dos.h> on
27031183Sminshall  * a dos system.
27131183Sminshall  */
27231183Sminshall 
273*31193Sminshall #define	FP_SEG(x)	(x)
274*31193Sminshall #define	FP_OFF(y)	(y)
27531183Sminshall 
27631183Sminshall struct highlow {
27731183Sminshall     char
27831183Sminshall 	ah,
27931183Sminshall 	al,
28031183Sminshall 	bh,
28131183Sminshall 	bl,
28231183Sminshall 	ch,
28331183Sminshall 	cl,
28431183Sminshall 	dh,
28531183Sminshall 	dl;
28631183Sminshall };
28731183Sminshall 
28831183Sminshall struct words {
28931183Sminshall     int
29031183Sminshall 	ax,
29131183Sminshall 	bx,
29231183Sminshall 	cx,
29331183Sminshall 	dx,
29431183Sminshall 	si,
29531183Sminshall 	di;
29631183Sminshall };
29731183Sminshall 
29831183Sminshall union REGS {
29931183Sminshall     struct highlow h;
30031183Sminshall     struct words x;
30131183Sminshall };
30231183Sminshall 
30331183Sminshall struct SREGS {
30431183Sminshall     int
30531183Sminshall 	cs,
30631183Sminshall 	ds,
30731183Sminshall 	es,
30831183Sminshall 	ss;
30931183Sminshall };
31031183Sminshall #endif	/* defined(MSDOS) (else section) */
311