1*30042Sminshall /* 2*30042Sminshall * @(#)screen.h 3.1 10/29/86 3*30042Sminshall */ 4*30042Sminshall 5*30042Sminshall #define INCLUDED_TERMINAL 6*30042Sminshall 7*30042Sminshall #if defined(SLOWSCREEN) 8*30042Sminshall 9*30042Sminshall /* 10*30042Sminshall * In the situation where we have a copy of the terminal screen in front 11*30042Sminshall * of us, here are some macros to deal with them. 12*30042Sminshall */ 13*30042Sminshall 14*30042Sminshall #define TermAttributes(x) (TermIsStartField(x)? Terminal[x].field&0xff : \ 15*30042Sminshall Terminal[WhereTermAttrByte(x)].field&0xff) 16*30042Sminshall #define TermIsStartField(x) (Terminal[x].field&ATTR_MASK) 17*30042Sminshall #define TermNewField(p,a) (Terminal[p].field = (a)|ATTR_MASK) 18*30042Sminshall #define TermDeleteField(p) (Terminal[p].field = 0) 19*30042Sminshall #define TermIsNonDisplay(x) \ 20*30042Sminshall ((TermAttributes(x)&ATTR_DSPD_MASK) == ATTR_DSPD_NONDISPLAY) 21*30042Sminshall #define TermIsHighlighted(x) \ 22*30042Sminshall (((TermAttributes(x)&ATTR_DSPD_MASK) == ATTR_DSPD_HIGH) \ 23*30042Sminshall && !TermIsStartField(x)) 24*30042Sminshall 25*30042Sminshall #define TerminalCharacterAttr(c,p,a) (IsNonDisplayAttr(a) ? ' ':c) 26*30042Sminshall #define TerminalCharacter(c,p) TerminalCharacterAttr(c,p,FieldAttributes(p)) 27*30042Sminshall 28*30042Sminshall #define NeedToRedisplayFields(p) ((TermIsNonDisplay(p) != IsNonDisplay(p)) || \ 29*30042Sminshall (TermIsHighlighted(p) != IsHighlighted(p))) 30*30042Sminshall #define NeedToRedisplayFieldsAttr(p,c) ( \ 31*30042Sminshall (TermIsNonDisplay(p) != IsNonDisplayAttr(c)) || \ 32*30042Sminshall (TermIsHighlighted(p) != IsHighlightedAttr(c))) 33*30042Sminshall 34*30042Sminshall #define NotVisuallyCompatibleAttributes(p,c,d) ( \ 35*30042Sminshall (IsNonDisplayAttr(c) != IsNonDisplayAttr(d)) || \ 36*30042Sminshall (IsHighlightedAttr(c) != IsHighlightedAttr(d))) 37*30042Sminshall 38*30042Sminshall #define NeedToRedisplayAttr(c,p,a) \ 39*30042Sminshall ((c != GetTerminal(p)) || NeedToRedisplayFieldsAttr(p,a)) 40*30042Sminshall #define NeedToRedisplay(c,p) NeedToRedisplayAttr(c,p,FieldAttributes(p)) 41*30042Sminshall 42*30042Sminshall #define GetTerminal(i) Terminal[i].data 43*30042Sminshall #define SetTerminal(i,c) (Terminal[i].data = c) 44*30042Sminshall 45*30042Sminshall #endif /* defined(SLOWSCREEN) */ 46