Annotation of cci/usr/src/usr.bin/bsc/cmd/3270/empr.h, revision 1.1.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.