Annotation of 43BSDReno/usr.bin/tn3270/ctlr/api.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.