6/12/72                                                 TTY0 (IV)





NAME            tty0 ... tty7 -- communications interfaces



SYNOPSIS        --



DESCRIPTION     These files refer to DC11 asynchronous communica-

                tions interfaces.  At the moment there are eight

                of them, but the number is subject to change.



                When one of these files is opened, it causes the

                process to wait until a connection is estab-

                lished.  (In practice, however, user's programs

                seldom open these files; they are opened by init

                and become a user's standard input and output

                file.)  The very first typewriter file open in a

                process becomes the control typewriter for that

                process.  The control typewriter plays a special

                role in handling quit or interrupt signals, as

                discussed below.  The control typewriter is in-

                herited by a child process during a fork.



                A terminal associated with one of these files or-

                dinarily operates in full-duplex mode.  Charac-

                ters may be typed at any time, even while output

                is occurring, and are only lost when the system's

                character input buffers become completely choked,

                which is rare, or when the user has accumulated

                the maximum allowed number of input characters

                which have not yet been read by some program.

                Currently this limit is 150 characters.  When

                this is happening the character "#" is echoed for

                every lost input character.



                When first opened, the standard interface mode

                assumed includes: ASCII characters; 150 baud;

                even parity accepted; 10 bits/character (one stop

                bit); and newline action character.  The system

                delays transmission after sending certain func-

                tion characters.  Delays for horizontal tab, new-

                line, and form feed are calculated for the Tele-

                type Model 37; the delay for carriage return is

                calculated for the GE TermiNet 300.  Most of

                these operating states can be changed by using

                the system call stty(II).  In particular the fol-

                lowing hardware states are program settable inde-

                pendently for input and output (see DC11 manual):

                110, 134.5, 150, 300, 600, or 1200 baud; one or

                two stop bits on output; and 5, 6, 7, or 8

                bits/character.  In addition, the following soft-

                ware modes can be invoked: acceptance of even

                parity, odd parity, or both; a raw mode in which

                all characters may be read one at a time; a car-

                riage return (CR) mode in which CR is mapped into

                newline on input and either CR or line feed (LF)

                cause echoing of the sequence LF-CR; mapping of

                upper case letters into lower case; suppression

                of echoing; suppression of delays after function

                characters; the echoing of input tabs as spaces;

                and setting the system to handle IBM 2741s.  See

                getty(VII) for the way that terminal speed and

                type are detected.



                Normally, typewriter input is processed in units

                of lines.  This means that a program attempting

                to read will be suspended until an entire line

                has been typed.  Also, no matter how many charac-

                ters are requested in the read call, at most one

                line will be returned.  It is not however neces-

                sary to read a whole line at once; any number of

                characters may be requested in a read, even one,

                without losing information.



                During input, erase and kill processing is nor-

                mally done.  The character "#" erases the last

                character typed, except that it will not erase

                beyond the beginning of a line or an EOT.  The

                character "@" kills the entire line up to the

                point where it was typed, but not beyond an EOT.

                Both these characters operate on a keystroke ba-

                sis independently of any backspacing or tabbing

                that may have been done.  Either "@" or "#" may

                be entered literally by preceding it by "\"; the

                erase or kill character remains, but the "\" dis-

                appears.



                It is possible to use raw mode in which the pro-

                gram reading is awakened on each character.  The

                program waits only until at least one character

                has been typed.  In raw mode, no erase or kill

                processing is done; and the EOT, quit and inter-

                rupt characters are not treated specially.



                The ASCII EOT character may be used to generate

                an end of file from a typewriter.  When an EOT is

                received, all the characters waiting to be read

                are immediately passed to the program, without

                waiting for a new-line.  Thus if there are no

                characters waiting, which is to say the EOT oc-

                curred at the beginning of a line, zero charac-

                ters will be passed back, and this is the stan-

                dard end-of-file signal.



                When the carrier signal from the dataset drops

                (usually because the user has hung up his termi-

                nal) any read returns with an end-of-file indica-

                tion.  Thus programs which read a typewriter and

                test for end-of-file on their input can terminate

                appropriately when hung up on.



                Two characters have a special meaning when typed.

                The ASCII DEL character (sometimes called "rub-

                out") is the interrupt signal.  When this charac-

                ter is received from a given typewriter, a search

                is made for all processes which have this type-

                writer as their control typewriter, and which

                have not informed the system that they wish to

                ignore interrupts.  If there is more than one

                such process, one of these is selected, for prac-

                tical purposes at random.  If interrupts aren't

                being ignored, the process is either forced to

                exit or a trap is simulated to an agreed-upon lo-

                cation in the process.  See intr(II).



                The ASCII character FS is the quit signal.  Its

                treatment is identical to the interrupt signal

                except that unless the receiving process has made

                other arrangements it will not only be terminated

                but a core image file will be generated.  See

                quit(II).



                Output is prosaic compared to input.  When one or

                more characters are written, they are actually

                transmitted to the terminal as soon as

                previously-written characters have finished typ-

                ing.  Input characters are echoed by putting them

                in the output queue as they arrive.  When a pro-

                cess produces characters more rapidly than they

                can be typed, it will be suspended when its out-

                put queue exceeds some limit.  When the queue has

                drained down to some threshold the program is re-

                sumed.  Even-parity is always generated on out-

                put.  The EOT character is not transmitted to

                prevent terminals which respond to it from being

                hung up.



                The system will handle IBM 2741 terminals.  See

                getty(VII) for the way that 2741s are detected.

                In 2741 mode, the hardware state is: 134.5 baud;

                one output stop bit; and 7 bits/character.  Be-

                cause the 2741 is inherently half-duplex, input

                is not echoed.  Proper function delays are pro-

                vided.  For 2741s without a feature known as

                "transmit interrupt" it is not possible to col-

                lect input ahead of the time that a program reads

                the typewriter, because once the keyboard has

                been enabled there is no way to send further out-

                put to the 2741.  It is currently assumed that

                the feature is absent; thus the keyboard is un-

                locked only when some program reads.  The inter-

                rupt signal (normally ASCII DEL) is simulated

                when the 2741 "attention" key is pushed to gener-

                ate either a 2741 style EOT or a break.  It is

                not possible to generate anything corresponding

                to the end-of-file EOT or the quit signal.  Cur-

                rently IBM EBCDIC is default for input and out-

                put; correspondence code output is settable (see

                stty(I)).  The full ASCII character set is not

                available: "[", "]", "{", "}", "~", are missing

                on input and are printed as blank on output; "¢"

                is used for "\"; "¬" for "^"; " " for both "'"

                and"`"on output; and " " maps into "'" on input.

                Similar mappings occur with correspondence code

                output.



FILES           found in /dev



SEE ALSO        tty(I), getty(VII)



DIAGNOSTICS     --



BUGS            The primarily Model 37 oriented delays may not be

                appropriate for all other ASCII terminals.



OWNER           ken, dmr, jfo