Annotation of 43BSDTahoe/ucb/tn3270/ctlr/screen.h, revision 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 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:  *     @(#)screen.h    3.3 (Berkeley) 3/28/88
        !            13:  */
        !            14: 
        !            15: #define        INCLUDED_SCREEN
        !            16: 
        !            17: /* defines and defines to describe how to deal with the screen */
        !            18: 
        !            19: #if    !defined(MSDOS)
        !            20: #define        MAXNUMBERLINES          43              /* 3278-4 */
        !            21: #define        MAXNUMBERCOLUMNS        132             /* 3278-5 */
        !            22: #define        MAXSCREENSIZE           3564            /* (27*132) 3278-5 */
        !            23: #else  /* !defined(MSDOS) */   /* MSDOS has memory constraints */
        !            24: #define        MAXNUMBERLINES          25              /* XXX */
        !            25: #define        MAXNUMBERCOLUMNS        80
        !            26: #define        MAXSCREENSIZE           (MAXNUMBERLINES*MAXNUMBERCOLUMNS)
        !            27: #endif /* !defined(MSDOS) */   /* MSDOS has memory constraints */
        !            28: #define LowestScreen() 0
        !            29: #define HighestScreen()        (ScreenSize-1)
        !            30: 
        !            31: #define ScreenLineOffset(x)    ((x)%NumberColumns)
        !            32: #define ScreenLine(x)  ((int)((x)/NumberColumns))
        !            33: #define ScreenInc(x)   (((x)==HighestScreen())? LowestScreen():x+1)
        !            34: #define ScreenDec(x)   (((x)==LowestScreen())? HighestScreen():x-1)
        !            35: #define ScreenUp(x)    (((x)+(ScreenSize-NumberColumns))%ScreenSize)
        !            36: #define ScreenDown(x)  (((x)+NumberColumns)%ScreenSize)
        !            37: #define        IsOrder(x)      (Orders[x])
        !            38: #define BAIC(x)                ((x)&0x3f)
        !            39: #define CIAB(x)                (CIABuffer[(x)&0x3f])
        !            40: #define BufferTo3270_0(x)      (CIABuffer[(int)((x)/0x40)])
        !            41: #define BufferTo3270_1(x)      (CIABuffer[(x)&0x3f])
        !            42: #define Addr3270(x,y)  (BAIC(x)*64+BAIC(y))
        !            43: #define SetBufferAddress(x,y)  ((x)*NumberColumns+(y))
        !            44: 
        !            45: /* These know how fields are implemented... */
        !            46: 
        !            47: #define WhereAttrByte(p)       (IsStartField(p)? p: FieldDec(p))
        !            48: #define        WhereHighByte(p)        ScreenDec(FieldInc(p))
        !            49: #define WhereLowByte(p)                ScreenInc(WhereAttrByte(p))
        !            50: #define FieldAttributes(x)     (IsStartField(x)? GetHost(x) : \
        !            51:                                    GetHost(WhereAttrByte(x)))
        !            52: #define FieldAttributesPointer(p)      (IsStartFieldPointer(p)? \
        !            53:                                    GetHostPointer(p): \
        !            54:                                    GetHost(WhereAttrByte((p)-&Host[0])))
        !            55: 
        !            56: /*
        !            57:  * The MDT functions need to protect against the case where the screen
        !            58:  * is unformatted (sigh).
        !            59:  */
        !            60: 
        !            61: /* Turn off the Modified Data Tag */
        !            62: #define TurnOffMdt(x) \
        !            63:     if (HasMdt(WhereAttrByte(x))) { \
        !            64:        ModifyMdt(x, 0); \
        !            65:     }
        !            66: 
        !            67: /* Turn on the Modified Data Tag */
        !            68: #define TurnOnMdt(x) \
        !            69:     if (!HasMdt(WhereAttrByte(x))) { \
        !            70:        ModifyMdt(x, 1); \
        !            71:     }
        !            72: 
        !            73: /* If this location has the MDT bit turned on (implies start of field) ... */
        !            74: #define HasMdt(x) \
        !            75:     ((GetHost(x)&(ATTR_MDT|ATTR_MASK)) == (ATTR_MDT|ATTR_MASK))
        !            76: 
        !            77:        /*
        !            78:         * Is the screen formatted?  Some algorithms change depending
        !            79:         * on whether there are any attribute bytes lying around.
        !            80:         */
        !            81: #define        FormattedScreen() \
        !            82:            ((WhereAttrByte(0) != 0) || ((GetHost(0)&ATTR_MASK) == ATTR_MASK))
        !            83: 
        !            84:                                            /* field starts here */
        !            85: #define IsStartField(x)        ((GetHost(x)&ATTR_MASK) == ATTR_MASK)
        !            86: #define IsStartFieldPointer(p) ((GetHostPointer(p)&ATTR_MASK) == ATTR_MASK)
        !            87: 
        !            88: #define NewField(p,a)  SetHost(p, (a)|ATTR_MASK)
        !            89: #define DeleteField(p) SetHost(p, 0)
        !            90: #define        DeleteAllFields()
        !            91: 
        !            92: /* The following are independent of the implementation of fields */
        !            93: #define IsProtectedAttr(p,a)   (IsStartField(p) || ((a)&ATTR_PROT))
        !            94: #define IsProtected(p) IsProtectedAttr(p,FieldAttributes(p))
        !            95: 
        !            96: #define IsUnProtected(x)       (!IsProtected(x))
        !            97: 
        !            98: #define IsAutoSkip(x)  (FieldAttributes(x)&ATTR_AUTO_SKIP)
        !            99: 
        !           100: #define IsNonDisplayAttr(c)    (((c)&ATTR_DSPD_MASK) == ATTR_DSPD_NONDISPLAY)
        !           101: #define        IsNonDisplay(p) IsNonDisplayAttr(FieldAttributes(p))
        !           102: 
        !           103: #define IsHighlightedAttr(c) \
        !           104:                (((c)&ATTR_DSPD_MASK) == ATTR_DSPD_HIGH)
        !           105: #define        IsHighlighted(p) \
        !           106:                (IsHighlightedAttr(FieldAttributes(p)) && !IsStartField(p))
        !           107: 
        !           108: 
        !           109: #define MAX(x,y)       ((x)<(y)? (y):(x))
        !           110: #define MIN(x,y)       ((x)<(y)? x:(y))
        !           111: 
        !           112: typedef unsigned char ScreenImage;
        !           113: 
        !           114: extern int
        !           115:        FieldFind();
        !           116: 
        !           117: extern char
        !           118:        CIABuffer[];
        !           119: 
        !           120: #define        GetGeneric(i,h)         (h)[i]
        !           121: #define        GetGenericPointer(p)    (*(p))
        !           122: #define        SetGeneric(i,c,h)       ((h)[i] = (c))
        !           123: #define        ModifyGeneric(i,what,h) {(h)[i] what;}
        !           124: 
        !           125: #define GetHost(i)             GetGeneric(i,Host)
        !           126: #define GetHostPointer(p)      GetGenericPointer(p)
        !           127: #define        SetHost(i,c)            SetGeneric(i,c,Host)
        !           128: #define        ModifyHost(i,what)      ModifyGeneric(i,what,Host)

unix.superglobalmegacorp.com

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