Annotation of cci/usr/src/usr.bin/bsc/cmd/3270/empr.h, revision 1.1

1.1     ! root        1: #include <errno.h>
        !             2: #include <stdio.h>
        !             3: /*
        !             4:  * Screen information.
        !             5:  * The externally-defined variables listed below comprise the
        !             6:  * information needed to manage a virtual 3277 screen.
        !             7:  */
        !             8: 
        !             9: #define MAXSCREENSIZE 1920             /* Max. # characters per screen */
        !            10: #define MAXFIELDS MAXSCREENSIZE/2      /* Max. # fields per screen */
        !            11: #define SCREENWIDTH 80                 /* Width of screen */
        !            12: 
        !            13: int fldstart[MAXSCREENSIZE];           /* Index of starting position of each
        !            14:                                           field's first data character.
        !            15:                                           Attribute characters are immediately
        !            16:                                           before each field. */
        !            17: char fldattr[MAXSCREENSIZE];   /* Attribute of each field */
        !            18: int fldmax[MAXSCREENSIZE];     /* Maximum width of each field */
        !            19: int totfields;                 /* Total number of fields on screen */
        !            20: int curfield;                  /* Current field number */
        !            21: int bufaddr;                   /* Current buffer address, 0 to
        !            22:                                   MAXSCREENSIZE-1 */
        !            23: int cursaddr;                  /* Current cursor address, 0 to
        !            24:                                   MAXSCREENSIZE-1 */
        !            25: #define ROW cursaddr/SCREENWIDTH       
        !            26: #define COL cursaddr%SCREENWIDTH
        !            27: 
        !            28: /* scrn_image is a replica of the current ASCII screen image, except that 
        !            29:    attribute characters are replaced with x80's. */
        !            30: char scrn_image[MAXSCREENSIZE];
        !            31: #define        ATTRCODE (char)0x80
        !            32: 
        !            33: /* scrn_xref is a cross-reference into scrn_image. It contains the current
        !            34:    field number corresponding to each screen location. 
        !            35:    For example, a screen containing two fields, one beginning at screen
        !            36:    position 10 and the other beginning at screen position 30, can be
        !            37:    visualized as follows (top row of numbers represent screen positions):
        !            38:     0        1         2         3         4         5 
        !            39:     012345678901234567890123456789012345678901234567890...
        !            40:     111111111122222222222222222222333333333333333333333...
        !            41: 
        !            42:    */
        !            43: int scrn_xref[MAXSCREENSIZE];
        !            44: 
        !            45: extern int unprotected;                /* count of unprotected fields on the screen */
        !            46: 
        !            47: /* attribute codes for fldattr[]: */
        !            48: #define ATTRTYPE       0x30    /* protected, numeric attribute mask */
        !            49: #define ATTRNUM                0x10    /* (fldattr[x] & ATTRTYPE) == ATTRNUM
        !            50:                                   if attribute defines numeric field */
        !            51: #define ATTRPROT       0x20    /* (fldattr[x] & ATTRTYPE) == ATTRPROT
        !            52:                                   if attribute defines protected field */
        !            53: #define ATTRSKIP       0x30    /* protected and numeric -> autoskip */
        !            54: 
        !            55: #define num_attr(attr) ((attr & ATTRTYPE) == ATTRNUM)
        !            56: #define prot_attr(attr) (attr & ATTRPROT)
        !            57: #define        invis_attr(attr)        ((attr & ATTRDISP) == ATTRINVIS)
        !            58: #define        hl_attr(attr)   ((attr & ATTRDISP) == ATTRHL)
        !            59: #define skip_attr(attr) ((attr & ATTRSKIP) == ATTRSKIP)
        !            60: 
        !            61: #define        ATTRDISP        0x0c    /* display mode mask: */
        !            62: #define        ATTRINVIS       0x0c    /*      Invisible */
        !            63: #define        ATTRHL          0x08    /*      Highlight */
        !            64: #define        ATTRMDT         0x01    /* Modified Data flag */
        !            65: 
        !            66: #define set_mdt fldattr[curfield] |= ATTRMDT
        !            67: 
        !            68: 
        !            69: /* Write and Ewrite commands are followed by a WCC (write control character) */
        !            70: extern char wcc;
        !            71: 
        !            72: /* Write Control Character (WCC) Layout: */
        !            73: #define        WCCPRFMT        0x30    /* Print format mask: */
        !            74: #define        WCCPRVAR        0x00            /* Variable-length to 132 chars */
        !            75: #define        WCCPR40         0x10            /* 40-char. fixed */
        !            76: #define        WCCPR64         0x20            /* 64-char. fixed */
        !            77: #define        WCCPR80         0x30            /* 80-char. fixed */
        !            78: #define        WCCSTPRT        0x08    /* Start Print (after command complete) */
        !            79: #define        WCCALARM        0x04    /* Sound Alarm (after command complete) */
        !            80: #define        WCCKYBDRST      0x02    /* Unlock Keyboard (after command complete) */
        !            81: #define        WCCMDTRST       0x01    /* Immediate reset of MDT bit in all fields */
        !            82: 
        !            83: #define stprt(wc) (wc & WCCSTPRT)
        !            84: #define walarm(wc) (wc & WCCALARM)
        !            85: #define kbdrst(wc) (wc & WCCKYBDRST)
        !            86: #define mdtrst(wc) (wc & WCCMDTRST)

unix.superglobalmegacorp.com

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