|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1988 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that this notice is preserved and that due credit is given ! 7: * to the University of California at Berkeley. The name of the University ! 8: * may not be used to endorse or promote products derived from this ! 9: * software without specific prior written permission. This software ! 10: * is provided ``as is'' without express or implied warranty. ! 11: * ! 12: * @(#)api.h 3.3 (Berkeley) 3/28/88 ! 13: */ ! 14: ! 15: /* ! 16: * This file contains header information used by the PC API routines. ! 17: */ ! 18: ! 19: #if !defined(MSDOS) ! 20: #define far /* For 'far *' checks */ ! 21: #endif /* !defined(MSDOS) */ ! 22: ! 23: #define API_INTERRUPT_NUMBER 0x7A /* API Interrupt Number */ ! 24: ! 25: /* ! 26: * Define the gate numbers. These are returned via the Name Resolution ! 27: * service. ! 28: */ ! 29: ! 30: #define GATE_SESSMGR 1234 ! 31: #define GATE_KEYBOARD 5678 ! 32: #define GATE_COPY 9101 ! 33: #define GATE_OIAM 1121 ! 34: ! 35: /* ! 36: * The names which correspond to the above gate numbers. ! 37: */ ! 38: ! 39: #define NAME_SESSMGR "SESSMGR " ! 40: #define NAME_KEYBOARD "KEYBOARD" ! 41: #define NAME_COPY "COPY " ! 42: #define NAME_OIAM "OIAM " ! 43: ! 44: ! 45: /* ! 46: * Name Resolution is specified in AH. ! 47: */ ! 48: ! 49: #define NAME_RESOLUTION 0x81 ! 50: ! 51: #if defined(unix) ! 52: /* ! 53: * In unix, we offer a service to allow the application to keep from ! 54: * having to poll us constantly. ! 55: */ ! 56: #define PS_OR_OIA_MODIFIED 0x99 ! 57: ! 58: #endif /* defined(unix) */ ! 59: ! 60: /* ! 61: * Codes specified in AL for various services. ! 62: */ ! 63: ! 64: #define QUERY_SESSION_ID 0x01 ! 65: #define QUERY_SESSION_PARAMETERS 0x02 ! 66: #define QUERY_SESSION_CURSOR 0x0b ! 67: ! 68: #define CONNECT_TO_KEYBOARD 0x01 ! 69: #define DISCONNECT_FROM_KEYBOARD 0x02 ! 70: #define WRITE_KEYSTROKE 0x04 ! 71: #define DISABLE_INPUT 0x05 ! 72: #define ENABLE_INPUT 0x06 ! 73: ! 74: #define COPY_STRING 0x01 ! 75: ! 76: #define READ_OIA_GROUP 0x02 ! 77: ! 78: /* ! 79: * For each service, we define the assoicated parameter blocks. ! 80: */ ! 81: ! 82: /* ! 83: * Supervisor Services ! 84: */ ! 85: ! 86: typedef struct { ! 87: char gate_name[8]; ! 88: } NameResolveParms; ! 89: ! 90: ! 91: /* ! 92: * Session Information Services ! 93: */ ! 94: ! 95: typedef struct { ! 96: char ! 97: short_name, ! 98: type, ! 99: session_id, ! 100: reserved, ! 101: long_name[8]; ! 102: } NameArrayElement; ! 103: ! 104: typedef struct { ! 105: unsigned char ! 106: length, ! 107: number_matching_session; ! 108: NameArrayElement ! 109: name_array_element; /* Variable number */ ! 110: } NameArray; ! 111: ! 112: typedef struct { ! 113: char ! 114: rc, ! 115: function_id, ! 116: option_code, ! 117: data_code; ! 118: NameArray far ! 119: *name_array; ! 120: char ! 121: long_name[8]; ! 122: } QuerySessionIdParms; ! 123: ! 124: #define ID_OPTION_BY_NAME 0x01 /* By short (or long) name */ ! 125: #define ID_OPTION_ALL 0x00 /* All (of specified type */ ! 126: ! 127: typedef struct { ! 128: char ! 129: rc, ! 130: function_id, ! 131: session_id, ! 132: reserved, ! 133: session_type, ! 134: session_characteristics, ! 135: rows, ! 136: columns; ! 137: char far ! 138: *presentation_space; ! 139: } QuerySessionParametersParms; ! 140: ! 141: #define TYPE_WSCTL 0x01 /* Work Station Control */ ! 142: #define TYPE_DFT 0x02 /* DFT Host Session */ ! 143: #define TYPE_CUT 0x03 /* CUT Host Session */ ! 144: #define TYPE_NOTEPAD 0x04 /* Notepad Session */ ! 145: #define TYPE_PC 0x05 /* Personal Computer Session */ ! 146: ! 147: #define CHARACTERISTIC_EAB 0x80 /* Extended Attribute Buffer */ ! 148: #define CHARACTERISTIC_PSS 0x40 /* Program Symbols Supported */ ! 149: ! 150: typedef struct { ! 151: char ! 152: rc, ! 153: function_id, ! 154: session_id, ! 155: cursor_type, ! 156: row_address, /* from 0 */ ! 157: column_address; /* from 0 */ ! 158: } QuerySessionCursorParms; ! 159: ! 160: #define CURSOR_INHIBITED_AUTOSCROLL 0x10 ! 161: #define CURSOR_INHIBITED 0x04 ! 162: #define CURSOR_BLINKING 0x02 ! 163: #define CURSOR_BOX 0x01 ! 164: typedef struct { ! 165: char ! 166: rc, ! 167: function_id, ! 168: session_id, ! 169: reserved; ! 170: int ! 171: event_queue_id, ! 172: input_queue_id; ! 173: char ! 174: intercept_options, ! 175: first_connection_identifier; ! 176: } ConnectToKeyboardParms; ! 177: ! 178: typedef struct { ! 179: char ! 180: rc, ! 181: function_id, ! 182: session_id, ! 183: reserved; ! 184: int ! 185: connectors_task_id; ! 186: } DisconnectFromKeyboardParms; ! 187: ! 188: typedef struct { ! 189: char ! 190: scancode, ! 191: shift_state; ! 192: } KeystrokeEntry; ! 193: ! 194: typedef struct { ! 195: int ! 196: length; /* Length (in bytes) of list */ ! 197: KeystrokeEntry keystrokes; /* Variable size */ ! 198: } KeystrokeList; ! 199: ! 200: typedef struct { ! 201: char ! 202: rc, ! 203: function_id, ! 204: session_id, ! 205: reserved; ! 206: int ! 207: connectors_task_id; ! 208: char ! 209: options, ! 210: number_of_keys_sent; ! 211: union { ! 212: KeystrokeEntry ! 213: keystroke_entry; ! 214: KeystrokeList far ! 215: *keystroke_list; ! 216: } keystroke_specifier; ! 217: } WriteKeystrokeParms; ! 218: ! 219: #define OPTION_SINGLE_KEYSTROKE 0x20 ! 220: #define OPTION_MULTIPLE_KEYSTROKES 0x30 ! 221: ! 222: typedef struct { ! 223: char ! 224: rc, ! 225: function_id, ! 226: session_id, ! 227: reserved; ! 228: int ! 229: connectors_task_id; ! 230: } DisableInputParms; ! 231: ! 232: typedef DisableInputParms EnableInputParms; ! 233: ! 234: typedef struct { ! 235: char ! 236: session_id, ! 237: reserved; ! 238: char far ! 239: *buffer; ! 240: char ! 241: characteristics, ! 242: session_type; ! 243: int ! 244: begin; /* Offset within buffer */ ! 245: } BufferDescriptor; ! 246: ! 247: typedef struct { ! 248: char ! 249: rc, ! 250: function_id; ! 251: BufferDescriptor ! 252: source; ! 253: int ! 254: source_end; /* Offset within source buffer */ ! 255: BufferDescriptor ! 256: target; ! 257: char ! 258: copy_mode, ! 259: reserved; ! 260: } CopyStringParms; ! 261: ! 262: #define COPY_MODE_7_COLOR 0x80 /* Else 4 color mode */ ! 263: #define COPY_MODE_FIELD_ATTRIBUTES 0x40 /* Else don't copy attributes */ ! 264: ! 265: typedef struct { ! 266: char ! 267: rc, ! 268: function_id, ! 269: session_id, ! 270: reserved; ! 271: char far ! 272: *oia_buffer; ! 273: char ! 274: oia_group_number; ! 275: } ReadOiaGroupParms; ! 276: ! 277: /* If the user wants all groups, we return API_OIA_BYTES_ALL_GROUPS bytes */ ! 278: #define API_OIA_ALL_GROUPS '\377' ! 279: #define API_OIA_BYTES_ALL_GROUPS 22 /* 22 bytes of data */ ! 280: ! 281: /* API_OIA_INPUT_INHIBITED is special. It returns more than on byte of data */ ! 282: #define API_OIA_INPUT_INHIBITED 8 ! 283: ! 284: #define API_OIA_LAST_LEGAL_GROUP 18 /* Highest legal number */ ! 285: ! 286: ! 287: ! 288: #if defined(MSDOS) ! 289: ! 290: #if !defined(FP_SEG) ! 291: #include <dos.h> ! 292: #endif /* !defined(FP_SEG) */ ! 293: ! 294: #else /* defined(MSDOS) */ ! 295: ! 296: /* ! 297: * These definitions are here to provide the descriptions of ! 298: * some registers which are, normally, defined in <dos.h> on ! 299: * a dos system. ! 300: */ ! 301: ! 302: #define FP_SEG(x) (x) ! 303: #define FP_OFF(y) (y) ! 304: ! 305: /* ! 306: * Now, it is somewhat of a pain, but we need to keep ! 307: * 8086 conventions about which of the "highlow"'s map ! 308: * into which of the "words". ! 309: */ ! 310: ! 311: struct highlow { ! 312: unsigned char ! 313: #if defined(vax) ! 314: al, ! 315: ah, ! 316: bl, ! 317: bh, ! 318: cl, ! 319: ch, ! 320: dl, ! 321: dh; ! 322: #endif /* defined(vax) */ ! 323: #if defined(sun) || defined(tahoe) || defined(ibm032) || defined(pyr) ! 324: ah, ! 325: al, ! 326: bh, ! 327: bl, ! 328: ch, ! 329: cl, ! 330: dh, ! 331: dl; ! 332: #endif /* defined(sun) || defined(tahoe) || defined(ibm032) */ ! 333: }; ! 334: ! 335: struct words { ! 336: unsigned short ! 337: ax, ! 338: bx, ! 339: cx, ! 340: dx; ! 341: unsigned int ! 342: si, ! 343: di; ! 344: }; ! 345: ! 346: union REGS { ! 347: struct highlow h; ! 348: struct words x; ! 349: }; ! 350: ! 351: struct SREGS { ! 352: unsigned int ! 353: cs, ! 354: ds, ! 355: es, ! 356: ss; ! 357: }; ! 358: #endif /* defined(MSDOS) (else section) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.