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 193*31198Sminshall #define OPTION_SINGLE_KEYSTROKE 0x20 194*31198Sminshall #define OPTION_MULTIPLE_KEYSTROKES 0x30 195*31198Sminshall 19631167Sminshall typedef struct { 19731167Sminshall char 19831167Sminshall rc, 19931167Sminshall function_id, 20031167Sminshall session_id, 20131167Sminshall reserved; 20231167Sminshall int 20331167Sminshall connectors_task_id; 20431167Sminshall } DisableInputParms; 20531167Sminshall 20631167Sminshall typedef DisableInputParms EnableInputParms; 20731167Sminshall 20831167Sminshall typedef struct { 20931167Sminshall char 21031167Sminshall session_id, 21131167Sminshall reserved; 21231167Sminshall char far 21331167Sminshall *buffer; 21431167Sminshall char 21531167Sminshall characteristics, 21631167Sminshall session_type; 21731167Sminshall int 21831167Sminshall begin; /* Offset within buffer */ 21931167Sminshall } BufferDescriptor; 22031167Sminshall 22131167Sminshall typedef struct { 22231167Sminshall char 22331167Sminshall rc, 22431167Sminshall function_id; 22531167Sminshall BufferDescriptor 22631167Sminshall source; 22731167Sminshall int 22831167Sminshall source_end; /* Offset within source buffer */ 22931167Sminshall BufferDescriptor 23031167Sminshall target; 23131167Sminshall char 23231167Sminshall copy_mode, 23331167Sminshall reserved; 23431167Sminshall } CopyStringParms; 23531167Sminshall 23631167Sminshall #define COPY_MODE_7_COLOR 0x80 /* Else 4 color mode */ 23731167Sminshall #define COPY_MODE_FIELD_ATTRIBUTES 0x40 /* Else don't copy attributes */ 23831167Sminshall 23931167Sminshall typedef struct { 24031167Sminshall char 24131167Sminshall rc, 24231167Sminshall function_id, 24331167Sminshall session_id, 24431167Sminshall reserved; 24531167Sminshall char far 24631167Sminshall *oia_buffer; 24731167Sminshall char 24831167Sminshall oia_group_number; 24931167Sminshall } ReadOiaGroupParms; 25031167Sminshall 25131193Sminshall /* If the user wants all groups, we return API_OIA_BYTES_ALL_GROUPS bytes */ 25231193Sminshall #define API_OIA_ALL_GROUPS 0xFF 25331193Sminshall #define API_OIA_BYTES_ALL_GROUPS 22 /* 22 bytes of data */ 25431167Sminshall 25531193Sminshall /* API_OIA_INPUT_INHIBITED is special. It returns more than on byte of data */ 25631193Sminshall #define API_OIA_INPUT_INHIBITED 8 25731167Sminshall 25831193Sminshall #define API_OIA_LAST_LEGAL_GROUP 18 /* Highest legal number */ 25931167Sminshall 26031167Sminshall 26131167Sminshall 26231183Sminshall #if defined(MSDOS) 26331183Sminshall 26431183Sminshall #if !defined(FP_SEG) 26531183Sminshall #include <dos.h> 26631183Sminshall #endif /* !defined(FP_SEG) */ 26731183Sminshall 26831183Sminshall #else /* defined(MSDOS) */ 26931183Sminshall 27031183Sminshall /* 27131183Sminshall * These definitions are here to provide the descriptions of 27231183Sminshall * some registers which are, normally, defined in <dos.h> on 27331183Sminshall * a dos system. 27431183Sminshall */ 27531183Sminshall 27631193Sminshall #define FP_SEG(x) (x) 27731193Sminshall #define FP_OFF(y) (y) 27831183Sminshall 27931183Sminshall struct highlow { 28031183Sminshall char 28131183Sminshall ah, 28231183Sminshall al, 28331183Sminshall bh, 28431183Sminshall bl, 28531183Sminshall ch, 28631183Sminshall cl, 28731183Sminshall dh, 28831183Sminshall dl; 28931183Sminshall }; 29031183Sminshall 29131183Sminshall struct words { 29231183Sminshall int 29331183Sminshall ax, 29431183Sminshall bx, 29531183Sminshall cx, 29631183Sminshall dx, 29731183Sminshall si, 29831183Sminshall di; 29931183Sminshall }; 30031183Sminshall 30131183Sminshall union REGS { 30231183Sminshall struct highlow h; 30331183Sminshall struct words x; 30431183Sminshall }; 30531183Sminshall 30631183Sminshall struct SREGS { 30731183Sminshall int 30831183Sminshall cs, 30931183Sminshall ds, 31031183Sminshall es, 31131183Sminshall ss; 31231183Sminshall }; 31331183Sminshall #endif /* defined(MSDOS) (else section) */ 314