Many variables which are used to describe the terminal environment
are available to the programmer. They are:
.if \n+(b.=1 .nr d. \n(.c-\n(c.-1
.if \(ts\n(.z\(ts\(ts .ds #d nl
.if \n(.l<\n(82 .ll \n(82u
current version of the screen (terminal screen).
.if \n(.l<\n(82 .ll \n(82u
standard screen. Most updates are usually done here.
.if \n(.l<\n(82 .ll \n(82u
default terminal type if type cannot be determined
.if \n(.l<\n(82 .ll \n(82u
use the terminal specification in \fIDef\*_term\fR as terminal,
irrelevant of real terminal type
.if \n(.l<\n(82 .ll \n(82u
full name of the current terminal.
.if \n(.l<\n(82 .ll \n(82u
number of lines on the terminal
.if \n(.l<\n(82 .ll \n(82u
number of columns on the terminal
.if \n(.l<\n(82 .ll \n(82u
error flag returned by routines on a fail.
.if \n(.l<\n(82 .ll \n(82u
error flag returned by routines when things go right.
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(80<\n(38 .nr 80 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \w
\ 2Def\*_term
\ 2
.if \n(81<\n(38 .nr 81 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.if \n(81<\n(38 .nr 81 \n(38
.nr 38 \w
\ 2description
\ 2
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.if \n(82<\n(38 .nr 82 \n(38
.nr 38 0+\n(80+\n(81+\n(82
.if t .if (\n(TW+\n(.o)>7.65i .tm Table at line 39 file intro.2 is too wide - \n(TW units
.if \(ts\n(.z\(ts\(ts .ds #d nl
\&\h'|\n(40u'
\ 2type
\ 3\ 2\h'|\n(41u'
\ 2name
\ 3\ 2\h'|\n(42u'
\ 2description
\ 3\ 2
\h'|0'\s\n(33\l'|\n(TWu\(ul'\s0
.if (\n(a|+\n(#^-1v)>\n(#- .nr #- +(\n(a|+\n(#^-\n(#--1v)
\&\h'|\n(40u'
\ 2WINDOW *
\ 3\ 2\h'|\n(41u'
\ 2curscr
\ 3\ 2\h'|\n(42u'
\ 2\ 3\ 2
.if \n(32>\n(31 .nr 31 \n(32
.if (\n(b|+\n(#^-1v)>\n(#- .nr #- +(\n(b|+\n(#^-\n(#--1v)
\&\h'|\n(40u'
\ 2WINDOW *
\ 3\ 2\h'|\n(41u'
\ 2stdscr
\ 3\ 2\h'|\n(42u'
\ 2\ 3\ 2
.if \n(32>\n(31 .nr 31 \n(32
.if (\n(c|+\n(#^-1v)>\n(#- .nr #- +(\n(c|+\n(#^-\n(#--1v)
\&\h'|\n(40u'
\ 2char *
\ 3\ 2\h'|\n(41u'
\ 2Def\*_term
\ 3\ 2\h'|\n(42u'
\ 2\ 3\ 2
.if \n(32>\n(31 .nr 31 \n(32
.if (\n(d|+\n(#^-1v)>\n(#- .nr #- +(\n(d|+\n(#^-\n(#--1v)
\&\h'|\n(40u'
\ 2bool
\ 3\ 2\h'|\n(41u'
\ 2My\*_term
\ 3\ 2\h'|\n(42u'
\ 2\ 3\ 2
.if \n(32>\n(31 .nr 31 \n(32
.if (\n(e|+\n(#^-1v)>\n(#- .nr #- +(\n(e|+\n(#^-\n(#--1v)
\&\h'|\n(40u'
\ 2char *
\ 3\ 2\h'|\n(41u'
\ 2ttytype
\ 3\ 2\h'|\n(42u'
\ 2\ 3\ 2
.if \n(32>\n(31 .nr 31 \n(32
.if (\n(f|+\n(#^-1v)>\n(#- .nr #- +(\n(f|+\n(#^-\n(#--1v)
\&\h'|\n(40u'
\ 2int
\ 3\ 2\h'|\n(41u'
\ 2LINES
\ 3\ 2\h'|\n(42u'
\ 2\ 3\ 2
.if \n(32>\n(31 .nr 31 \n(32
.if (\n(g|+\n(#^-1v)>\n(#- .nr #- +(\n(g|+\n(#^-\n(#--1v)
\&\h'|\n(40u'
\ 2int
\ 3\ 2\h'|\n(41u'
\ 2COLS
\ 3\ 2\h'|\n(42u'
\ 2\ 3\ 2
.if \n(32>\n(31 .nr 31 \n(32
.if (\n(h|+\n(#^-1v)>\n(#- .nr #- +(\n(h|+\n(#^-\n(#--1v)
\&\h'|\n(40u'
\ 2int
\ 3\ 2\h'|\n(41u'
\ 2ERR
\ 3\ 2\h'|\n(42u'
\ 2\ 3\ 2
.if \n(32>\n(31 .nr 31 \n(32
.if (\n(i|+\n(#^-1v)>\n(#- .nr #- +(\n(i|+\n(#^-\n(#--1v)
\&\h'|\n(40u'
\ 2int
\ 3\ 2\h'|\n(41u'
\ 2OK
\ 3\ 2\h'|\n(42u'
\ 2\ 3\ 2
.if \n(32>\n(31 .nr 31 \n(32
.if \n-(b.=0 .nr c. \n(.c-\n(d.-34
which are of general usefulness:
reg storage class ``register'' (e.g., \fIreg int i;\fR\|)
bool boolean type, actually a ``char'' (e.g., \fIbool doneit;\fR\|)
TRUE boolean ``true'' flag (1).
FALSE boolean ``false'' flag (0).