Get rid of bellWinup (or whatever). It belongs in the system
[unix-history] / usr / src / usr.bin / tn3270 / ctlr / screen.h
CommitLineData
23d0e88a
GM
1/*
2 * @(#)screen.h 3.1 10/29/86
3 */
4
5#define INCLUDED_SCREEN
6
7/* defines and defines to describe how to deal with the screen */
8
9#define MAXNUMBERLINES 43 /* 3278-4 */
10#define MAXNUMBERCOLUMNS 132 /* 3278-5 */
11#define MAXSCREENSIZE 3564 /* (27*132) 3278-5 */
12#define LowestScreen() 0
13#define HighestScreen() (ScreenSize-1)
14
15#define ScreenLineOffset(x) ((x)%NumberColumns)
16#define ScreenLine(x) ((int)((x)/NumberColumns))
17#define ScreenInc(x) (((x)==HighestScreen())? LowestScreen():x+1)
18#define ScreenDec(x) (((x)==LowestScreen())? HighestScreen():x-1)
19#define ScreenUp(x) (((x)+(ScreenSize-NumberColumns))%ScreenSize)
20#define ScreenDown(x) (((x)+NumberColumns)%ScreenSize)
21#define IsOrder(x) (Orders[x])
22#define BAIC(x) ((x)&0x3f)
23#define CIAB(x) (CIABuffer[(x)&0x3f])
24#define BufferTo3270_0(x) (CIABuffer[(int)((x)/0x40)])
25#define BufferTo3270_1(x) (CIABuffer[(x)&0x3f])
26#define Addr3270(x,y) (BAIC(x)*64+BAIC(y))
27#define SetBufferAddress(x,y) ((x)*NumberColumns+(y))
28\f
29/* These know how fields are implemented... */
30
31#define FieldInc(p) FieldFind(FieldForward, p, LowestScreen())
32#define FieldDec(p) (HighestScreen() - \
33 FieldFind(FieldReverse, \
90ed7ac2 34 HighestScreen()-(p), HighestScreen()))
23d0e88a
GM
35#define WhereAttrByte(p) (IsStartField(p)? p: FieldDec(p))
36#define WhereHighByte(p) ScreenDec(FieldInc(p))
37#define WhereLowByte(p) ScreenInc(WhereAttrByte(p))
90ed7ac2
GM
38#define FieldAttributes(x) (IsStartField(x)? Host[x].data : \
39 Host[WhereAttrByte(x)].data)
40#define FieldAttributesPointer(p) (IsStartFieldPointer(p)? (p)->data : \
41 Host[WhereAttrByte((p)-&Host[0])].data)
42#define TurnOffMdt(x) (Host[WhereAttrByte(x)].data &= ~ATTR_MDT)
43#define TurnOnMdt(x) (Host[WhereAttrByte(x)].data |= ATTR_MDT)
44#define HasMdt(x) (Host[x].data&ATTR_MDT) /* modified tag */
23d0e88a
GM
45
46 /*
47 * Is the screen formatted? Some algorithms change depending
48 * on whether there are any attribute bytes lying around.
49 */
50#define FormattedScreen() \
90ed7ac2 51 ((WhereAttrByte(0) != 0) || ((Host[0].data&ATTR_MASK) == ATTR_MASK))
23d0e88a 52
90ed7ac2
GM
53 /* field starts here */
54#define IsStartField(x) ((Host[x].data&ATTR_MASK) == ATTR_MASK)
55#define IsStartFieldPointer(p) (((p)->data&ATTR_MASK) == ATTR_MASK)
56
57#define NewField(p,a) (Host[p].data = (a)|ATTR_MASK, \
23d0e88a 58 FieldForward[p] = FieldReverse[ScreenSize-p-1] = 1)
90ed7ac2 59#define DeleteField(p) (Host[p].data = 0, \
23d0e88a
GM
60 FieldForward[p] = FieldReverse[ScreenSize-p-1] = 0)
61#define DeleteAllFields() (bzero(FieldForward, sizeof FieldForward), \
62 bzero(FieldReverse, sizeof FieldReverse))
63
64\f
65/* The following are independent of the implementation of fields */
66#define IsProtectedAttr(p,a) (IsStartField(p) || ((a)&ATTR_PROT))
67#define IsProtected(p) IsProtectedAttr(p,FieldAttributes(p))
68
69#define IsUnProtected(x) (!IsProtected(x))
70
71#define IsAutoSkip(x) (FieldAttributes(x)&ATTR_AUTO_SKIP)
72
73#define IsNonDisplayAttr(c) (((c)&ATTR_DSPD_MASK) == ATTR_DSPD_NONDISPLAY)
74#define IsNonDisplay(p) IsNonDisplayAttr(FieldAttributes(p))
75
76#define IsHighlightedAttr(c) \
77 (((c)&ATTR_DSPD_MASK) == ATTR_DSPD_HIGH)
78#define IsHighlighted(p) \
79 (IsHighlightedAttr(FieldAttributes(p)) && !IsStartField(p))
80
81
82#define MAX(x,y) ((x)<(y)? (y):(x))
83#define MIN(x,y) ((x)<(y)? x:(y))
84
85typedef struct {
90ed7ac2 86 unsigned char data; /* data at this position */
23d0e88a
GM
87} ScreenImage;
88
89extern int
90 FieldFind();
91
92extern char
93 CIABuffer[];
94
95#define GetHost(i) Host[i].data
96#define SetHost(p,c) (Host[p].data = c)