Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ttcompat(7) — DG/UX 5.4.2A

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ioctl(2)

termios(2)

termio(7)

ldterm(7)



ttcompat(7)                      DG/UX 5.4.2                     ttcompat(7)


NAME
       ttcompat - V7, 4BSD and XENIX STREAMS compatibility module

SYNOPSIS
       #include <sys/stream.h>
       #include <sys/stropt.h>
       #include <sys/ttcompat.h>
       #include <sys/ttold.h>

       ioctl(fd, IPUSH, "ttcompat");

DESCRIPTION
       ttcompat is a STREAMS module that translates the ioctl calls
       supported by the older Version 7, 4BSD and XENIX terminal drivers
       into the ioctl calls supported by the termio interface [see
       termio(7)].  All other messages pass through this module unchanged;
       the behavior of read and write calls is unchanged, as is the behavior
       of ioctl calls other than the ones supported by ttcompat.

       This module can be automatically pushed onto a stream using the
       autopush mechanism when a terminal device is opened; it does not have
       to be explicitly pushed onto a stream.  This module requires that the
       termios interface be supported by the modules and the application can
       push the driver downstream.  The TCGETS, TCSETS, and TCSETSF ioctl
       calls must be supported; if any information set or fetched by those
       ioctl calls is not supported by the modules and driver downstream,
       some of the V7/4BSD/XENIX functions may not be supported.  For
       example, if the CBAUD bits in the ccflag field are not supported,
       the functions provided by the sgispeed and sgospeed fields of the
       sgttyb structure (see below) will not be supported.  If the TCFLSH
       ioctl is not supported, the function provided by the TIOCFLUSH ioctl
       will not be supported.  If the TCXONC ioctl is not supported, the
       functions provided by the TIOCSTOP and TIOCSTART ioctl calls will not
       be supported.  If the TIOCMBIS and TIOCMBIC ioctl calls are not
       supported, the functions provided by the TIOCSDTR and TIOCCDTR ioctl
       calls will not be supported.

       The basic ioctl calls use the sgttyb structure defined by
       <sys/ioctl.h>:
              struct sgttyb {
                   char sgispeed;
                   char sgospeed;
                   char sgerase;
                   char sgkill;
                   int  sgflags;
              };

       The sgispeed and sgospeed fields describe the input and output
       speeds of the device, and reflect the values in the ccflag field of
       the termios structure.  The sgerase and sgkill fields of the
       argument structure specify the erase and kill characters
       respectively, and reflect the values in the VERASE and VKILL members
       of the ccc field of the termios structure.




Licensed material--property of copyright holder(s)                         1




ttcompat(7)                      DG/UX 5.4.2                     ttcompat(7)


       The sgflags field of the argument structure contains several flags
       that determine the system's treatment of the terminal.  They are
       mapped into flags in fields of the terminal state, represented by the
       termios structure.

       Delay type 0 is always mapped into the equivalent delay type 0 in the
       coflag field of the termios structure.  Other delay mappings are
       performed as follows:

              sgflags    coflag
              BS1         BS1
              FF1         VT1
              CR1         CR2
              CR2         CR3
              CR3         not supported
              TAB1        TAB1
              TAB2        TAB2
              XTABS       TAB3
              NL1         ONLRET|CR1
              NL2         NL1

       If previous TIOCLSET or TIOCLBIS ioctl calls have not selected LITOUT
       or PASS8 mode, and if RAW mode is not selected, the ISTRIP flag is
       set in the ciflag field of the termios structure, and the EVENP and
       ODDP flags control the parity of characters sent to the terminal and
       accepted from the terminal:

       Parity is not to be generated on output or checked on input;
        the character size is set to CS8 and the flag is cleared in the
        ccflag field of the termios structure.

       Even parity characters are to be generated on output and accepted on
       input;
        the flag is set in the ciflag field of the termios structure, the
        character size is set to CS7 and the flag is set in the ccflag
        field of the termios structure.

       Odd parity characters are to be generated on output and accepted on
       input; the flag is set in the
        ciflag field, the character size is set to CS7 and the and flags
        are set in the ccflag field of the termios structure.

       Even parity characters are to be generated on output and characters
       of either parity are to be accepted on input;
        the flag is cleared in the ciflag field, the character size is set
        to CS7 and the flag is set in the ccflag field of the termios
        structure.

       The RAW flag disables all output processing (the OPOST flag in the
       coflag field, and the XCASE flag in the clflag field, are cleared
       in the termios structure) and input processing (all flags in the
       ciflag field other than the IXOFF and IXANY flags are cleared in the
       termios structure).  8 bits of data, with no parity bit, are accepted
       on input and generated on output; the character size is set to CS8



Licensed material--property of copyright holder(s)                         2




ttcompat(7)                      DG/UX 5.4.2                     ttcompat(7)


       and the PARENB and PARODD flags are cleared in the ccflag field of
       the termios structure.  The signal-generating and line-editing
       control characters are disabled by clearing the ISIG and ICANON flags
       in the clflag field of the termios structure.

       The CRMOD flag turns input RETURN characters into NEWLINE characters,
       and output and echoed NEWLINE characters to be output as a RETURN
       followed by a LINEFEED.  The ICRNL flag in the ciflag field, and the
       OPOST and ONLCR flags in the coflag field, are set in the termios
       structure.

       The LCASE flag maps upper-case letters in the ASCII character set to
       their lower-case equivalents on input (the IUCLC flag is set in the
       ciflag field), and maps lower-case letters in the ASCII character
       set to their upper-case equivalents on output (the OLCUC flag is set
       in the coflag field).  Escape sequences are accepted on input, and
       generated on output, to handle certain ASCII characters not supported
       by older terminals (the XCASE flag is set in the clflag field).

       Other flags are directly mapped to flags in the termios structure:

              sgflags    flags in termios structure
              CBREAK      complement of ICANON in clflag field
              ECHO        ECHO in clflag field
              TANDEM      IXOFF in ciflag field

       Another structure associated with each terminal specifies characters
       that are special in both the old Version 7 and the newer 4BSD
       terminal interfaces.  The following structure is defined by
       <sys/ioctl.h>:
              struct tchars {
                   char tintrc;  /* interrupt */
                   char tquitc;  /* quit */
                   char tstartc; /* start output */
                   char tstopc;  /* stop output */
                   char teofc;   /* end-of-file */
                   char tbrkc;   /* input delimiter (like nl) */
              };

       XENIX defines the tchar structure as tc.  The characters are mapped
       to members of the ccc field of the termios structure as follows:

              tchars      ccc index
              tintrc     VINTR
              tquitc     VQUIT
              tstartc    VSTART
              tstopc     VSTOP
              teofc      VEOF
              tbrkc      VEOL

       Also associated with each terminal is a local flag word, specifying
       flags supported by the new 4BSD terminal interface.  Most of these
       flags are directly mapped to flags in the termios structure:




Licensed material--property of copyright holder(s)                         3




ttcompat(7)                      DG/UX 5.4.2                     ttcompat(7)


              local flags    flags in termios structure
              LCRTBS         not supported
              LPRTERA        ECHOPRT in the clflag field
              LCRTERA        ECHOE in the clflag field
              LTILDE         not supported
              LTOSTOP        TOSTOP in the clflag field
              LFLUSHO        FLUSHO in the clflag field
              LNOHANG        CLOCAL in the ccflag field
              LCRTKIL        ECHOKE in the clflag field
              LCTLECH        CTLECH in the clflag field
              LPENDIN        PENDIN in the clflag field
              LDECCTQ        complement of IXANY in the ciflag field
              LNOFLSH        NOFLSH in the clflag field

       Another structure associated with each terminal is the ltchars
       structure which defines control characters for the new 4BSD terminal
       interface.  Its structure is:
              struct ltchars {
                   char tsuspc;  /* stop process signal */
                   char tdsuspc; /* delayed stop process signal */
                   char trprntc; /* reprint line */
                   char tflushc; /* flush output (toggles) */
                   char twerasc; /* word erase */
                   char tlnextc; /* literal next character */
              };

       The characters are mapped to members of the ccc field of the termios
       structure as follows:

              ltchars     ccc index
              tsuspc     VSUSP
              tdsuspc    VDSUSP
              trprntc    VREPRINT
              tflushc    VDISCARD
              twerasc    VWERASE
              tlnextc    VLNEXT

IOCTLS
       ttcompat responds to the following ioctl calls.  All others are
       passed to the module below.

       TIOCGETP    The argument is a pointer to an sgttyb structure.  The
                   current terminal state is fetched; the appropriate
                   characters in the terminal state are stored in that
                   structure, as are the input and output speeds.  The
                   values of the flags in the sgflags field are derived
                   from the flags in the terminal state and stored in the
                   structure.

       TIOCEXCL    Set ``exclusive-use'' mode; no further opens are
                   permitted until the file has been closed.

       TIOCNXCL    Turn off ``exclusive-use'' mode.




Licensed material--property of copyright holder(s)                         4




ttcompat(7)                      DG/UX 5.4.2                     ttcompat(7)


       TIOCSETP    The argument is a pointer to an sgttyb structure.  The
                   appropriate characters and input and output speeds in the
                   terminal state are set from the values in that structure,
                   and the flags in the terminal state are set to match the
                   values of the flags in the sgflags field of that
                   structure.  The state is changed with a TCSETSF ioctl so
                   that the interface delays until output is quiescent, then
                   throws away any unread characters, before changing the
                   modes.

       TIOCSETN    The argument is a pointer to an sgttyb structure.  The
                   terminal state is changed as TIOCSETP would change it,
                   but a TCSETS ioctl is used, so that the interface neither
                   delays nor discards input.

       TIOCHPCL    The argument is ignored.  The HUPCL flag is set in the
                   ccflag word of the terminal state.

       TIOCFLUSH   The argument is a pointer to an int variable.  If its
                   value is zero, all characters waiting in input or output
                   queues are flushed.  Otherwise, the value of the int is
                   treated as the logical OR of the FREAD and FWRITE flags
                   defined by <sys/file.h> ; if the FREAD bit is set, all
                   characters waiting in input queues are flushed, and if
                   the FWRITE bit is set, all characters waiting in output
                   queues are flushed.

       TIOCBRK     The argument is ignored.  The break bit is set for the
                   device.

       TIOCCBRK    The argument is ignored.  The break bit is cleared for
                   the device.

       TIOCSDTR    The argument is ignored.  The Data Terminal Ready bit is
                   set for the device.

       TIOCCDTR    The argument is ignored.  The Data Terminal Ready bit is
                   cleared for the device.

       TIOCSTOP    The argument is ignored.  Output is stopped as if the
                   STOP character had been typed.

       TIOCSTART   The argument is ignored.  Output is restarted as if the
                   START character had been typed.

       TIOCGETC    The argument is a pointer to a tchars structure.  The
                   current terminal state is fetched, and the appropriate
                   characters in the terminal state are stored in that
                   structure.

       TIOCSETC    The argument is a pointer to a tchars structure.  The
                   values of the appropriate characters in the terminal
                   state are set from the characters in that structure.




Licensed material--property of copyright holder(s)                         5




ttcompat(7)                      DG/UX 5.4.2                     ttcompat(7)


       TIOCLGET    The argument is a pointer to an int.  The current
                   terminal state is fetched, and the values of the local
                   flags are derived from the flags in the terminal state
                   and stored in the int pointed to by the argument.

       TIOCLBIS    The argument is a pointer to an int whose value is a mask
                   containing flags to be set in the local flags word.  The
                   current terminal state is fetched, and the values of the
                   local flags are derived from the flags in the terminal
                   state; the specified flags are set, and the flags in the
                   terminal state are set to match the new value of the
                   local flags word.

       TIOCLBIC    The argument is a pointer to an int whose value is a mask
                   containing flags to be cleared in the local flags word.
                   The current terminal state is fetched, and the values of
                   the local flags are derived from the flags in the
                   terminal state; the specified flags are cleared, and the
                   flags in the terminal state are set to match the new
                   value of the local flags word.

       TIOCLSET    The argument is a pointer to an int containing a new set
                   of local flags.  The flags in the terminal state are set
                   to match the new value of the local flags word.

       TIOCGLTC    The argument is a pointer to an ltchars structure.  The
                   values of the appropriate characters in the terminal
                   state are stored in that structure.

       TIOCSLTC    The argument is a pointer to an ltchars structure.  The
                   values of the appropriate characters in the terminal
                   state are set from the characters in that structure.

       FIORDCHK    FIORDCHK returns the number of immediately readable
                   characters.  The argument is ignored.

       FIONREAD    FIONREAD returns the number of immediately readable
                   characters in the int pointed to by the argument.

       LDSMAP      Calls the function emsetmap (tp, mp) if the function is
                   configured in the kernel.

       LDGMAP      Calls the function emgetmap (tp, mp) if the function is
                   configured in the kernel.

       LDNMAP      Calls the function emunmap (tp, mp) if the function is
                   configured in the kernel.

       The following ioctls are returned as successful for the sake of
       compatibility.  However, nothing significant is done (i.e., the state
       of the terminal is not changed in any way).
              TIOCSETD  LDOPEN
              TIOCGETD  LDCLOSE
              DIOCSETP  LDCHG



Licensed material--property of copyright holder(s)                         6




ttcompat(7)                      DG/UX 5.4.2                     ttcompat(7)


              DIOCSETP  LDSETT
              DIIOGETP  LDGETT

SEE ALSO
       ioctl(2), termios(2), termio(7), ldterm(7).

NOTES
       TIOCBRK and TIOCCBRK should be handled by the driver.  FIONREAD and
       FIORDCHK are handled in the stream head.
















































Licensed material--property of copyright holder(s)                         7


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026