modemap(7) DG/UX 4.30 modemap(7)
NAME
modemap - mapping of AT&T and Berkeley terminal modes
DESCRIPTION
The DG/UX system blends the AT&T and BSD UNIX systems.
However, the two systems use different line disciplines to
describe terminal modes (see ioctl(2), termio(7), and
tty(7)). This entry tells how the settings in each
discipline are mapped into the modes of the other.
Setting the modes of a given line discipline poses no
problem so long as you are actually using the line
discipline. However, if the terminal is using one
discipline and an application program is making ioctl system
calls using the other discipline, some sort of mapping must
exist to reflect the program's intent into the modes of the
other line discipline. This mapping can be performed
accurately in most cases.
BSD to AT&T Conversions
The table below outlines what happens to the AT&T line
discipline modes when you set BSD modes (sg_flags and
characters in the sgttyb structure, or BSD local modes and
characters). When a BSD mode in the left column is set,
this implies that the corresponding mode in the right column
is set.
BSD Mode AT&T Mode
DELAYS BS0 BS0
BS1 BS1
FF0 FF0, VT0
FF1 FF1, VT1
CR0 CR0 if not previously CR1
CR1 CR1
CR2 CR2
CR3 CR0 if not previously CR1
TAB0 TAB0
TAB1 TAB1
TAB2 TAB2
XTABS TAB3
NL0 NL0
NL1 NL1
NL2 NL2
NL3 NL3
PARITY ~EVENP & ~ODDP INPCK, ~PARENB
~EVENP & ODDP INPCK, PARENB, PARODD
Licensed material--property of copyright holder(s) Page 1
modemap(7) DG/UX 4.30 modemap(7)
EVENP & ~ODDP INPCK, PARENB, ~PARODD
EVENP & ODDP ~INPCK
RAW, etc. RAW ~OPOST, ~ICANON, ~ISIG, ~ISTRIP, ~IXON
c_cc[VMIN] = 1, c_cc[VTIME] = 0
CBREAK OPOST, ISIG, ISTRIP, IXON
~ICANON, c_cc[VMIN] = 1,
c_cc[VTIME] = 0
cooked OPOST, ICANON, ISIG, ISTRIP, IXON
(~RAW, ~CBREAK) c_cc[VEOF] = BSD EOF character
c_cc[VEOL] = BSD EOL character
baud rate sg_ispeed c_cflag & CBAUD = sg_ispeed
special t_intrc
characters t_quitc
t_eofc
t_brkc
t_bspace
MISC. CRMOD ICRNL, OCRNL, ONLCR
~CRMOD ~ICRNL, ~OCRNL, ~ONLCR
ECHO ECHO
~ECHO ~ECHO
LCASE IUCLC, OLCUC, XCASE
~LCASE ~IUCLC, ~OLCUC, ~XCASE
TANDEM IXOFF
~TANDEM ~IXOFF
LCRTBS ECHOE
~LCRTBS ~ECHOE
LNOFLSH
~LNOFLSH
Any other BSD modes do not change the AT&T modes at all. An
application that depends on behavior provided by a
particular BSD mode must guarantee that the terminal is
using the BSD line discipline during execution.
AT&T to BSD Conversions
The table below outlines what happens to the BSD line
discipline modes when you set AT&T modes (various flags in
the termio structure). When an AT&T mode in the left column
is set, this implies that the corresponding mode in the
right column is set.
AT&T Mode BSD Mode
DELAYS BS0 BS0
Licensed material--property of copyright holder(s) Page 2
modemap(7) DG/UX 4.30 modemap(7)
BS1 BS1
FF0 FF0
FF1 FF1
CR0 CR0 if not previously CR3
CR1 CR0 if not previously CR3
CR2 CR1
CR3 CR2
TAB0 TAB0
TAB1 TAB1
TAB2 TAB2
TAB3 XTABS
NL0 NL0 if previously NL2
NL1 NL2
PARITY ~INPCK EVENP, ODDP
INPCK, ~PARENB ~EVENP, ~ODDP
INPCK, PARENB, PARODD ~EVENP, ODDP
INPCK, PARENB, ~PARODD EVENP & ~ODDP
RAW, etc. ~ICANON, c_cc[VMIN] = 1, RAW
~OPOST, ~ISIG, ~ISTRIP
~ICANON, c_cc[VMIN] = 1 CBREAK (unless RAW)
baud rate c_cflag & CBAUD
special c_cc[VINTR]
characters c_cc[VQUIT]
c_cc[VEOF]
c_cc[VEOL]
c_cc[VBSPACE]
MISC. ICRNL, OCRNL, ONLCR CRMOD
ECHO ECHO
~ECHO ~ECHO
IUCLC, OLCUC, XCASE LCASE
IXOFF TANDEM
~IXOFF ~TANDEM
ECHOE LCRTBS
~ECHOE ~LCRTBS
NOFLSH
NOFLSH
The mapping of terminal modes is necessarily imperfect,
because of the one-to-many relationship between a given BSD
mode and a set of AT&T modes. The mode mapping is designed
to minimize damage to the BSD state upon resetting the AT&T
state.
In several situations, saving and restoring with BSD ioctl
calls can change the AT&T tty state. An AT&T ioctl call can
change the BSD tty state in one situation: when the baud
portion of the AT&T ccflag word is saved and restored if
the BSD sgispeed and sgospeed values differ initially.
Licensed material--property of copyright holder(s) Page 3
modemap(7) DG/UX 4.30 modemap(7)
EXAMPLES
In the following example, saving the BSD state and restoring
it leaves the AT&T modes in a state different from their
initial state:
BSD AT&T
Initial state CRMOD off ICRNL set
ONLRC off
OCRNL off
Setting CRMOD on ICRNL set
ONLRC set
ONRNL set
Final state CRMOD off ICRNL off
after resetting ONLRC off
OCRNL off
In the following example, saving the AT&T state and
restoring it changes the symbolic value of BSD sgospeed
(defined in ioctl.h) from B4800 (4800 baud) to B9600 (9600
baud).
AT&T BSD
Initial state c_cflag: B9600 sg_ispeed: B9600
sg_ospeed: B4800
Setting c_cflag: B4800 sg_ispeed: B4800
sg_ospeed: B4800
Final state c_cflag: B9600 sg_ispeed: B9600
after resetting sg_ospeed: B9600
SEE ALSO
stty(1), ioctl(2), termio(7), tty(7)
WARNING
Some mode names (NL1 and B300, for example) have different
meanings to the two line disciplines, and different values
in the flag words of the ioctl structures. For this reason,
in order for an application to use both BSD and AT&T ioctl
calls, the include file sgtty.h must be included.
Furthermore, the mode names for the BSD flags in the
sg_flags and baud rate words ispeed and ospeed must be
prefixed with BSD_ in order to avoid confusion with the AT&T
mode names. If only BSD or only AT&T ioctl calls are made
(the recommended case), no special action need be taken.
Licensed material--property of copyright holder(s) Page 4