|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.