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 3531159Sminshall #define NAME_RESOLUTION 0x81 3631159Sminshall 3731159Sminshall /* 3831159Sminshall * Codes specified in AL for various services. 3931159Sminshall */ 4031159Sminshall 4131167Sminshall #define QUERY_SESSION_ID 0x01 4231211Sminshall #define QUERY_SESSION_PARAMETERS 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 10131211Sminshall #define ID_OPTION_BY_NAME 0x01 /* By short (or long) name */ 10231211Sminshall #define ID_OPTION_ALL 0x00 /* All (of specified type */ 10331211Sminshall 10431167Sminshall typedef struct { 10531167Sminshall char 10631167Sminshall rc, 10731167Sminshall function_id, 10831167Sminshall session_id, 10931167Sminshall reserved, 11031167Sminshall session_type, 11131167Sminshall session_characteristics, 11231167Sminshall rows, 11331167Sminshall columns; 11431167Sminshall char far 11531167Sminshall *presentation_space; 11631168Sminshall } QuerySessionParametersParms; 11731167Sminshall 11831167Sminshall #define TYPE_WSCTL 0x01 /* Work Station Control */ 11931167Sminshall #define TYPE_DFT 0x02 /* DFT Host Session */ 12031167Sminshall #define TYPE_CUT 0x03 /* CUT Host Session */ 12131167Sminshall #define TYPE_NOTEPAD 0x04 /* Notepad Session */ 12231167Sminshall #define TYPE_PC 0x05 /* Personal Computer Session */ 12331167Sminshall 12431167Sminshall #define CHARACTERISTIC_EAB 0x80 /* Extended Attribute Buffer */ 12531167Sminshall #define CHARACTERISTIC_PSS 0x40 /* Program Symbols Supported */ 12631167Sminshall 12731167Sminshall typedef struct { 12831167Sminshall char 12931167Sminshall rc, 13031167Sminshall function_id, 13131167Sminshall session_id, 13231167Sminshall cursor_type, 13331167Sminshall row_address, /* from 0 */ 13431167Sminshall column_address; /* from 0 */ 13531167Sminshall } QuerySessionCursorParms; 13631167Sminshall 13731167Sminshall #define CURSOR_INHIBITED_AUTOSCROLL 0x10 13831167Sminshall #define CURSOR_INHIBITED 0x04 13931167Sminshall #define CURSOR_BLINKING 0x02 14031167Sminshall #define CURSOR_BOX 0x01 14131167Sminshall typedef struct { 14231167Sminshall char 14331167Sminshall rc, 14431167Sminshall function_id, 14531167Sminshall session_id, 14631167Sminshall reserved; 14731167Sminshall int 14831167Sminshall event_queue_id, 14931167Sminshall input_queue_id; 15031167Sminshall char 15131167Sminshall intercept_options, 15231167Sminshall first_connection_identifier; 15331167Sminshall } ConnectToKeyboardParms; 15431167Sminshall 15531167Sminshall typedef struct { 15631167Sminshall char 15731167Sminshall rc, 15831167Sminshall function_id, 15931167Sminshall session_id, 16031167Sminshall reserved; 16131167Sminshall int 16231168Sminshall connectors_task_id; 16331167Sminshall } DisconnectFromKeyboardParms; 16431167Sminshall 16531167Sminshall typedef struct { 16631167Sminshall char 16731167Sminshall scancode, 16831167Sminshall shift_state; 16931167Sminshall } KeystrokeEntry; 17031167Sminshall 17131167Sminshall typedef struct { 17231167Sminshall int 17331167Sminshall length; /* Length (in bytes) of list */ 17431167Sminshall KeystrokeEntry keystrokes; /* Variable size */ 17531167Sminshall } KeystrokeList; 17631167Sminshall 17731167Sminshall typedef struct { 17831167Sminshall char 17931167Sminshall rc, 18031167Sminshall function_id, 18131167Sminshall session_id, 18231167Sminshall reserved; 18331167Sminshall int 18431167Sminshall connectors_task_id; 18531167Sminshall char 18631167Sminshall options, 18731167Sminshall number_of_keys_sent; 18831167Sminshall union { 18931167Sminshall KeystrokeEntry 19031167Sminshall keystroke_entry; 19131167Sminshall KeystrokeList far 19231167Sminshall *keystroke_list; 19331167Sminshall } keystroke_specifier; 19431167Sminshall } WriteKeystrokeParms; 19531167Sminshall 19631198Sminshall #define OPTION_SINGLE_KEYSTROKE 0x20 19731198Sminshall #define OPTION_MULTIPLE_KEYSTROKES 0x30 19831198Sminshall 19931167Sminshall typedef struct { 20031167Sminshall char 20131167Sminshall rc, 20231167Sminshall function_id, 20331167Sminshall session_id, 20431167Sminshall reserved; 20531167Sminshall int 20631167Sminshall connectors_task_id; 20731167Sminshall } DisableInputParms; 20831167Sminshall 20931167Sminshall typedef DisableInputParms EnableInputParms; 21031167Sminshall 21131167Sminshall typedef struct { 21231167Sminshall char 21331167Sminshall session_id, 21431167Sminshall reserved; 21531167Sminshall char far 21631167Sminshall *buffer; 21731167Sminshall char 21831167Sminshall characteristics, 21931167Sminshall session_type; 22031167Sminshall int 22131167Sminshall begin; /* Offset within buffer */ 22231167Sminshall } BufferDescriptor; 22331167Sminshall 22431167Sminshall typedef struct { 22531167Sminshall char 22631167Sminshall rc, 22731167Sminshall function_id; 22831167Sminshall BufferDescriptor 22931167Sminshall source; 23031167Sminshall int 23131167Sminshall source_end; /* Offset within source buffer */ 23231167Sminshall BufferDescriptor 23331167Sminshall target; 23431167Sminshall char 23531167Sminshall copy_mode, 23631167Sminshall reserved; 23731167Sminshall } CopyStringParms; 23831167Sminshall 23931167Sminshall #define COPY_MODE_7_COLOR 0x80 /* Else 4 color mode */ 24031167Sminshall #define COPY_MODE_FIELD_ATTRIBUTES 0x40 /* Else don't copy attributes */ 24131167Sminshall 24231167Sminshall typedef struct { 24331167Sminshall char 24431167Sminshall rc, 24531167Sminshall function_id, 24631167Sminshall session_id, 24731167Sminshall reserved; 24831167Sminshall char far 24931167Sminshall *oia_buffer; 25031167Sminshall char 25131167Sminshall oia_group_number; 25231167Sminshall } ReadOiaGroupParms; 25331167Sminshall 25431193Sminshall /* If the user wants all groups, we return API_OIA_BYTES_ALL_GROUPS bytes */ 25531211Sminshall #define API_OIA_ALL_GROUPS '\377' 25631193Sminshall #define API_OIA_BYTES_ALL_GROUPS 22 /* 22 bytes of data */ 25731167Sminshall 25831193Sminshall /* API_OIA_INPUT_INHIBITED is special. It returns more than on byte of data */ 25931193Sminshall #define API_OIA_INPUT_INHIBITED 8 26031167Sminshall 26131193Sminshall #define API_OIA_LAST_LEGAL_GROUP 18 /* Highest legal number */ 26231167Sminshall 26331167Sminshall 26431167Sminshall 26531183Sminshall #if defined(MSDOS) 26631183Sminshall 26731183Sminshall #if !defined(FP_SEG) 26831183Sminshall #include <dos.h> 26931183Sminshall #endif /* !defined(FP_SEG) */ 27031183Sminshall 27131183Sminshall #else /* defined(MSDOS) */ 27231183Sminshall 27331183Sminshall /* 27431183Sminshall * These definitions are here to provide the descriptions of 27531183Sminshall * some registers which are, normally, defined in <dos.h> on 27631183Sminshall * a dos system. 27731183Sminshall */ 27831183Sminshall 27931193Sminshall #define FP_SEG(x) (x) 28031193Sminshall #define FP_OFF(y) (y) 28131183Sminshall 28231469Sminshall /* 28331469Sminshall * Now, it is somewhat of a pain, but we need to keep 28431469Sminshall * 8086 conventions about which of the "highlow"'s map 28531469Sminshall * into which of the "words". 28631469Sminshall */ 28731469Sminshall 28831183Sminshall struct highlow { 28931469Sminshall unsigned char 290*31504Sminshall #if defined(vax) 29131469Sminshall al, 29231183Sminshall ah, 29331469Sminshall bl, 29431183Sminshall bh, 29531469Sminshall cl, 29631183Sminshall ch, 29731469Sminshall dl, 29831469Sminshall dh; 299*31504Sminshall #endif /* defined(vax) */ 300*31504Sminshall #if defined(sun) || defined(tahoe) 301*31504Sminshall ah, 302*31504Sminshall al, 303*31504Sminshall bh, 304*31504Sminshall bl, 305*31504Sminshall ch, 306*31504Sminshall cl, 307*31504Sminshall dh, 308*31504Sminshall dl; 309*31504Sminshall #endif /* defined(sun) || defined(tahoe) */ 31031183Sminshall }; 31131183Sminshall 31231183Sminshall struct words { 31331469Sminshall unsigned short 31431183Sminshall ax, 31531183Sminshall bx, 31631183Sminshall cx, 31731469Sminshall dx; 31831469Sminshall unsigned int 31931183Sminshall si, 32031183Sminshall di; 32131183Sminshall }; 32231183Sminshall 32331183Sminshall union REGS { 32431183Sminshall struct highlow h; 32531183Sminshall struct words x; 32631183Sminshall }; 32731183Sminshall 32831183Sminshall struct SREGS { 32931469Sminshall unsigned int 33031183Sminshall cs, 33131183Sminshall ds, 33231183Sminshall es, 33331183Sminshall ss; 33431183Sminshall }; 33531183Sminshall #endif /* defined(MSDOS) (else section) */ 336