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 1631211Sminshall #define GATE_SESSMGR 1234 1731211Sminshall #define GATE_KEYBOARD 5678 1831211Sminshall #define GATE_COPY 9101 1931211Sminshall #define GATE_OIAM 1121 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 35*31517Sminshall #define NAME_RESOLUTION 0x81 3631159Sminshall 37*31517Sminshall #if defined(unix) 3831159Sminshall /* 39*31517Sminshall * In unix, we offer a service to allow the application to keep from 40*31517Sminshall * having to poll us constantly. 41*31517Sminshall */ 42*31517Sminshall #define PS_OR_OIA_MODIFIED 0x99 43*31517Sminshall 44*31517Sminshall #endif /* defined(unix) */ 45*31517Sminshall 46*31517Sminshall /* 4731159Sminshall * Codes specified in AL for various services. 4831159Sminshall */ 4931159Sminshall 5031167Sminshall #define QUERY_SESSION_ID 0x01 5131211Sminshall #define QUERY_SESSION_PARAMETERS 0x02 5231167Sminshall #define QUERY_SESSION_CURSOR 0x0b 5331159Sminshall 5431167Sminshall #define CONNECT_TO_KEYBOARD 0x01 5531159Sminshall #define DISCONNECT_FROM_KEYBOARD 0x02 5631167Sminshall #define WRITE_KEYSTROKE 0x04 5731167Sminshall #define DISABLE_INPUT 0x05 5831167Sminshall #define ENABLE_INPUT 0x06 5931159Sminshall 6031167Sminshall #define COPY_STRING 0x01 6131159Sminshall 6231167Sminshall #define READ_OIA_GROUP 0x02 6331167Sminshall 6431167Sminshall /* 6531167Sminshall * For each service, we define the assoicated parameter blocks. 6631167Sminshall */ 6731167Sminshall 6831167Sminshall /* 6931167Sminshall * Supervisor Services 7031167Sminshall */ 7131167Sminshall 7231167Sminshall typedef struct { 7331167Sminshall char gate_name[8]; 7431167Sminshall } NameResolveParms; 7531167Sminshall 7631167Sminshall 7731167Sminshall /* 7831167Sminshall * Session Information Services 7931167Sminshall */ 8031167Sminshall 8131167Sminshall typedef struct { 8231167Sminshall char 8331167Sminshall short_name, 8431167Sminshall type, 8531167Sminshall session_id, 8631167Sminshall reserved, 8731167Sminshall long_name[8]; 8831167Sminshall } NameArrayElement; 8931167Sminshall 9031167Sminshall typedef struct { 9131167Sminshall char 9231167Sminshall length, 9331167Sminshall number_matching_session; 9431167Sminshall NameArrayElement 9531167Sminshall name_array_element; /* Variable number */ 9631167Sminshall } NameArray; 9731167Sminshall 9831167Sminshall typedef struct { 9931167Sminshall char 10031167Sminshall rc, 10131167Sminshall function_id, 10231167Sminshall option_code, 10331167Sminshall data_code; 10431167Sminshall NameArray far 10531167Sminshall *name_array; 10631167Sminshall char 10731167Sminshall long_name[8]; 10831167Sminshall } QuerySessionIdParms; 10931167Sminshall 11031211Sminshall #define ID_OPTION_BY_NAME 0x01 /* By short (or long) name */ 11131211Sminshall #define ID_OPTION_ALL 0x00 /* All (of specified type */ 11231211Sminshall 11331167Sminshall typedef struct { 11431167Sminshall char 11531167Sminshall rc, 11631167Sminshall function_id, 11731167Sminshall session_id, 11831167Sminshall reserved, 11931167Sminshall session_type, 12031167Sminshall session_characteristics, 12131167Sminshall rows, 12231167Sminshall columns; 12331167Sminshall char far 12431167Sminshall *presentation_space; 12531168Sminshall } QuerySessionParametersParms; 12631167Sminshall 12731167Sminshall #define TYPE_WSCTL 0x01 /* Work Station Control */ 12831167Sminshall #define TYPE_DFT 0x02 /* DFT Host Session */ 12931167Sminshall #define TYPE_CUT 0x03 /* CUT Host Session */ 13031167Sminshall #define TYPE_NOTEPAD 0x04 /* Notepad Session */ 13131167Sminshall #define TYPE_PC 0x05 /* Personal Computer Session */ 13231167Sminshall 13331167Sminshall #define CHARACTERISTIC_EAB 0x80 /* Extended Attribute Buffer */ 13431167Sminshall #define CHARACTERISTIC_PSS 0x40 /* Program Symbols Supported */ 13531167Sminshall 13631167Sminshall typedef struct { 13731167Sminshall char 13831167Sminshall rc, 13931167Sminshall function_id, 14031167Sminshall session_id, 14131167Sminshall cursor_type, 14231167Sminshall row_address, /* from 0 */ 14331167Sminshall column_address; /* from 0 */ 14431167Sminshall } QuerySessionCursorParms; 14531167Sminshall 14631167Sminshall #define CURSOR_INHIBITED_AUTOSCROLL 0x10 14731167Sminshall #define CURSOR_INHIBITED 0x04 14831167Sminshall #define CURSOR_BLINKING 0x02 14931167Sminshall #define CURSOR_BOX 0x01 15031167Sminshall typedef struct { 15131167Sminshall char 15231167Sminshall rc, 15331167Sminshall function_id, 15431167Sminshall session_id, 15531167Sminshall reserved; 15631167Sminshall int 15731167Sminshall event_queue_id, 15831167Sminshall input_queue_id; 15931167Sminshall char 16031167Sminshall intercept_options, 16131167Sminshall first_connection_identifier; 16231167Sminshall } ConnectToKeyboardParms; 16331167Sminshall 16431167Sminshall typedef struct { 16531167Sminshall char 16631167Sminshall rc, 16731167Sminshall function_id, 16831167Sminshall session_id, 16931167Sminshall reserved; 17031167Sminshall int 17131168Sminshall connectors_task_id; 17231167Sminshall } DisconnectFromKeyboardParms; 17331167Sminshall 17431167Sminshall typedef struct { 17531167Sminshall char 17631167Sminshall scancode, 17731167Sminshall shift_state; 17831167Sminshall } KeystrokeEntry; 17931167Sminshall 18031167Sminshall typedef struct { 18131167Sminshall int 18231167Sminshall length; /* Length (in bytes) of list */ 18331167Sminshall KeystrokeEntry keystrokes; /* Variable size */ 18431167Sminshall } KeystrokeList; 18531167Sminshall 18631167Sminshall typedef struct { 18731167Sminshall char 18831167Sminshall rc, 18931167Sminshall function_id, 19031167Sminshall session_id, 19131167Sminshall reserved; 19231167Sminshall int 19331167Sminshall connectors_task_id; 19431167Sminshall char 19531167Sminshall options, 19631167Sminshall number_of_keys_sent; 19731167Sminshall union { 19831167Sminshall KeystrokeEntry 19931167Sminshall keystroke_entry; 20031167Sminshall KeystrokeList far 20131167Sminshall *keystroke_list; 20231167Sminshall } keystroke_specifier; 20331167Sminshall } WriteKeystrokeParms; 20431167Sminshall 20531198Sminshall #define OPTION_SINGLE_KEYSTROKE 0x20 20631198Sminshall #define OPTION_MULTIPLE_KEYSTROKES 0x30 20731198Sminshall 20831167Sminshall typedef struct { 20931167Sminshall char 21031167Sminshall rc, 21131167Sminshall function_id, 21231167Sminshall session_id, 21331167Sminshall reserved; 21431167Sminshall int 21531167Sminshall connectors_task_id; 21631167Sminshall } DisableInputParms; 21731167Sminshall 21831167Sminshall typedef DisableInputParms EnableInputParms; 21931167Sminshall 22031167Sminshall typedef struct { 22131167Sminshall char 22231167Sminshall session_id, 22331167Sminshall reserved; 22431167Sminshall char far 22531167Sminshall *buffer; 22631167Sminshall char 22731167Sminshall characteristics, 22831167Sminshall session_type; 22931167Sminshall int 23031167Sminshall begin; /* Offset within buffer */ 23131167Sminshall } BufferDescriptor; 23231167Sminshall 23331167Sminshall typedef struct { 23431167Sminshall char 23531167Sminshall rc, 23631167Sminshall function_id; 23731167Sminshall BufferDescriptor 23831167Sminshall source; 23931167Sminshall int 24031167Sminshall source_end; /* Offset within source buffer */ 24131167Sminshall BufferDescriptor 24231167Sminshall target; 24331167Sminshall char 24431167Sminshall copy_mode, 24531167Sminshall reserved; 24631167Sminshall } CopyStringParms; 24731167Sminshall 24831167Sminshall #define COPY_MODE_7_COLOR 0x80 /* Else 4 color mode */ 24931167Sminshall #define COPY_MODE_FIELD_ATTRIBUTES 0x40 /* Else don't copy attributes */ 25031167Sminshall 25131167Sminshall typedef struct { 25231167Sminshall char 25331167Sminshall rc, 25431167Sminshall function_id, 25531167Sminshall session_id, 25631167Sminshall reserved; 25731167Sminshall char far 25831167Sminshall *oia_buffer; 25931167Sminshall char 26031167Sminshall oia_group_number; 26131167Sminshall } ReadOiaGroupParms; 26231167Sminshall 26331193Sminshall /* If the user wants all groups, we return API_OIA_BYTES_ALL_GROUPS bytes */ 26431211Sminshall #define API_OIA_ALL_GROUPS '\377' 26531193Sminshall #define API_OIA_BYTES_ALL_GROUPS 22 /* 22 bytes of data */ 26631167Sminshall 26731193Sminshall /* API_OIA_INPUT_INHIBITED is special. It returns more than on byte of data */ 26831193Sminshall #define API_OIA_INPUT_INHIBITED 8 26931167Sminshall 27031193Sminshall #define API_OIA_LAST_LEGAL_GROUP 18 /* Highest legal number */ 27131167Sminshall 27231167Sminshall 27331167Sminshall 27431183Sminshall #if defined(MSDOS) 27531183Sminshall 27631183Sminshall #if !defined(FP_SEG) 27731183Sminshall #include <dos.h> 27831183Sminshall #endif /* !defined(FP_SEG) */ 27931183Sminshall 28031183Sminshall #else /* defined(MSDOS) */ 28131183Sminshall 28231183Sminshall /* 28331183Sminshall * These definitions are here to provide the descriptions of 28431183Sminshall * some registers which are, normally, defined in <dos.h> on 28531183Sminshall * a dos system. 28631183Sminshall */ 28731183Sminshall 28831193Sminshall #define FP_SEG(x) (x) 28931193Sminshall #define FP_OFF(y) (y) 29031183Sminshall 29131469Sminshall /* 29231469Sminshall * Now, it is somewhat of a pain, but we need to keep 29331469Sminshall * 8086 conventions about which of the "highlow"'s map 29431469Sminshall * into which of the "words". 29531469Sminshall */ 29631469Sminshall 29731183Sminshall struct highlow { 29831469Sminshall unsigned char 29931504Sminshall #if defined(vax) 30031469Sminshall al, 30131183Sminshall ah, 30231469Sminshall bl, 30331183Sminshall bh, 30431469Sminshall cl, 30531183Sminshall ch, 30631469Sminshall dl, 30731469Sminshall dh; 30831504Sminshall #endif /* defined(vax) */ 30931504Sminshall #if defined(sun) || defined(tahoe) 31031504Sminshall ah, 31131504Sminshall al, 31231504Sminshall bh, 31331504Sminshall bl, 31431504Sminshall ch, 31531504Sminshall cl, 31631504Sminshall dh, 31731504Sminshall dl; 31831504Sminshall #endif /* defined(sun) || defined(tahoe) */ 31931183Sminshall }; 32031183Sminshall 32131183Sminshall struct words { 32231469Sminshall unsigned short 32331183Sminshall ax, 32431183Sminshall bx, 32531183Sminshall cx, 32631469Sminshall dx; 32731469Sminshall unsigned int 32831183Sminshall si, 32931183Sminshall di; 33031183Sminshall }; 33131183Sminshall 33231183Sminshall union REGS { 33331183Sminshall struct highlow h; 33431183Sminshall struct words x; 33531183Sminshall }; 33631183Sminshall 33731183Sminshall struct SREGS { 33831469Sminshall unsigned int 33931183Sminshall cs, 34031183Sminshall ds, 34131183Sminshall es, 34231183Sminshall ss; 34331183Sminshall }; 34431183Sminshall #endif /* defined(MSDOS) (else section) */ 345