Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

stty(1)

ioctl(2)

termio(7)

syac(7)

duart(7)



termiox(7)                     DG/UX R4.11MU05                    termiox(7)


NAME
       termiox - extended general terminal interface

DESCRIPTION
       The extended general terminal interface supplements the termio(7)
       general terminal interface by adding support for asynchronous
       hardware flow control, isochronous flow control and clock modes, and
       local implementations of additional asynchronous features.  Some
       systems may not support all of these capabilities because of either
       hardware or software limitations.  Other systems may not permit
       certain functions to be disabled.  In these cases the appropriate
       bits will be ignored.  See <termiox.h> for your system to find out
       which capabilities are supported, and the hardware man pages for
       specific hardware limitations.

   Hardware Flow Control Modes
       Hardware flow control supplements the termio(7) IXON, IXOFF, and
       IXANY character flow control.  Character flow control occurs when one
       device controls the data transfer of another device by the insertion
       of control characters in the data stream between devices.  Hardware
       flow control occurs when one device controls the data transfer of
       another device using electrical control signals on wires (circuits)
       of the asynchronous interface.  Isochronous hardware flow control
       occurs when one device controls the data transfer of another device
       by asserting or removing the transmit clock signals of that device.
       Character flow control and hardware flow control may be
       simultaneously set.

       In asynchronous, full duplex applications, the use of the Electronic
       Industries Association's EIA-232-D Request To Send (RTS) and Clear To
       Send (CTS) circuits is the preferred method of hardware flow control.
       An interface to other hardware flow control methods is included to
       provide a standard interface to these existing methods.

       The EIA-232-D standard specified only uni-directional hardware flow
       control - the Data Circuit-terminating Equipment or Data
       Communications Equipment (DCE) indicates to the Data Terminal
       Equipment (DTE) to stop transmitting data.  The termiox(7) interface
       allows both uni-directional and bi-directional hardware flow control;
       when bi-directional flow control is enabled, either the DCE or DTE
       can indicate to each other to stop transmitting data across the
       interface.  Note: It is assumed that the asynchronous port is
       configured as a DTE.  If the connected device is also a DTE and not a
       DCE, then DTE to DTE (e.g., terminal or printer connected to
       computer) hardware flow control is possible by using a null modem to
       interconnect the appropriate data and control circuits.

   Clock Modes
       Isochronous communication is a variation of asynchronous
       communication whereby two communicating devices may provide transmit
       and/or receive clock to each other.  Incoming clock signals can be
       taken from the baud rate generator on the local isochronous port
       controller, from CCITT V.24 circuit 114, Transmitter Signal Element
       Timing - DCE source (EIA-232-D pin 15), or from CCITT V.24 circuit
       115, Receiver Signal Element Timing - DCE source (EIA-232-D pin 17).
       Outgoing clock signals can be sent on CCITT V.24 circuit 113,
       Transmitter Signal Element Timing - DTE source (EIA-232-D pin 24), on
       CCITT V.24 circuit 128, Receiver Signal Element Timing - DTE source
       (no EIA-232-D pin), or not sent at all.

       In terms of clock modes, traditional asynchronous communication is
       implemented simply by using the local baud rate generator as the
       incoming transmit and receive clock source and not outputting any
       clock signals.

   Terminal Parameters
       The parameters that control the behavior of devices providing the
       termiox interface are specified by the termiox structure, defined in
       the <sys/termiox.h> header file.  Several ioctl(2) system calls that
       fetch or change these parameters use this structure:

              #define      NFF  5
              struct       termiox {
                 unsigned short   x_hflag;     /* hardware flow control
                                                  modes */
                 unsigned short   x_cflag;     /* clock modes */
                 unsigned short   x_rflag[NFF];/* reserved modes */
                 unsigned short   x_sflag;     /* spare local modes */
              };

       The x_hflag field describes hardware flow control modes:

           RTSXOFF 0000001  Enable RTS hardware flow control on input.
           CTSXON  0000002  Enable CTS hardware flow control on output.
           DTRXOFF 0000004  Enable DTR hardware flow control on input.
           CDXON   0000010  Enable CD hardware flow control on output.
           ISXOFF  0000020  Enable isochronous hardware flow control on input.

       The EIA-232-D DTR and CD circuits are used to establish a connection
       between two systems.  The RTS circuit is also used to establish a
       connection with a modem.  Thus, both DTR and RTS are activated when
       an asynchronous port is opened.  If DTR is used for hardware flow
       control, then RTS must be used for connectivity.  If CD is used for
       hardware flow control, then CTS must be used for connectivity.  Thus,
       RTS and DTR (or CTS and CD) cannot both be used for hardware flow
       control at the same time.  Other mutual exclusions may apply, such as
       the simultaneous setting of the termio(7) HUPCL and the termiox(7)
       DTRXOFF bits, which use the DTE ready line for different functions.

       Variations of different hardware flow control methods may be selected
       by setting the the appropriate bits.  For example, bi-directional
       RTS/CTS flow control is selected by setting both the RTSXOFF and
       CTSXON bits and bi-directional DTR/CTS flow control is selected by
       setting both the DTRXOFF and CTSXON.  Modem control or uni-
       directional CTS hardware flow control is selected by setting only the
       CTSXON bit.

       As previously mentioned, it is assumed that the local asynchronous
       port (e.g., computer) is configured as a DTE.  If the connected
       device (e.g., printer) is also a DTE, it is assumed that the device
       is connected to the computer's asynchronous port via a null modem
       that swaps control circuits (typically RTS and CTS).  The connected
       DTE drives RTS and the null modem swaps RTS and CTS so that the
       remote RTS is received as CTS by the local DTE.  In the case that
       CTSXON is set for hardware flow control, printer's lowering of its
       RTS would cause CTS seen by the computer to be lowered.  Output to
       the printer is suspended until the printer's raising of its RTS,
       which would cause CTS seen by the computer to be raised.

       If RTSXOFF is set, the Request To Send (RTS) circuit (line) will be
       raised, and if the asynchronous port needs to have its input stopped,
       it will lower the Request To Send (RTS) line.  If the RTS line is
       lowered, it is assumed that the connected device will stop its output
       until RTS is raised.

       If CTSXON is set, output will occur only if the Clear To Send (CTS)
       circuit (line) is raised by the connected device.  If the CTS line is
       lowered by the connected device, output is suspended until CTS is
       raised.

       If DTRXOFF is set, the DTE Ready (DTR) circuit (line) will be raised,
       and if the asynchronous port needs to have its input stopped, it will
       lower the DTE Ready (DTR) line.  If the DTR line is lowered, it is
       assumed that the connected device will stop its output until DTR is
       raised.

       If CDXON is set, output will occur only if the Received Line Signal
       Detector (CD) circuit (line) is raised by the connected device.  If
       the CD line is lowered by the connected device, output is suspended
       until CD is raised.

       If ISXOFF is set, and if the isochronous port needs to have its input
       stopped, it will stop the outgoing clock signal.  It is assumed that
       the connected device is using this clock signal to create its output.
       Transit and receive clock sources are programmed using the x_cflag
       fields.  If the port is not programmed for external clock generation,
       ISXOFF is ignored.  Output isochronous flow control is supported by
       appropriate clock source programming using the x_cflag field and
       enabled at the remote connected device.

       The x_cflag field specifies the system treatment of clock modes.

              XMTCLK  0000007  Transmit clock source:
              XCIBRG  0000000  Get transmit clock from internal baud rate
                               generator.
              XCTSET  0000001  Get transmit clock from transmitter signal
                               element timing (DCE source) lead, CCITT
                               V.24 circuit 114, EIA-232-D pin 15.
              XCRSET  0000002  Get transmit clock from receiver signal
                               element timing (DCE source) lead, CCITT
                               V.24 circuit 115, EIA-232-D pin 17.
              RCVCLK  0000070  Receive clock source:
              RCIBRG  0000000  Get receive clock from internal baud rate
                               generator.
              RCTSET  0000010  Get receive clock from transmitter signal
                               element timing (DCE source) lead, CCITT
                               V.24 circuit 114, EIA-232-D pin 15.
              RCRSET  0000020  Get receive clock from receiver signal
                               element timing (DCE source) lead, CCITT
                               V.24 circuit 115, EIA-232-D pin 17.
              TSETCLK 0000700  Transmitter signal element timing (DTE source)
                               lead, CCITT V.24 circuit 113, EIA-232-D
                               pin 24, clock source:
              TSETCOFF         0000000TSET clock not provided.
              TSETCRBRG        0000100Output receive baud rate generator on
                               circuit 113.
              TSETCTBRG        0000200Output transmit baud rate generator on
                               circuit 113.
              TSETCTSET        0000300Output transmitter signal element timing
                               (DCE source) on circuit 113.
              TSETCRSET        0000400Output receiver signal element timing
                               (DCE source) on circuit 113.
              RSETCLK 0007000  Receiver signal element timing (DTE source)
                               lead, CCITT V.24 circuit 128, no EIA-232-D
                               pin, clock source:
              RSETCOFF         0000000RSET clock not provided.
              RSETCRBRG        0001000Output receive baud rate generator on
                               circuit 128.
              RSETCTBRG        0002000Output transmit baud rate generator on
                               circuit 128.
              RSETCTSET        0003000Output transmitter signal element timing
                               (DCE source) on circuit 128.
              RSETCRSET        0004000Output receiver signal element timing
                               (DCE) on circuit 128.

       If the XMTCLK field has a value of XCIBRG the transmit clock is taken
       from the hardware internal baud rate generator, as in normal
       asynchronous transmission.  If XMTCLK = XCTSET the transmit clock is
       taken from the Transmitter Signal Element Timing (DCE source)
       circuit.  If XMTCLK = XCRSET the transmit clock is taken from the
       Receiver Signal Element Timing (DCE source) circuit.

       If the RCVCLK field has a value of RCIBRG the receive clock is taken
       from the hardware Internal Baud Rate Generator, as in normal
       asynchronous transmission.  If RCVCLK = RCTSET the receive clock is
       taken from the Transmitter Signal Element Timing (DCE source)
       circuit.  If RCVCLK = RCRSET the receive clock is taken from the
       Receiver Signal Element Timing (DCE source) circuit.

       If the TSETCLK field has a value of TSETCOFF the Transmitter Signal
       Element Timing (DTE source) circuit is not driven.  If TSETCLK =
       TSETCRBRG the Transmitter Signal Element Timing (DTE source) circuit
       is driven by the Receive Baud Rate Generator.  If TSETCLK = TSETCTBRG
       the Transmitter Signal Element Timing (DTE source) circuit is driven
       by the Transmit Baud Rate Generator.  If TSETCLK = TSETCTSET the
       Transmitter Signal Element Timing (DTE source) circuit is driven by
       the Transmitter Signal Element Timing (DCE source).  If TSETCLK =
       TSETCRBRG the Transmitter Signal Element Timing (DTE source) circuit
       is driven by the Receiver Signal Element Timing (DCE source).

       If the RSETCLK field has a value of RSETCOFF the Receiver Signal
       Element Timing (DTE source) circuit is not driven.  If RSETCLK =
       RSETCRBRG the Receiver Signal Element Timing (DTE source) circuit is
       driven by the Receive Baud Rate Generator.  If RSETCLK = RSETCTBRG
       the Receiver Signal Element Timing (DTE source) circuit is driven by
       the Transmit Baud Rate Generator.  If RSETCLK = RSETCTSET the
       Receiver Signal Element Timing (DTE source) circuit is driven by the
       Transmitter Signal Element Timing (DCE source).  If RSETCLK =
       RSETCRBRG the Receiver Signal Element Timing (DTE source) circuit is
       driven by the Receiver Signal Element Timing (DCE source).

       The x_rflag is reserved for future interface definitions and should
       not be used by any implementations.  The x_sflag may be used by local
       implementations wishing to customize their terminal interface using
       the termiox(7) ioctl system calls.

   Ioctls
       The ioctl(2) system calls have the form:

              ioctl (fildes, command, arg)
              struct termiox *arg;

       The commands using this form are:

              TCGETX The argument is a pointer to a termiox structure.  The
                     current terminal parameters are fetched and stored into
                     that structure.

              TCSETX The argument is a pointer to a termiox structure.  The
                     current terminal parameters are set from the values
                     stored in that structure.  The change is immediate.

              TCSETXW
                     The argument is a pointer to a termiox structure.  The
                     current terminal parameters are set from the values
                     stored in that structure.  The change occurs after all
                     characters queued for output have been transmitted.
                     This form should be used when changing parameters that
                     will affect output.

              TCSETXF
                     The argument is a pointer to a termiox structure.  The
                     current terminal parameters are set from the values
                     stored in that structure.  The change occurs after all
                     characters queued for output have been transmitted; all
                     characters queued for input are discarded and then the
                     change occurs.

FILES
       /dev/*

SEE ALSO
       stty(1), ioctl(2), termio(7), syac(7) duart(7).


Licensed material--property of copyright holder(s)

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