|
|
|
|
Command-line editing and command recall |
Control characters and special keys |
Input character validation (read verify) |
American National Standard Institute (ANSI) escape sequence detection |
Type-ahead feature |
Specifiable or default input terminators |
Special operating modes, such as NOECHO and PASTHRU |
Efficiency |
Limited full-duplex operation |
Formatted or unformatted output |
Modem control |
Hangup on logout |
Preservation of process across hangups |
Terminal/mailbox interaction |
Autobaud detection |
Out-of-band control character handling |
Input Processing
The terminal
driver defines many terminal characteristics and read function modifiers,
which provide a wide range of options to an application program.
These options allow multiple levels of control over the terminal driver's
input process, ranging from the default of command-line editing
that provides a highly flexible user interface, to the PASTHRU mode,
which inhibits input process interpretation of data.
Command-Line Editing and Command Recall
bThe terminal driver
input process defines a bounded set of line editing functions. You
can access these functions with control keys on all keyboards, and
with some special keys on certain keyboards as well. You can move
the cursor in single-character increments (left arrow or Ctrl/D,
right arrow or Ctrl/F) or in multicharacter increments, to the beginning
of the line (Ctrl/H) or end of the line (Ctrl/E). The terminal driver supports
both insert character and overstrike character modes. The insert
or overstrike mode is the terminal's default characteristic1 at the beginning of a read operation, but
you can change it with the toggle insert/overstrike key (Ctrl/A).
You can delete characters in word increments (Ctrl/J or line feed)
and beginning-of-the-line increments (Ctrl/U).
When you use the terminal driver's editing functions, the following restrictions result:
Command recall, initiated by Ctrl/B or the up arrow, returns the last line entered to the command-line buffer. At this point, you edit or reenter the line by pressing the Return key. DCL extends command recall to the last 20 commands by using the TRM$M_TM_NORECALL modifier to disable the terminal driver's recall mechanism.
Any control key that is not defined by line editing is ignored. For application programs that require control key input but do not perform QIO functions with special read modifiers, the SET TERMINAL/NOLINE_EDIT DCL command restores most of the terminal driver behavior described under OpenVMS Versions 3.0 through 3.7.
Control
Characters and Special Keys
A control
character is a character that controls action at the terminal rather
than passing data to a process. An ASCII control character has a
code between 0 and 31, and 127 (hexadecimal 0 through 1F, and 7F);
that is, all normal control characters plus DELETE. (
DEC Multinational Character Set lists the numeric values for all
control characters.)
You enter some control characters at the terminal by simultaneously pressing the Ctrl key and a character key, such as Ctrl/x. Terminal Control Characters lists the terminal control characters. You can change control character echo strings (Ctrl/C, Ctrl/Y, Ctrl/O, and Ctrl/Z) on a systemwide basis (refer to the HP OpenVMS System Management Utilities Reference Manual). You enter special keys, such as Return, Line Feed, and Escape, by pressing a single key.
Several of the control characters do not function as described if the DCL command SET TERMINAL/LINE_EDIT is not specified. Refer to the HP OpenVMS DCL Dictionary for information on line editing function keys and the SET TERMINAL command.
Control Character | Meaning |
---|---|
Cancel(Ctrl/C)
|
Gains the attention of the
enabling process if the user program has enabled a Ctrl/C AST. If
a Ctrl/C AST is not enabled, Ctrl/C is converted to Ctrl/Y (see
Enable Ctrl/C AST and Enable Ctrl/Y AST Function Modifiers).
The terminal performs a carriage-return/line-feed combination (carriage return followed by a line feed), echoes CANCEL, and performs another carriage-return/line-feed combination. If the terminal has the ReGIS characteristic or if Ctrl/Y is pressed, the cancel ReGIS escape sequence is sent. Additional consequences of Ctrl/C are as follows:
Note that Ctrl/C is generally translated to Ctrl/Y for processing within DCL, unless you have a Ctrl/C handler. Use LIB$ENABLE_CTRL and LIB$DISABLE_CTRL to get Ctrl/C and Ctrl/Y handled within your application. LIB$XXABLE_CTRL.C Terminal Driver Programming Example shows a programming example that demonstrates Ctrl/Y and Ctrl/C handling under OpenVMS. |
Delete Character (DELETE)
|
Removes the last
character entered from the input stream.
DELETE (decimal 127 or hexadecimal 7F) is ignored if there are currently no input characters. Hardcopy terminals echo the deleted character enclosed in backslashes. For example, if the character z is deleted, \ z\ is
echoed (the second backslash is echoed after the next non-DELETE
character is entered). Terminals that have the TT$M_SCOPE characteristic
echo DELETE by removing the character.
|
Delete line (Ctrl/U)
|
Purges current input data.
When Ctrl/U is entered before the end of a read operation, the current
input line is deleted. (In the
case of a line wrap, Ctrl/U deletes only a line at a time.) If line
editing is enabled (SET TERMINAL/LINE_EDIT is specified), the data
from the beginning of the line to the current cursor position is
deleted.
|
Delete word (Ctrl/J or F13) (Line
feed)
|
Deletes the word before the cursor. Word
terminators are all control characters, space, comma, dash, period,
and ! ' # $ & ' ( ) + @ [ \ ] ^ { | ~
/ : ; see
Tables).
|
Discard output (Ctrl/O)
|
Discards output. Action
is immediate. All output is discarded until the next read operation,
the next write operation with a IO$M_CANCTRLO modifier, or the receipt
of the next Ctrl/O. The terminal echoes
OUTPUT OFF. The current write operation (if any) and write operations
performed while Ctrl/O is in effect are completed with a status
return of SS$_CONTROLO.
A second Ctrl/O, which reenables output, echoes OUTPUT ON. Ctrl/C, Ctrl/Y, and Ctrl/T cancel Ctrl/O. |
End of line (Ctrl/E)
|
Moves the cursor to the
end of the line.
|
Exit (Ctrl/Z
or F10)
|
Echoes EXIT when Ctrl/Z
is entered as a read terminator. By convention, Ctrl/Z constitutes
end-of-file.
|
Interrupt (Ctrl/Y)
|
Ctrl/Y is a special interrupt
or attention character that is used to invoke the command
interpreter for a logged-in process. Ctrl/Y can be enabled with
an IO$M_CTRLYAST function modifier to a IO$_SETCHAR
or IO$_SETMODE function code. The command interpreter's Ctrl/Y AST
handler always takes precedence over a user program's Ctrl/Y AST
handler
Entering Ctrl/Y results in an AST to an enabled process to signify that the user entered Ctrl/Y from the terminal. The terminal performs a carriage-return/line-feed combination, echoes INTERRUPT, and performs another carriage-return/line-feed combination if the AST and echo are enabled. Ctrl/Y is ignored (and not echoed) if the process is not enabled for the AST. Additional consequences of Ctrl/Y are as follows:
|
Move cursor
left (Ctrl/D)
|
Moves the cursor one position
to the left.
|
Move cursor
right (Ctrl/F)
|
Moves the cursor one position
to the right.
|
Move cursor
to beginning of line (Ctrl/H or F12) (Backspace)
|
Moves the cursor to the
beginning of the line.
|
Purge type-ahead (Ctrl/X)
|
Purges the type-ahead buffer
and performs a Ctrl/U operation. Action is immediate. If a read
operation is in progress, the operation is equivalent to Ctrl/U.
|
Recall (Ctrl/B or up arrow)
|
Recalls the last command entered. DCL
extends recall to several commands.
|
Redisplay input (Ctrl/R)
|
Redisplays current input.
When Ctrl/R is entered during a read operation, a carriage-return/line-feed
combination is echoed on the terminal, and the current contents
of the input buffer are displayed. If the current operation is a
read with prompt (IO$_READPROMPT) operation, the current prompt string
is also displayed. Ctrl/R has no effect if the characteristic TT$M_NOECHO
is set.
|
Restart output (Ctrl/Q)
|
Controls data flow; used
by terminals and the driver. Restarts data flow to and from a terminal
if previously stopped by Ctrl/S. The action occurs immediately with
no echo. Ctrl/Q is also used to solicit read operations.
Ctrl/Q is meaningless if the line does not have the characteristic TT$M_TTSYNC, the characteristic TT$M_READSYNC, or is not currently stopped by Ctrl/S. |
RET (Return)
|
If used during a read (input)
operation, RET echoes a carriage-return/line-feed combination. All
carriage returns are filled on terminals with TT$M_CRFILL specified.
|
Stop output (Ctrl/S)
|
Controls data flow; used
by both terminals and the terminal driver. Ctrl/S stops all data
flow; the action
occurs immediately with no echo. Ctrl/S is also used to stop read
operations. Ctrl/S is meaningful only if the terminal has either
the TT$M_TTSYNC characteristic or the TT$M_READSYNC characteristic.
|
TAB(Ctrl/I)
|
Tabs horizontally. Advances
to the next tab stop on terminals with the characteristic TT$M_MECHTAB,
but the terminal driver assumes tab stops on MODULO 8 (multiples
of 8) cursor positions. On terminals without this characteristic,
enough spaces are output to move the cursor to the next MODULO 8
position.
|
Status (Ctrl/T)
|
Displays the current time.
Ctrl/T also displays the current node and user name, the name of
the image that is running, and information about system resources
that have been used during the current terminal session.
|
Toggle insert/overstrike (Ctrl/A
or F14)
|
Changes current edit mode from insert
to overstrike, or from overstrike to insert. The default mode (as
set with SET TERMINAL/LINE_EDIT) is reset at the beginning of each
line.
|
Read
Verify
The read verify instructions
provided by the terminal driver allow validation of data as each
character is entered. Invalid characters are not echoed and terminate
the operation. The terminal driver does not support full function
field processing. Large data entry applications should use one of
the DECforms, FMS, or TDMS layered products, which support the entire
data entry environment.
Escape
and Control Sequences
Escape and control sequences
provide additional terminal control not furnished by the control
characters and special keys (see
Control Characters and Special Keys). Escape sequences are strings of two or more characters,
beginning with the escape character (decimal 27 or hexadecimal 1B),
which indicate that control information follows. Many terminals
send and respond to such escape sequences to request special character
sets or to indicate the position of a cursor.
The set mode characteristic TT$M_ESCAPE (see Terminal Characteristics) is used to specify that terminal lines can generate valid escape sequences. Also, the read function modifier IO$M_ESCAPE allows any read operation to terminate on an escape sequence regardless of whether TT$M_ESCAPE is set. If either TT$M_ESCAPE or IO$M_ESCAPE is set, the terminal driver verifies the syntax of the escape sequences. The sequence is always considered a read function terminator and is returned in the read buffer; a read buffer can contain other characters that are not part of an escape sequence, but a complete escape sequence always terminates a read operation. The return information in the read buffer and the I/O status block includes the position and size of the terminating escape sequence in the data record (see Read Verify Function).
Any escape sequence received from a terminal is checked for correct syntax. If the syntax is not correct, SS$_BADESCAPE is returned as the status of the I/O. If the escape sequence does not fit in the user buffer, SS$_PARTESCAPE is returned. If SS$_PARTESCAPE is returned, the application program must issue enough single-character read requests, without timeout, to read the remaining characters in the escape sequence, while parsing the syntax of the rest of the escape sequence. Use of the TRM$_ESCTRMOVR item code prevents SS$_PARTESCAPE errors. No syntax integrity is guaranteed across read operations. Escape sequences are never echoed. Valid escape sequences take any of the following forms (hexadecimal notation):
ESC <int>...The keywords in the escape sequences indicate the following:<int>
<fin>
(7-bit environment) CSI<int>
...<int>
<fin>
(8-bit environment)
ESC
|
The ESC key, a byte (character)
of 1B. This character introduces the escape sequence in a 7-bit environment.
|
CSI
|
The control sequence introducer,
a byte (character) of 9B. This character introduces the escape sequence
in a 8-bit environment.
|
< int>
|
An "intermediate
character" in the range of 20 to 2F. This range includes
the space character and 15 punctuation marks. An escape sequence
can contain any number of intermediate characters, or none.
|
< fin>
|
A "final character" in
the range of 30 to 7E. This range includes uppercase and lowercase letters,
numbers, and 13 punctuation marks.
|
Three additional escape sequence forms are as follows:
ESC <;> <20-2F>...<30-7E> ESC <20-2F>...<30-7E> ESC <O><20-2F>...<40-7E>Control sequences, as defined by the ANSI standard, are escape sequences that include control parameters. Control sequences have the following format:
ESC [ <par>...The keywords in the control sequences indicate the following:<par>
<int>
...<int>
<fin>
(7-bit environment) CSI<par>
...<par>
<int>
...<int>
<fin>
(8-bit environment)
ESC
|
The ESC key, a byte (character)
of 1B.
|
[
|
A control sequence, a byte
(character) of 5B.
|
CSI
|
The control sequence introducer,
a byte (character) of 9B.
|
< par>
|
A parameter specifier in
the range of 30 to 3F.
|
< int>
|
An "intermediate
character" in the range of 20 to 2F.
|
< fin>
|
A "final character" in
the range of 40 to 7E.
|
For example, the position cursor control sequence is ESC [ Pl ; Pc H where Pl is the desired line position and Pc is the desired column position.
The user guides for the various terminals list valid escape and control sequences. For example, the VT100 User Guide lists the escape and control sequences for VT100 terminals.
Control Characters and Special Keys describes control character functions during escape sequences.
Sequences and Modes lists the valid ANSI and DIGITAL private escape sequences for terminals that have the TT2$M_ANSICRT, TT2$M_DECCRT, TT2$M_DECCRT2, TT2$M_AVO, TT2$M_EDIT, and TT2$M_BLOCK characteristics (see Extended Terminal Characteristics). Sequences and Modes also lists assumed and selectable ANSI modes and selectable DIGITAL private modes. Only the names of the escape sequences and modes are listed (for more information, refer to the specific user guide for the various terminals). Unless otherwise noted, the operation of escape sequences and modes is identical to the particular terminals that implement these features.
Type-Ahead
Feature
Input (data received)
from a terminal is always independent of concurrent output (data
sent) to a terminal. This feature is called type-ahead. Type-ahead
is allowed on all terminals, unless explicitly disabled by the set mode
characteristic, inhibit type-ahead (TT$M_NOTYPEAHD; see
Terminal Characteristics and
Set Mode).
Data entered at the terminal is retained in the type-ahead buffer until the user program issues an I/O request for a read operation. At that time, the data is transferred to the program buffer and echoed at the terminal where it was typed.
Deferring the echo until the read operation is active allows the user process to specify function code modifiers that modify the read operation. These modifiers can include, for example, noecho (IO$M_NOECHO) and convert lowercase characters to uppercase (IO$M_CVTLOW) (see Read QIO Function Modifiers for the Terminal Driver).
If a read operation is already in progress when the data is typed at the terminal, the data transfer and echo are immediate.
The action of the driver when the type-ahead buffer fills depends on the set mode characteristic TT$M_HOSTSYNC (see Terminal Characteristics and Set Mode). If TT$M_HOSTSYNC is not set, Ctrl/G (bell) is returned to inform you that the type-ahead buffer is full. The buffer must then be emptied, at which time a status of SS$_DATAOVERUN is returned. If TT$M_HOSTSYNC is set, the driver stops input by sending a Ctrl/S and the terminal responds by sending no more characters. These warning operations begin eight characters before the type-ahead buffer fills unless the TT2$M_ALTYPEAHD characteristic is set. In that case, the system generation parameter TTY_ALTALARM is used. The driver sends a Ctrl/Q to restart transmission when the type-ahead buffer empties completely, and the user has posted another READ QIO.
The type-ahead buffer length is variable, with possible values in the range of 0 through 32,767. The length can be set on a systemwide basis through use of the system generation parameter TTY_TYPAHDSZ. Terminal lines that do a large amount of bulk input should use the characteristic TT2$M_ALTYPEAHD, which allows the use of a larger type-ahead buffer specified by the system generation parameters TTY_ALTYPAHD and TTY_ALTALARM. (TTY_ALTYPAHD specifies the total size of the alternate type-ahead buffer; TTY_ALTALARM specifies the threshold at which a Ctrl/S is sent.)
Certain input-intensive applications, such as block mode input terminals, can take advantage of an optimization in the driver. If a terminal has the characteristic TT2$M_PASTHRU and the read function IO$M_NOECHO is specified, data is placed directly into the read buffer and thereby eliminates the overhead for moving the data from the type-ahead buffer.
Line Terminators
A line terminator
is the control sequence that you type at the terminal to indicate
the end of an input line. Optionally, the application can specify
a particular line terminator or class of terminators for read operations.
Terminators are specified by an argument to the QIO request for a read operation. By default, they can be any ASCII control character except FF, VT, LF, TAB, or BS (see Tables). If line editing is enabled, the only terminators are CR, Ctrl/Z, or an escape sequence. Control keys that do not have an editing function are nonfunctioning keys. If included in the request, the argument is a user-selected group of characters (see Read Function Terminators).
All characters are 7-bit ASCII characters unless data is input on an 8-bit terminal (see Read). The characteristic TT$M_EIGHTBIT determines whether a terminal uses the 7-bit or 8-bit character set; see Terminal Characteristics. All input characters (except some special keys; see Control Characters and Special Keys) are tested against the selected terminators. The input is terminated when a match occurs or your input buffer fills.
The terminal driver notifies the job controller to initiate login when it detects a carriage-return terminator on a line with no current process (provided the line is not a secure server or the type-ahead feature has not been disabled). A bell character is sent when the notification occurs. A notification character other than the bell character may be specified by setting the system generation parameter TTY_AUTOCHAR.
Special
Operating Modes
The terminal
driver supports many special operating modes for terminal lines.
(
Terminal Characteristics and
Extended Terminal Characteristics list these modes.) All special modes
are enabled or disabled by the set mode and set characteristics
functions (see
Set Mode).
Output
Processing
Output handling
is designed to be very efficient in the terminal driver. For example,
on multiplexers that support both silo and direct memory access
(DMA) ouput, the driver considers record size to decide dynamically
which mode will result in the least overhead. The block size specified
by the system generation parameter TTY_DMASIZE is the minimum size
block that can be used in a DMA operation.
Duplex Modes
The terminal driver can
execute in either half- or full-duplex mode. These modes describe
the terminal driver software, specifically the ordering algorithms
used to service read and write requests, not the terminal communication
lines.
In half-duplex mode, all read and write requests are inserted onto one queue. The terminal driver removes requests from the head of this queue and executes them one at a time; all requests are executed sequentially in the order in which they were issued.
In full-duplex mode, read requests (and all other requests except write requests) are inserted onto one queue and write requests onto another. The existence of two queues allows the driver to recognize the presence of two requests, such as a read request and a write request at the same time. However, the driver does not execute the read request and the write request simultaneously. When it is ready to service a request, the driver decides which request--the read request or the write request--to process next.
The following terms describe the state of a read request:
In the terminal driver, write requests usually have priority. A write request can interrupt an active, but not started, read request.
The terminal driver does not start a read request until all outstanding writes are completed. This means that a read request could be removed from the head of the read queue while write requests are outstanding, but the first character is not moved into the read buffer until all outstanding writes are completed.
Once a read request is started, all write requests are queued until the read completes. However, during a read operation many write requests can be executed before the first input character is entered at the terminal. Terminal lines that have the TT$M_NOECHO characteristic, or read functions that include the IO$M_NOECHO function modifier, do not inhibit write operations in full-duplex mode.
If a write function specifies the IO$M_BREAKTHRU modifier, the write operation is not blocked, even by an active read operation. IO$M_BREAKTHRU does not change the order in which write operations are queued.
When all I/O requests are entered using the Queue I/O Request and Wait ($QIOW) system service, there can be only one current I/O request at a time. In this case, the order in which requests are serviced is the same for both half- and full-duplex modes.
The type-ahead buffer always buffers input data for which there is no current read request, in both half- and full-duplex modes.
Formatting of Output
By default, output data is subject to formatting by the terminal
driver. This formatting includes actions such as wrapping, tab expansion,
uppercase, and fallback conversions. Applications that do not require
formatting of data can write with
the IO$M_NOFORMAT modifier and thereby reduce overhead. IO$M_NOFORMAT overrides
all formatting except fallback translation. Setting the PASTHRU
mode (TT2$M_PASTHRU) is equivalent to writing with the noformat modifier.
Fallback conversions occur regardless of formatting mode.
SET HOST Facility and Output Buffering
The SET HOST facility
emulates the terminal driver in the way it writes data to the terminal
by stopping the display as soon as the abort character is entered.
However, the SET HOST facility behaves differently from the terminal
driver in that it buffers output data from the program that is executing.
Occasionally, this causes a perception problem for the user when
the program is aborted with a Ctrl/C, Ctrl/Y, or an out-of-band
abort character. The user expects the program to terminate and the
display to stop immediately.
CTDRIVER and RTPAD
When used between two systems, the SET HOST facility consists of two components: RTPAD on the local node and CTDRIVER on the remote node. Both components buffer output data to enhance performance when using wide area networks. CTDRIVER performs the initial buffering, queues the buffers for network transfer, and returns a successful write status. The user should note that the local terminal display reflects the output of the executing program after the data has been buffered and transferred over the network--not as the output buffers are filled on the remote node.
The delay between execution of an application and the display of its output can lead to several anomalies in the effects of Ctrl/C, Ctrl/Y, and out-of-band abort characters.
Output Line Not in Sequence Following an Abort Character
After you enter an abort character (Ctrl/C, Ctrl/Y, or an out-of-band abort character) that causes the input or output to be aborted, it is possible to receive an additional line of output. This occurs when the application program calls $QIO (either directly or indirectly through RMS or language support routines) to output data to a buffer at the same time the abort character is entered.
When CTDRIVER receives the abort character (Ctrl/C, Ctrl/Y, or an out-of-band abort character) from the network, it flushes the current output buffers and aborts any pending read operations. However, if the application program calls $QIO with a write operation when the abort character is entered, the $QIO write data is still buffered and then displayed. The data may not be the next output in sequence from the user's point of view, since all the previous output buffers in CTDRIVER were flushed and the data in them was not displayed.
When using the terminal driver, the effect of an abort character on the display screen is different. The terminal driver does not buffer output from the application during program execution. If the application program has just called $QIO with a write operation when the abort character is entered, then the $QIO write data is displayed. Because all write operations are sequential and do not complete until the output is actually displayed, the additional line displayed is in sequence. There is no break in the data. Normally, the user will not notice that there is an additional line.
Extra Input Prompt Following an Abort Character
For connections between systems, the CTERM protocol allows CTDRIVER to synchronize with RTPAD before displaying any more data on the terminal.
Prior to VAX VMS Version 5.2, a control character entered
during program execution to abort input and output could cause the
system to display more than one input prompt. If the SET HOST facility is used between systems running VMS Version 5.2 and an earlier version, the extra input prompt is still displayed. |
The abort character AST is delivered after the message describing the aborted read operation has been received. Therefore, the read status should be set very shortly after the abort character AST is delivered to the application. Note, however, these are still two asynchronous events, and the application must still synchronize with the completing read operation.
Prior to VAX VMS Version 5.2, if an application had a read operation pending and had queued a Ctrl/C, Ctrl/Y, or out-of-band abort character AST, it was possible to queue multiple read operations unknowingly when the read operation was aborted. |
CTDRIVER and RTPAD emulate the terminal driver in that the current read operation and all pending write operations abort when Ctrl/Y is entered. However, the pending write operations also include all the buffered output that occurred and that would have been output before the Ctrl/Y was entered but due to the buffering was not.
The effect of the buffering can be confusing if a Ctrl/Y is entered when a captive command procedure is executing. During execution of captive command procedures, DCL has a Ctrl/Y pending. When this AST is delivered, DCL only reenables it; no other action is performed. In that case, if the program being executed only performs output, it appears that the program was aborted by the Ctrl/Y. Actually, the program completed execution before the Ctrl/Y was entered, and the Ctrl/Y merely discarded all the buffered output.
Dialup
Support
The operating system
supports modem control (for example, Bell 103A, Bell 113, or equivalent)
for all supported multiplexers in autoanswer, full-duplex mode.
The terminal driver does not support half-duplex operations on modems
such as the Bell 202. Also not supported are modems that use circuit
108/1 (connect data set to line signal) in place of the data terminal
ready (DTR) signal. Most U.S. and European modems use the data terminal
ready signal, which is the signal supported by the operating system.
Modem Signal Control
Dialup lines
with the characteristic TT$M_MODEM are monitored periodically to
detect a change in the modem carrier signals data set ready (DSR),
calling indicator (RING), or request to send (RTS). The system generation
parameter TTY_SCANDELTA establishes the dialup monitoring period
for multiplexers that do not support modem signal transition interrupts
(see
Supported Terminal Devices).
If a line's carrier signal is lost, the driver waits 2 seconds for the carrier signal to return. If bit 0 of the system generation parameter TTY_DIALTYPE is set to 1, the driver does not wait. Bit 0 is 0 by default for countries with Bell System standards, but that bit should be set to 1 for countries with International Telegraph and Telephone Consultative Committee (CCITT) standards. If the carrier signal is not detected during this time, the line is hung up. The hangup action can signal the owner of the line, through a mailbox message, that the line is no longer in use. (No dial-in message is sent; the unsolicited character message is sufficient when the first available data is received.) The line is not available for a minimum of 2 seconds after the hangup sequence begins. The hangup sequence is not reversible. If the line hangs up, all enabled Ctrl/Y and out-of-band ASTs are delivered; the Ctrl/Y AST P2 argument is overwritten with SS$_HANGUP. The I/O operation in progress is canceled, and the status value SS$_HANGUP is returned in the I/O status block. DCL is responsible for process deletion after Ctrl/Y is delivered. If the process is suspended, DCL cannot run, and therefore deletion cannot occur, until the process is resumed.
Some systems, such as the VAXstation 3100, provide built-in serial lines using 6-pin modular jacks. These lines do not provide the minimum required modem signals. Although the hardware may allow a dial-out connection to be established, hangup cannot be detected and process deletion will not occur on these lines. |
A line that does not have TT$M_MODEM set does not respond to modem signals or set the DTR signal. Modem signals can be set and sensed manually through use of the IO$M_MAINT function modifier (see Set Modem Function Modifier).
The terminal driver default modem protocol meets the requirements of the United States and of European countries. This protocol is capable of working in automatic answer mode and can also perform manually dialed outgoing calls. The protocol supports the requirements of most known international telephone networks. Enhanced modem features are used on multiplexers that support them; processor polling is not necessary. The protocol also functions in a subset mode for the multiplexers that do not support full modem signals (see Supported Terminal Devices).
Control and Data Signals (Full Modem Mode Configuration) lists the control and data signals used in a full modem control mode configuration (in a two-way simultaneous, symmetrical transmit mode). Modem Control: Two-Way Simultaneous Operation is a flowchart that shows a typical signal sequence for a terminal operation in this mode. The flowchart shows the states that the modem transition code goes through to detect different types of transitions in modem state. These transitions allow the driver to detect loss of lines that have been idle for several minutes. Modem states do not affect the ability of the system to transmit characters.
Figure 1 Modem Control: Two-Way Simultaneous Operation |
Set mode function modifiers are provided to allow a process to activate or deactivate modem control signals (see Set Modem Function Modifier).
Bit 1 of the system generation parameter TTY_DIALTYPE enables alternate modem protocol on a systemwide basis. If bit 1 is 0 (the default), the RING signal is not used. If bit 1 is 1, the modem protocol delays setting the DTR signal until the RING signal is detected.
Remote terminal connections have a timeout feature for the security of dialup lines. If no channel is assigned to the port within 30 seconds, or a port with an assigned channel is not allocated, the DTR signal is dropped. Such action prevents an unused terminal from tying up a line. However, there are configurations (such as a printer connected to a remote line) in which the line should not be dropped even though it is not being used interactively. To bypass the 30-second timeout, set the system generation parameter TTY_DIALTYPE to 4. (Note that if TTY_DIALTYPE is equal to 4, all dialup lines will skip the timeout waiting for a channel to be assigned.)
Signal | Source | MUX2 | Meaning |
---|---|---|---|
Transmitted data (TxD)
|
Computer
|
All
|
The data originated by the
computer and transmitted through the modem to one or more remote
terminals.
|
Received data (RxD)
|
Modem
|
All
|
The data generated by the
modem in response to telephone line signals received from a remote terminal
and transferred to the computer.
|
Request to send (RTS)
|
Computer
|
Full
|
If present (ON condition),
RTS directs the modem to assume the transmit mode. If not present(OFF condition),
RTS directs the modem to assume the nontransmit mode after all transmit
data has been transmitted.
|
Clear to send (CTS)
|
Modem
|
Full
|
Indicates whether the modem
is ready (ON condition) or not ready (OFF condition) to transmit
data on the telephone line.
|
Data set ready (DSR)
|
Modem
|
Full
|
If present (ON condition),
DSR indicates that the modem is ready to transmit and receive; that
is, the modem is connected to the line and is ready to exchange
further control signals with the computer to initiate the exchange
of data.
|
|
|
|
If DSR is not present (OFF
condition), the modem is not ready to transmit and receive. If DSR
is detected, the operating system initiates a 30-second timer. This
ensures that the phone line will be disconnected if CARRIER is not
detected.
|
Data channel received
line signal detector (CARRIER)
|
Modem
|
All
|
If present (ON condition),
CARRIER indicates that the received data channel line signal is within
appropriate limits, as specified by the modem. If not present (OFF
condition), the received signal is not within appropriate limits.
|
Data terminal ready (DTR)
|
Computer
|
All
|
If present (ON condition),
DTR indicates that the computer is ready to operate, prepares the
modem to connect to the telephone line, and maintains the connection
after it has been made by other means. DTR can be present whenever
the computer is ready to transmit or receive data. If DTR is not
present (OFF condition), the modem disconnects the modem from the
line.
|
Calling indicator (RING)
|
Modem
|
All
|
Indicates whether a calling signal is
being received by the modem. Bit 1 of the system generation parameter
TTY_DIALTYPE must be set (=1). If RING is detected, the operating
system initiates a 30-second timer. This ensures that the phone
line will be disconnected if CARRIER is not detected.
|
Hangup on Logging Out
By default, logging out on a line with modem signals will
not break the connection. If TT2$M_HANGUP is set, modem signals
are dropped when the process logs out. If TT2$M_MODHANGUP is set,
no privilege is required to change the state of TT2$M_HANGUP. By
setting TT2M_HANGUP, system managers can prevent nonprivileged users
who are not logged in from tying up a dial-in line.
Preservation of a Process Across Hangups
Disconnectable terminals
allow a connection to a physical terminal line to be broken without
losing the job.
On VAX systems, the following SYSGEN command allows terminals
to be disconnectable terminals:
|
|
Following are four ways in which a terminal can become disconnected:
After validated as a user, you can connect to a disconnected process in either of the following ways:
Terminal/Mailbox
Interaction
Mailboxes are virtual
I/O devices used to communicate between processes. The terminal
I/O driver can use a mailbox to communicate with a user process.
Mailbox Driver describes the mailbox
driver.
A user program can use the Assign I/O Channel ($ASSIGN) system service to associate a mailbox with one or more terminals. The terminal driver sends messages to this mailbox when terminal-related events that require the attention of the user image occur.
Mailboxes used in this way carry status messages, not terminal data, from the driver to the user program. For example, when data is received from a terminal for which no read request is outstanding (unsolicited data), a message is sent to the associated mailbox to indicate data availability. On receiving this message, the user program reads the channel assigned to the terminal to obtain the data. Messages are sent to mailboxes under the following conditions:
Messages placed in the mailbox have the following content and format (see Terminal Mailbox Message Format):
Figure 2 Terminal Mailbox Message Format |
Interaction with a mailbox associated with a terminal occurs through standard QIO functions and ASTs. Therefore, the process need not have outstanding read requests to an interactive terminal to respond to the arrival of unsolicited data. The process need only respond when the mailbox signals the availability of unsolicited data. Mailbox Driver contains an example of mailbox programming.
The ratio of terminals to mailboxes is not always one to one. One user process can have many terminals associated with a single mailbox.
Autobaud
Detection
If
you specify the /AUTOBAUD qualifier with the SET TERMINAL command,
automatic baud rate detection is enabled, allowing the terminal
baud rate to be set when you log in. The baud rate is set at login
by pressing the Return key two or more times separated by an interval
of at least one second. (Pressing a key other than Return might
detect the wrong baud rate; if this occurs, wait for the login procedure
to time out before continuing.) The supported baud rates are 110,
150, 300, 600, 1200, 1800, 2400, 3600, 4800, 9600, and 19,200. Newer
Alpha systems can autobaud up to 57600. Parity is allowed
on these lines.
The autobaud function works with either even parity or no parity, but not with odd parity. If a line is set to even parity and has 7 bits of data, the line automatically switches to no parity if a terminal not generating parity attempts to log in.
The SET TERMINAL qualifier /EIGHT_BIT specifies that the terminal uses 8-bit ASCII code. /NOEIGHT_BIT, which is the default, specifies 7-bit ASCII code. (If parity is specified, the parity bit is separate from the data bits.) The optimal settings for automatic baud rate detection on HP terminals are /NOEIGHT_BIT/PARITY=EVEN or /EIGHT_BIT/NOPARITY, although automatic baud rate detection also works with other combinations, such as /NOEIGHT_BIT/NOPARITY.
Extended Terminal Characteristics describes the terminal characteristic TT2$M_AUTOBAUD, which allows the baud rate to be set automatically at login.
HP does not usually recommend specifying the /FRAME qualifier with the SET TERMINAL command. The terminal driver selects the frame size (the number of data bits that the device can transmit) based on how the /PARITY and /EIGHT_BIT qualifiers are set. It might be necessary to change these values if the terminal is not made by HP.
Out-of-Band
Control Character Handling
All control characters
(0 through 1F hexadecimal) can be enabled as out-of-band characters.
Typing one of these characters immediately delivers an AST to the
requesting process. DCL uses this mechanism to sense whether Ctrl/T
has been entered. Out-of-band character options allow using the
IO$M_INCLUDE function modifier to include the character in the data
stream and the IO$M_TT_ABORT
function modifier to abort the current input or output operation.
1 HP suggests that new users specify overstrike mode.
2 Multiplexers (All = any supported controller; Full = DZ32, DMF32, DMB32, DMZ32, DHU11, DHV11, and CXY08).
( Number takes you back )
|
|