Annotation of 43BSD/ucb/tn3270/screen.c, revision 1.1

1.1     ! root        1: /*
        !             2:  *     Copyright 1984, 1985 by the Regents of the University of
        !             3:  *     California and by Gregory Glenn Minshall.
        !             4:  *
        !             5:  *     Permission to use, copy, modify, and distribute these
        !             6:  *     programs and their documentation for any purpose and
        !             7:  *     without fee is hereby granted, provided that this
        !             8:  *     copyright and permission appear on all copies and
        !             9:  *     supporting documentation, the name of the Regents of
        !            10:  *     the University of California not be used in advertising
        !            11:  *     or publicity pertaining to distribution of the programs
        !            12:  *     without specific prior permission, and notice be given in
        !            13:  *     supporting documentation that copying and distribution is
        !            14:  *     by permission of the Regents of the University of California
        !            15:  *     and by Gregory Glenn Minshall.  Neither the Regents of the
        !            16:  *     University of California nor Gregory Glenn Minshall make
        !            17:  *     representations about the suitability of this software
        !            18:  *     for any purpose.  It is provided "as is" without
        !            19:  *     express or implied warranty.
        !            20:  */
        !            21: 
        !            22: 
        !            23: /* this file implements primitives to drive the screen. */
        !            24: #ifndef        lint
        !            25: static char    sccsid[] = "@(#)screen.c        2.1     4/11/85";
        !            26: #endif /* ndef lint */
        !            27: 
        !            28: #include <stdio.h>
        !            29: 
        !            30: #include "screen.h"
        !            31: #include "3270.h"
        !            32: 
        !            33: char CIABuffer[64] = {
        !            34:     0x40, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
        !            35:     0xc8, 0xc9, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
        !            36:     0x50, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
        !            37:     0xd8, 0xd9, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
        !            38:     0x60, 0x61, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
        !            39:     0xe8, 0xe9, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
        !            40:     0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
        !            41:     0xf8, 0xf9, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f
        !            42: };
        !            43: 
        !            44: /* These are the routines compiled if we are using a parallel array to hold
        !            45:        the field information...
        !            46:  */
        !            47: 
        !            48: /* What is the screen address of the attribute byte for the terminal */
        !            49: 
        !            50: WhereTermAttrByte(p)
        !            51: register int   p;
        !            52: {
        !            53:     register int i;
        !            54: 
        !            55:     i = p;
        !            56: 
        !            57:     do {
        !            58:        if (TermIsStartField(i)) {
        !            59:            return(i);
        !            60:        }
        !            61:        i = ScreenDec(i);
        !            62:     } while (i != p);
        !            63: 
        !            64:     return(LowestScreen());    /* unformatted screen... */
        !            65: }
        !            66: 
        !            67: /* What we know is that table is of size SCREENSIZE */
        !            68: 
        !            69: FieldFind(table, position, failure)
        !            70: register char *table;          /* which table of bytes to use */
        !            71: register int position;         /* what position to start from */
        !            72: int failure;                   /* if unformatted, what value to return */
        !            73: {
        !            74:     register int ourp;
        !            75: 
        !            76:     ourp = position + 1 + bskip(table+position+1, SCREENSIZE-position-1, 0);
        !            77:     if (ourp < SCREENSIZE) {
        !            78:        return(ourp);
        !            79:     }
        !            80:     /* No fields in table after position.  Look for fields from beginning
        !            81:      * of table.
        !            82:      */
        !            83:     ourp = bskip(table, position+1, 0);
        !            84:     if (ourp <= position) {
        !            85:        return(ourp);
        !            86:     }
        !            87:     return(failure);
        !            88: }

unix.superglobalmegacorp.com

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