.PAPER SIZE 60,72;.LEFT MARGIN 9;.RIGHT MARGIN 72 .TITLE TEM - Terminal EMulator program _. .BLANK 20 .CENTER;TEM - Terminal EMulator program .CENTER;--- - -------- -------- ------- .BLANK 24 .LEFT MARGIN +40 .NOPERIOD;.NOFILL T. R. Wyant .BLANK 16-May-1984 .BLANK;.INDENT -5 Rev: 18-Mar-1987 .LEFT MARGIN -40;.PERIOD;.FILL .SUBTITLE Overview .PAGE .PARAGRAPH Task TEM provides terminal emulation over a full duplex TT: line. Input to the remote system can come either from the initiating terminal or a file. Output from the remote system is displayed on the initiating terminal, and can be optionally logged in a file. System-wide, unit-specific startup and shutdown command files can be executed, if present. The user can also select from the following features: .LEFT MARGIN +8;.BLANK .INDENT -4 * Local Echo .INDENT -4 * Parity generation and checking. .INDENT -4 * Automatic linefeed on carriage return .INDENT -4 * Translation of inbound control characters to ASCII abbreviations .INDENT -4 * Passthru of control/s, control/q, control/o and control/x to the remote system .INDENT -4 * User selectable attention and end-of-file characters. .INDENT -4 * Redefinition of any desired character to any other. .INDENT -4 * Specifiable delay and prompt character for file transfer. .LEFT MARGIN -8 .PARAGRAPH A fully functional TEM is distributed as TEM.TSK. This TEM requires at least RSX-11M+ V2.0, or RSX-11M V4.0 with the full-duplex TT: driver, get/set multiple characteristics, and unsolicited input AST's. It will also work under RSX-11S V4.x as long as file I/O or command passing are not used. You can also run it under VAX-11 RSX, as long as you don't need the _/SPEED or _/REMOTE switches. There is a reduced-functionality version for RSX-11M+ V1.0 and RSX-11M V3.2 (with full-duplex TT:, etcetera) distributed as TEM32.TSK. This version must still be built under at least M+ V2.0 or M V4.0. .PARAGRAPH TEM can be initiated from a terminal on the TT:, HT:, or VT: driver, though there are restrictions on its use from a virtual terminal. It can communicate with any device on the TT:, HT:, or NL: driver. Support for the NL: driver was used for development and debugging, but was left in for use in demo/practice sessions. .PARAGRAPH It is recommended (though not required) that TEM be used only to drive lines that run at 1200 baud or less, and that TEM be initiated from a terminal that is at least as fast as the line to be driven. The buffers are large (512 bytes as distributed), but could be overrun with a determined effort. If you must drive a fast line from a slow terminal, see the "Advanced Features" section for some tips. .PARAGRAPH TEM has been used to communicate with (at least) the folowing systems: .LEFT MARGIN +10;.NOFILL RSX-11M+ Univac 1100 TP monitor RSTS/E X.25 networks VMS Apple DOS TOPS-20 P/OS .FILL;.LEFT MARGIN -10 Theoretically, any system that supports two stop bits, and either a 7-bit character set plus parity is accessable through TEM. .PARAGRAPH NOTICE - There was an incompatibility with earlier versions of TEM introduced at version 84.221. The /PAUSE switch can no longer be abbreviated to two characters, because of the conflict with /PARITY. The new switch /DELAY serves the same purpose. The /PAUSE switch should be considered a "declining feature", and will be eliminated at some future time. .SUBTITLE Short Course. .PAGE .PARAGRAPH You can normally invoke TEM just by typing its name: .INDENT 10 >TEM .BREAK TEM will issue a prompt, .INDENT 10 TEM> .BREAK to indicate its presence at your terminal, and its readiness to accept a command. You can also exit from TEM any time it displays the "TEM>" prompt by entering a control/z. .PARAGRAPH In response to the first "TEM>" prompt, you should enter the name of the device you wish to communicate with (eg: TT7:) in the usual RSX format. Under VMS, device names in the VMS format are also legal (eg: TXA2:) provided your system manager has set the named device up for use by a compatability-mode image. .PARAGRAPH Depending on your installation and the device you specify, TEM may automatically issue some setup commands to the remote device. Then, it will issue the message .INDENT +5 TEM - Ready for terminal input. .BREAK At this point, your terminal is connected to the remote device. Anything you type will be sent to the remote device, and anything the remote device sends will be displayed on your terminal. If you need to get back to the "TEM>" prompt (which you must do to exit), type a control/c. If you wish to switch to a different remote device at this point, you may do so by entering its name as before. If you wish to continue with the same remote device, you do not need to name it again in your command. .PARAGRAPH TEM offers a variety of command switches to configure it to your application. These are specified by appending them to the device name (if any) in response to the "TEM>" prompt. Details on these switches and their effects are given below. For a "plain vanilla" terminal emulation, the following switches will probably be most useful: .LEFT MARGIN +8 .BLANK;.INDENT -4 /ATTENTION:character .BREAK If you need to send a control/c to the remote system, you can use this switch to select another character to use to get the "TEM>" prompt. See the end of this section for how to specify a character to TEM. .BLANK;.INDENT -4 /LOG:filename .BREAK This lets you log all data sent from the remote system in the file you name. Basicly, anything you see on your screen will be logged. This mechanism can be used to receive ASCII files from the remote system. Formatted-screen ("forms") work may not reproduce exactly if you copy the file to your terminal. To stop logging, use "/NOLOG". .BLANK;.INDENT -4 /SEND:filename .BREAK This lets you send the named file to the remote system. By default, TEM will wait until 15 "ticks" after the last linefeed before sending the next record in the file. This has so far been satisfactory for regular file transfer. If you have trouble, or if you are trying to submit commands to the remote system using the /SEND feature, you can modify this behaviour using the /DELAY or /PROMPT switches; you may also need the /EOF switch to specify what TEM is to do at the end of your /SEND file. .BLANK Note that the use of the /SEND switch does NOT determine what happens to your file once it arrives on the remote system. It is up to you to create an environment where your data will be correctly interpreted. For example: if you wish to create a file on the remote system that corresponds to the file you are sending, you must issue a command to the remote system like .INDENT +4 COPY TI: MYFILE .BREAK before you issue the /SEND switch to TEM. .BLANK;.INDENT -4 /STOP .BREAK This switch suspends TEM, allowing you to issue CLI commands to your local system. You can then restart TEM, and pick up where you left off. .BLANK;.INDENT -4 / .BREAK This is the "null" switch. You must (unfortunately) specify this in response to the "TEM>" prompt if you wish to resume what you were doing without making any other changes. .LEFT MARGIN -8;.BLANK More information on all these switches can be found in the "Switches" section. .PARAGRAPH To specify a character parameter (say, for the /ATTENTION switch), there are several options available, to suit individual preferences, and to circumvent limitations in DEC's standard command line handler (which is insensitive to case, among other things): .LEFT MARGIN +5 .BLANK;.INDENT -2 * For all PRINTING characters except lowercase, numbers, ":", "/", "_^", "'", and "%", you can just specify the character itself; eg, .INDENT +5 /ATTENTION:* .BREAK to use an asterisk. .BLANK;.INDENT -2 * For lowercase letters, precede the letter with a percent sign; eg, .INDENT +5 /ATTENTION:%Z .BREAK to use a lower-case "Z". Note that .INDENT +5 /ATTENTION:z .BREAK won't work, as TEM converts all commands to uppercase before interpreting them. .BLANK;.INDENT -2 * For numerals, and the special characters ":", "/", "_^", "'", """, "*", and "%", preceede the character with an apostrophe ("'"); eg, .INDENT +5 /ATTENTION:'% .BREAK to use a percent sign. .BLANK;.INDENT -2 * For control characters, precede the "letter" with a caret ("_^", up arrow, or shift/6); eg, .INDENT +5 /ATTENTION:_^G .BREAK to use a control/g (bell). .LEFT MARGIN -5 .BLANK See the end of the "Switches" section for a fuller discussion of how to specify characters to TEM. .SUBTITLE TEM commands. .PAGE .PARAGRAPH TEM is invoked in the normal ways (see below). In a "plain vanilla" run, the user specifies the device/unit of the line connected to the remote system, and TEM goes into "terminal input" mode. At this point, anything the user types will be sent to the remote system, and anything the remote system sends back will be displayed on the user's terminal. The user can get the TEM prompt again by typing the "attention" character, which is initially "control/c", but which can be changed using the "/ATTENTION" switch. From here, the user can change his setup, switch lines, send a file (using the "/SEND:" switch), or exit by typing "control/z". .PARAGRAPH It was anticipated that a major use for TEM would be remote ASCII file transfer. The input file may have any carriage control attribute available on the PDP-11, though COBOL carriage control has not been tested. The implied carriage control will be generated for each record transmitted. The input file may contain control characters, but no guarantees are made as to how the remote system interprets them. A programmed delay after each record is available to avoid loading the remote system too heavily. While data from an input file is being sent, all keyboard input except the attention character is ignored. Typing the attention character will cause the send operation to be aborted, and return you to the TEM prompt. .PARAGRAPH Data from the remote system can be captured in a log file, with either "List" or "No" implied carriage control. If no implied carriage control is selected, all data sent is put in the log file, with a record break after each carriage return. If "List" carriage control is selected, TEM produces output records designed to make the file resemble the actual received data as closely as possible. The algorithm seems fairly solid, but weird combinations may produce weird results. In particular, if any number of linefeeds are followed immediately by a formfeed, the linefeeds will not make it to the output file. .PARAGRAPH TEM can be installed and/or invoked by all the "standard" methods: .LEFT MARGIN +8 .INDENT -4 If not installed, .BREAK >RUN TEM .BREAK TEM>command .BREAK TEM>command .BREAK TEM>_^Z .INDENT -4 If installed as ...TEM, .BREAK >TEM command .INDENT -2 or .BREAK >TEM .BREAK TEM>command .BREAK TEM>command .BREAK TEM>_^Z .LEFT MARGIN -8 In any case, a valid command takes one of two forms: .INDENT 4 TEM> .BREAK or .INDENT 4 TEM>@filename .TESTPAGE 4 .PARAGRAPH In the first case, "" represents any device name (including logical assignments) that conforms to the usual RSX format. If running under VMS, device names in VMS format (eg: TXA3:) are also allowed, though logical assignments that do not conform to the expected device name format will not be accepted. represents one or more function switches. Both "" and "" are normally optional; however, TEM will require a device name if it does not have one from a previous command line. If a device name is specified and the /HOLD switch is not in effect, TEM will execute the shutdown command file (if any) for the old device, hang up the old device, attach to the new device, and execute its startup command file (if any). If your command line contains both a device name and switches, TEM will parse your switches, but only the /HOLD switch takes effect immediately. The rest of your command line will be executed after the shutdown and startup command files. Any switches appearing in these files will remain in effect unless overridden in your command line. .PARAGRAPH In the case of the "@filename" command, the file is assumed to contain valid TEM commands. These command files may be nested up to three deep. Startup and shutdown command files do not count against your total. The default filespec elements are: .NOFILL Device SY: UIC Current Default File Name no default File Type .CMD File Version Highest .FILL Note that if TEM is invoked as .INDENT +8 >TEM command .BREAK TEM will prompt you after executing the command on the MCR command line, unless the /EXIT switch has been asserted. This is in contrast to the normal action (eg, PIP), which is to exit as soon as the command is completed. See the /EXIT switch for more details. .SUBTITLE Switches. .PAGE .PARAGRAPH The command line switches may be negated by preceding either "-" or "NO". All switch settings and parameters "latch" to the last specified value except as noted. Switch names may be abbreviated to two characters. Note that some of the switches imply others. This is a convenience, since certain features are normally selected together. For instance, "/TERMINAL" implies "/ECHO" (among others). Implied switches can be overridden by explicit switches on the same or subsequent command lines. For instance, in "/NOECHO/TERMINAL" the explicit "/NOECHO" overrides the "/ECHO" implied by "/TERMINAL". The order of switches in a command line does not affect its meaning. The following switches are supported: .BLANK 2 .LEFT MARGIN +8 .BLANK;.TESTPAGE 3;.INDENT -4 /ASSIGN:char:char .BREAK Specifies that the right-hand character is to be translated into the left-hand character before being transmitted to the remote terminal. Inbound characters are not affected. Note that you can have more than one /ASSIGN in effect at a time, though you can only specify one /ASSIGN switch on any given command line; for instance, a series of commands like "/ASSIGN:'A:%A" could translate all lowercase input to uppercase before transmittal to the remote system. If the switch is negated, the assignment table is cleared, and characters are not translated. The negated version of the switch takes no parameters. The initial setting is .INDENT +8 /NOASSIGN .BLANK;.TESTPAGE 3;.INDENT -4 /ATTENTION:char .BREAK Specifies the character to type to get a TEM prompt. If you are transmitting from a file, typing this character will cause the file to be closed. This switch can not be negated. The initial setting is .INDENT +8 /ATTENTION:_^C (control/C) .BLANK;.TESTPAGE 3;.INDENT -4 /CARRIER[:comparison string][:nnnt] .BREAK Enables the reassertion of the desired terminal characteristics while the remote terminal line is set /REMOTE. This action is required because the TT: driver clears several characteristics that TEM needs when it detects carrier on a /REMOTE line. The input stream is scanned for a match with the comparison string. When a match is found, the terminal characteristics are reset after the delay specified in "nnnt". See the end of the "Switches" section for the general syntax for a comparison string; see the write up on the /DELAY switch (below) for the syntax for "nnnt". For this switch, the maximum length of the comparison string is 20 characters. A delay of 0T will cause the reset to occur immediately. Negating the switch, specifying a null match string, or setting /NOREMOTE will disable the function. The parameters can be specified in either order. Omitted parameters default to the last value specified. The initial setting is .INDENT +8 /CARRIER:*"PASSWORD":0T .BREAK (ie - case-insensitive match on "PASSWORD", and reassert the desired characteristics immediately). .BLANK;.TESTPAGE 3;.INDENT -4 /CHECKPARITY[:char] .BREAK Enables or disables parity checking on inbound characters. Also specifies the character to insert in place of any inbound characters with bad parity. If no character is specified, the last explicitly-given bad parity character is used. The initial setting is .INDENT +8 /NOCHECKPARITY:_^Z (control/Z) .BLANK;.TESTPAGE 3;.INDENT -4 /COMMAND .BREAK Determines what to do after executing a command. If set, TEM will prompt for another command. If reset, TEM will enter terminal input mode after executing a command. The initial setting is .INDENT +8 /NOCOMMAND .BLANK;.TESTPAGE 3;.INDENT -4 /DELAY[:nnnt] .BREAK Specifies the time to pause between records sent from a file. The "nnn" is a positive decimal number less than 32768, and the "t" is the letter "T" (for ticks), "S" (for seconds), "M" (for minutes), or "H" (for hours). You may not specify a time greater than 24 hours. If the switch is negated, no pause is done. If the /PROMPT switch is negated, the pause is from when the record is sent. If the /PROMPT switch is asserted, the pause is from receipt of the prompt character; if another prompt character arrives before the pause timer elapses, it is restarted. The initial setting is .INDENT +8 /DELAY:15T .BLANK;.TESTPAGE 3;.INDENT -4 /ECHO .BREAK Local echo. If set, all characters typed on the user's terminal or sent from a file will be echoed on the user's terminal (and logged in the log file if one is open). The echoed character is subject to the action of both the /ASSIGN keyword (on output) and the /TRANSLATE keyword (on input), just as a character echoed remotely would be. The initial setting is .INDENT +8 /NOECHO .BLANK;.TESTPAGE 3;.INDENT -4 /EOF[:char] .BREAK Specifies the character to transmit upon encountering end of file on an input file. Negating the switch causes no EOF character to be sent. Asserting it with no parameter causes the most recently specified EOF character to be sent, even if specified as /-EOF:char. The initial setting is .INDENT +8 /EOF:_^Z (control/Z). .BLANK;.TESTPAGE 3;.INDENT -4 /EXIT .BREAK Causes TEM to exit on the next "command level end of file". A "command level end of file" occurs: .LEFT MARGIN +8 .BLANK;.INDENT -4 If you invoked TEM as "TEM @file", when TEM encounters a syntax error, or the end of the top level command file; .BLANK;.INDENT -4 If you invoked TEM as "TEM command", as soon as the command is complete (normally, this happens when you type the attention character); .BLANK;.INDENT -4 If you invoked TEM as "RUN TEM" or "TEM", when you enter a control/z in response to the TEM prompt. .LEFT MARGIN -8;.BLANK If this switch is negated when TEM encounters a command level end of file, TEM will implicitly assert it, and prompt you for a command. The initial setting is .LEFT MARGIN +12 .INDENT -4 /EXIT if you invoked TEM by "RUN TEM" or by "TEM", or .INDENT -4 /NOEXIT if you invoked TEM by "TEM @file" or "TEM command". .LEFT MARGIN -12 .BLANK;.TESTPAGE 3;.INDENT -4 /HOLD .BREAK Prevents the line from being hung up on line change or exit. The initial setting is .INDENT +8 /NOHOLD .BLANK;.TESTPAGE 3;.INDENT -4 /LIST .BREAK Specifies that the log file, when and if opened, should have "List" carriage control. TEM will then analyze the input stream and attempt to duplicate the effect of the real form control characters received by positioning the record breaks appropriately. Perverse combinations of form control characters may yield perverse results. In particular, combinations like .INDENT +8 .BREAK will foul things up. It is recommended that /NONULL be used if /LIST is asserted. .BLANK If this switch is negated, the log file is opened with no implied carriage control, and all characters are written to it with a record break after each . The initial setting is .INDENT +8 /LIST .BLANK;.TESTPAGE 3;.INDENT -4 /LOG[:file] .BREAK Specifies that the characters coming over the communication line should be logged to a file. If no file name is given (or if the switch is on due to being specified in a previous command line), the last log file will be opened, and the new data appended to it. In this case, the current setting of the /LIST switch will be ignored; carriage control processing will be according to the /LIST switch setting when the file was created. A file name can be specified with the /-LOG version of the switch, but it does no good to do so. The default file name elements are .INDENT +8 SY:TEM.LOG .BREAK The file version number is interpreted as being in decimal if running under RSX-11M+ V3.0 and up, or VAX-11 RSX. Otherwise, the version number is octal. The initial setting is .INDENT +8 /NOLOG .BLANK;.TESTPAGE 3;.INDENT -4 /MAXBUFFER[:n] .BREAK Specifies the maximum number of characters to accumulate before writing to the log file. Note that in the case of a log file opened /LIST, the actual maximum record size will be smaller (by 2, normally) because of the implied carriage control. The parameter is positive decimal number. If you specify a number outside the range 16 < n < (512 unless someone has modified the source to allow a larger record) the nearest in-range number will be taken, and you get no error. If the switch is negated, no parameter is allowed, and is used. If you assert the switch but give no parameter, your terminal buffer size is used. The initial setting is .INDENT +8 /NOMAXBUFFER .BLANK;.TESTPAGE 3;.INDENT -4 /MONITOR .BREAK Specifies that all inbound control characters except , , , and be replaced with their ASCII names, enclosed in angle brackets. /MONITOR implies /NOLIST/NULLS, and /NOMONITOR implies /LIST/NONULLS. The initial setting is .INDENT +8 /NOMONITOR .BLANK;.TESTPAGE 3;.INDENT -4 /NULLS .BREAK Specifies that inbound ASCII null characters are to be sent to the local terminal, and to the log file if any. If negated, any nulls received from the remote terminal will be ignored. The initial setting is .INDENT +8 /NONULLS .BLANK;.TESTPAGE 3;.INDENT -4 /OVERRIDE .BREAK Specifies that the given terminal should be attached even if it is logged on. The normal behaviour is to refuse to run against a logged-on terminal. Also, it allows the /PERMANENT switch to function in situations where it is normally no-opped. Under RSX-11M+ and RSX-11M, the default is .INDENT +8 /NOOVERRIDE .BREAK Under RSX-11S and VMS, this switch is ignored. The logon bit is not supported under either system, and VMS attaches the terminal to the process that logged it on so that TEM can't get it anyway. .BLANK;.TESTPAGE 3;.INDENT -4 /PAUSE[:nnnt] .BREAK A synonym for the /DELAY switch. The /PAUSE switch was renamed because its two-character abbreviation conflicts with the /PARITY switch. For backwards compatibility, /PAUSE has been temporarily retained, but "/PAU" is the minimum abbreviation. The /PAUSE switch will be eliminated in a future release of TEM. .BLANK;.TESTPAGE 3;.INDENT -4 /PARITY:spec .BREAK Specifies how TEM shall generate parity for the remote system. The local system is "hard wired" at "space" parity. The options for the parity specification are: .LEFT MARGIN +8;.NOFILL SPACE MARK EVEN ODD .LEFT MARGIN -8;.FILL The parity specification can be abbreviated to one character. The initial setting is .INDENT +8 /PARITY:SPACE .BLANK;.TESTPAGE 3;.INDENT -4 /PERMANENT .BREAK Specifies that any remote line characteristics given on the same line with the /PERMANENT switch are to be retained (or restored) when TEM exits. Currently, only /SPEED and /REMOTE are so affected. This switch is ignored unless you are running under RSX-11S, or unless you used the /OVERRIDE switch when you initialized with the remote device. .BLANK;.TESTPAGE 3;.INDENT -4 /PROMPT[:char] .BREAK Specifies whether TEM should wait for a prompt character from the remote system before transmitting the next record in a file, and if so what the character is. If asserted without specifying a prompt character, the last prompt character specified is used. If the /DELAY switch is negated, the next record is transmitted on receipt of the prompt character. If the /DELAY switch is asserted, the next record is transmitted immediately. The initial setting is .INDENT +8 /PROMPT:LF .BLANK;.TESTPAGE 3;.INDENT -4 /QUIET .BREAK Causes output to the local terminal to be disabled while sending a file to the remote terminal. Has the same general effect as control/o, but without the driver overhead. Output to a log file (if one is open) is not affected by this switch. Likewise, it has no effect when input comes directly from the user's termnial. THIS SWITCH DOES NOT LATCH. The initial setting is .INDENT +8 /NOQUIET .BLANK;.TESTPAGE 3;.INDENT -4 /REMOTE[:spd][:DIALOUT] .BREAK Specifies whether the driver should generate and monitor modem control signals, and if so what the answer speed should be, and whether the line should be configured for dialout. The speed, if given, is any decimal number valid in the .INDENT +4 >SET /REMOTE .BREAK MCR command. In addition, speeds that are a multiple of 100 baud can be abbreviated by dropping the last two zeroes. The external settings available on a DH are not supported. Also, you can't set a DZ /REMOTE:0, and of course you can't use this switch at all on a DL or DJ. /REMOTE[:n] implies /SPEED[:n[:n]], but /NOREMOTE does not imply any switches at all. If you assert the switch but don't specify a speed, the answer speed of the line is not altered. .BLANK The DIALOUT option, if used, configures the line for dialout. If not specified, /REMOTE configures the line for dialin only (which may work with your modem for dialout anyway). You can specify DIALOUT and speed in either order, and can abbreviate DIALOUT to two characters. .BLANK If you are using the RSX-11M V3.2 version of TEM, or if you negate the switch, you may not specify answer speed or dialout. If you are running the "standard" TEM under RSX-11M V4.0 or RSX-11M+ V2.0, the DIALOUT option will cause an error. This is okay, as it is not needed under these releases. If you are running under VMS, this switch is a no-op, as VAX-11 RSX does not support the required terminal characteristics. .BLANK The initial setting duplicates whatever the line setup was when you invoked TEM. .BLANK Note: If /REMOTE is asserted, the TT: driver will reset several terminal characteristics that are critical to the operation of TEM whenever it detects carrier. To counteract this, TEM scans for the string "Password", and reasserts the desired characteristics when this string is seen. The string comparison is not sensitive to case. .BLANK;.TESTPAGE 3;.INDENT -4 /RPA .BREAK Specifies that ALL control characters (including control/q, control/s, control/o, and control/x) typed on the local terminal are passed to the remote line. If not asserted, these characters will be intercepted and interpreted by the TT: driver for the local terminal. The initial setting is .INDENT +8 /RPA .BLANK;.TESTPAGE 3;.INDENT -4 /SEND[:file] .BREAK Sends the specified file down the line, a record at a time. Leading and trailing form control characters are added to each record based on the implied form control of the file (None, List, Fortran, or Cobol). If the /TERMINAL switch is negated, implying a link to another computer, TEM sends one less leading linefeed for each record than is implied by the file attributes. .BLANK If specified without a file name, the last file sent is retransmitted. Be warned, though, that the identity of the "last file" is lost if a startup or shutdown command file is executed. The default file name elements are .INDENT +4 SY:TEM.INP .BREAK The file version number is interpreted as being in decimal if running under RSX-11M+ V3.0 and up, or VAX-11 RSX. Otherwise, the version number is octal. If /-SEND is specified, the file name is ignored and input comes directly from the user's terminal. The initial setting is .INDENT +8 /NOSEND .BLANK;.TESTPAGE 3;.INDENT -4 /SPEED[:spc[:spc]] .BREAK Sets line speed. The first parameter is the receive speed, and the second is the transmit speed. Legal speed parameters are the same as for /REMOTE. This switch cannot be negated. If both parameters are defaulted, the original line speeds are used. If only the transmit speed (second parameter) is defaulted, both the receiver and transmitter are set to the speed specified. The initial setting is .INDENT +8 /SPEED .BLANK This switch is a no-op under VAX-11 RSX, which does not support the required terminal characteristics. .BLANK;.TESTPAGE 3;.INDENT -4 /STOP .BREAK Causes TEM to return the local terminal to its initial setup, detach it, and stop itself. A message gives instructions on how to restart, using the MCR UNSTOP or DCL START command. While TEM is stopped, you have access to your system. When TEM is restarted, you resume communication with the remote system (or with TEM, as the case may be). If parent-offspring support is not available, TEM will suspend itself, instead of stopping itself. This switch cannot be negated. .BLANK Under VAX-11 RSX, this switch causes the process TEM is running in to be stopped. Because of the way VMS works, this leaves you pretty much in limbo, though you can SPAWN a subprocess to do your work. .BLANK;.TESTPAGE 3;.INDENT -4 /TERMINAL .BREAK Tells TEM you are communicating with a terminal rather than a CPU. .LEFT MARGIN +2 If negated: .LEFT MARGIN +4;.INDENT -2 TEM sends one less linefeed at the beginning of each record of a "SEND" file than is implied by its carriage control attribute. .INDENT -2 The following switches are implied: .BREAK /NOECHO/EOF/DELAY/PROMPT/RPA .LEFT MARGIN -4 If asserted: .LEFT MARGIN +4;.INDENT -2 TEM appends a to every entered from the terminal. .INDENT -2 TEM sends a to the remote terminal before prompting for input from the local terminal. .INDENT -2 The following switches are implied: .BREAK /ECHO/NOEOF/NOPAUSE/NOPROMPT/NORPA .LEFT MARGIN -4 .LEFT MARGIN -2 The initial setting is .INDENT +8 /NOTERMINAL .BLANK;.TESTPAGE 3;.INDENT -4 /THROTTLE[:nnnt] .BREAK Specifies that TEM should wait the specified amount of time before passing characters from the local to the remote line, or vice versa. "nnnt" is any valid time specification. The purpose of this switch is to decrease system load by allowing larger I/O packets. It is recommended that the time parameter not be set larger than .INDENT 4 (512 bytes) * (11 bits/byte) / (remote line speed) .BREAK or buffer overrun may occur. .BLANK The time parameter is illegal if the switch is negated, and optional if it is asserted. It defaults to whatever time was given the last time the switch was asserted, or "10T" if none. The initial setting is .INDENT +8 /NOTHROTTLE .BLANK;.TESTPAGE 3;.INDENT -4 /TRANSLATE:char:char .BREAK Specifies that the left-hand character is to be translated into the right-hand character upon being received from the remote terminal. Outbound characters are not affected. Note that you can have more than one /TRANSLATE in effect at a time, though you can only specify one /TRANSLATE switch on any given command line; for instance, a series of commands like "/TRANSLATE:%A:'A" could translate all lowercase input to uppercase upon receipt from the remote system. Note that translation takes place BEFORE testing for the prompt character when transmitting a file. If the switch is negated, the translation table is cleared, and characters are not translated. The negated version of the switch takes no parameters. The initial setting is .INDENT +8 /NOTRANSLATE .BLANK;.TESTPAGE 3;.INDENT -4 /TURNAROUND .BREAK Specifies that characters received on the remote line are to be echoed back to it. These characters are echoed unmodified. The initial setting is .INDENT +8 /NOTURNAROUND .BLANK;.TESTPAGE 3;.INDENT -4 / .BREAK Null switch. Since the command line interpreter regards an empty line as a comment, you can use this switch to go back into communications mode without any other changes. This switch can be negated, though I have no idea why you would want to. .LEFT MARGIN -8 .PARAGRAPH For all switches that specify characters (ie: /ATTENTION, /EOF, or /PROMPT) the character can be specified in any of the following ways: .BLANK .NOFILL (Low byte used) . (Low byte used) ' (ASCII value) _^ ((ASCII value)_&37) % ((ASCII value)!140) NU or NUL or NULL 0 SOH 1 (_^A) STX 2 (_^B) ETX 3 (_^C) EOT 4 (_^D) ENQ 5 (_^E) ACK 6 (_^F) BEL 7 (_^G) BS 10 (_^H) HT 11 (_^I) LF 12 (_^J) VT 13 (_^K) FF 14 (_^L) CR 15 (_^M) SO 16 (_^N) SI 17 (_^O) DLE 20 (_^P) DC1 21 (_^Q) DC2 22 (_^R) DC3 23 (_^S) DC4 24 (_^T) NAK 25 (_^U) SYN 26 (_^V) ETB 27 (_^W) CAN 30 (_^X) EM 31 (_^Y) SUB 32 (_^Z) ESC 33 FS 34 GS 35 RS 36 US 37 SPACE (abbr to 2 char) 40 DEL 177 (ASCII value) .FILL .BLANK In general, "'" means "take the ASCII value as is", "_^" means "convert to control character", "%" means "convert to lower case". An "unspecial character" is any printable character except "0" thru "9", "a" thru "z", "'", "_^", "%", ":", "/", "*", and """. The keywords may not be abbreviated unless the above table says so. For instance: .BLANK .NOFILL /AT:_^@ ! Attention character is null /EO:_^Z ! EOF character is control/Z /AT:* ! Attention character is "*". /AT:'% ! Attention char is "%". /AT:%A ! Attention char is "a". /AT:SP ! Attention char is " ". /AS:_^Q:~ ! Send XON on input of tilde. /TR:EOT:CR ! Translate to . .FILL .PARAGRAPH For all switches that take a comparison string as an option, the comparison string is specified in quotes (not apostrophes), with an optional leading asterisk to denote a comparison that is insensitive to case. If the first non-blank character inside the quotes is alphanumeric, the entire quoted string is taken as the comparison string. If the first non-blank character inside the quotes is not alphanumeric, the stuff inside the quotes can be any combination of single-character specifications (see above) enclosed in angle brackets, or literal strings enclosed in just about any other character. For example: .NOFILL .BLANK Comparison String Specification Resulting Comparison String ------------------------------- --------------------------- "ETAOIN" "ETAOIN" " SHRDLU " " SHRDLU " "<'L%E%E>/VI/" "LeeVI" " _\ABLE_\ <%W><%A><%S>/ I/" "ABLE was I" "" " " "" syntax error "<61 61>" "11" "<6161>" "q" .FILL .SUBTITLE TEM Error and Information Messages. .PAGE .PARAGRAPH Following is a list of some of the error and information messages that TEM generates, along with explanation and corrective action where appropriate. .LEFT MARGIN +5 .BLANK 2;.INDENT -5 TEM - Attach terminal error on ddn:. $DSW = xxxx (decimal). .BLANK TEM has failed to gain control of the specified terminal. The value returned is a directive error code, as documented in the RSX Mini-Reference or other appropriate system manual. The most likely cause is an internal error in TEM. .BLANK 2;.INDENT -5 TEM - Attach terminal error on ddn:. I/O Status = xxxx (decimal). .BLANK TEM has failed to gain control of the specified terminal. The value returned is an I/O error code, as documented in the RSX Mini-Reference or other appropriate system manual. The most likely cause is that someone else is using the specified terminal. .BLANK 2;.INDENT -5 TEM - Communicating with ddn: .BLANK This is an informational message, telling you that TEM has successfully initiated with the remote terminal. .BLANK 2;.INDENT -5 TEM - Detach terminal error on ddn:. $DSW = xxxx (decimal). .BLANK TEM has failed to release control of the specified terminal. The value returned is a directive error code, as documented in the RSX Mini-Reference or other appropriate system manual. The most likely cause is an internal error in TEM. .BLANK 2;.INDENT -5 TEM - Detach terminal error on ddn:. I/O Status = xxxx (decimal). .BLANK TEM has failed to release control of the specified terminal. The value returned is an I/O error code, as documented in the RSX Mini-Reference or other appropriate system manual. The most likely cause is an internal error in TEM. .BLANK 2;.INDENT -5 TEM - Device ddn: is logged on. .BLANK TEM will not communicate with a logged-on terminal. Wait for the user to log off, and try again. If you are on a non multiuser "M" system (or if you really DO want to grab someone's terminal while they're using it), try again using the /OVERRIDE switch. .BLANK 2;.INDENT -5 TEM - Device ddn: is not a terminal. .BLANK You are trying to communicate with a device which TEM does not support. The most likely cause is a typo. Check and re-enter the command. If the problem persists, see your system manager. .BLANK 2;.INDENT -5 TEM - Failed to assign LUN to device. $DSW = xxx (decimal). .BLANK TEM could not find the remote device. The value returned is a directive error code, as documented in the RSX Mini-Reference or other appropriate system manual. The most likely cause is a typo. Under VAX-11 RSX, it could also be because you (or your system manager) have not created a $$nnn: assignment pointing to the remote device. Check and re-enter the command. If the problem persists, see your system manager. .BLANK 2;.INDENT -5 TEM - Get characteristics error on ddn:. $DSW = xxxx (decimal). .BLANK TEM has failed to read the old setup of the specified terminal. The value returned is a directive error code, as documented in the RSX Mini-Reference or other appropriate system manual. The most likely cause is an internal error in TEM. .BLANK 2;.INDENT -5 TEM - Get characteristics error on ddn:. I/O Status = xxxx (decimal). .BLANK TEM has failed to read the old setup of the specified terminal. The value returned is an I/O error code, as documented in the RSX Mini-Reference or other appropriate system manual. The problem could be caused by unexpected I/O on the line, by an internal error in TEM, or by running TEM on a system that does not have the required level of full-duplex TT: driver support. .BLANK 2;.INDENT -5 TEM - Ready for terminal input. .BLANK This is an informational message. TEM has entered terminal mode; all characters entered from your terminal will be sent to the remote system. .BLANK 2;.INDENT -5 TEM - Run complete on ddn:. .BLANK This is an informational message. TEM has relinquished control of the given device. .BLANK 2;.INDENT -5 TEM - Set characteristics error on ddn:. $DSW = xxxx (decimal). .BLANK TEM has failed to set up the specified terminal as needed. The value returned is a directive error code, as documented in the RSX Mini-Reference or other appropriate system manual. The most likely cause is an internal error in TEM. .BLANK 2;.INDENT -5 TEM - Set characteristics error on ddn:. I/O Status = xxxx (decimal). .BLANK TEM has failed to set up the specified terminal as needed. The value returned is an I/O error code, as documented in the RSX Mini-Reference or other appropriate system manual. The problem could be caused by unexpected I/O on the line, by an internal error in TEM, or by running TEM on a system that does not have the required level of full-duplex TT: driver support. Use of the DIALOUT option under RSX-11M V4.0 or RSX-11M+ V2.0 will produce this error. .BLANK 2;.INDENT -5 TEM - Stopped. To restart, type MCR>xxxxxx .BLANK This is an informational message. TEM has relinquished control of your local terminal. To get back into TEM, enter the specified MCR command. The equivalent DCL command will also be displayed, if appropriate. .BLANK 2;.INDENT -5 TEM - Syntax error. Device spec not allowed "xxxx". .BLANK The startup or shutdown command file has attempted to change the device TEM is communicating with. The unwanted device spec is in quotes. .BLANK 2;.INDENT -5 TEM - Syntax error. Duplicate switch "xxxx". .BLANK You have specified the same switch twice (or more) on a single command line. This error can also result from specifying a switch and its negation on the same command line, or a switch and a synonym for it on the same command line. The second occurrance of the switch appears in quotes. .BLANK 2;.INDENT -5 TEM - Syntax error. Illegal device name "xxxx". .BLANK The device name that appears in quotes has bad syntax. The required format is two alphabetic characters followed (optionally) by an octal number less than 400 (octal), followed by a colon (':'). .BLANK 2;.INDENT -5 TEM - Syntax error. Illegal file name "xxxx". .BLANK The file name that appears in quotes has bad syntax. .BLANK 2;.INDENT -5 TEM - Syntax error. Illegal switch "xxxx". .BLANK The switch that appears in quotes does not exist, or has been specified incorrectly. .BLANK 2;.INDENT -5 TEM - Syntax error. Illegal time spec "xxxx". .BLANK The time spec that appears in quotes is illegal. The units may be invalid (must be 'T', 'S', 'M', or 'H'), you may have specified more than 32767 of them, or you may have specified a period of more than 24 hours. .BLANK 2;.INDENT -5 TEM - Syntax error. Illegally negated switch "xxxx". .BLANK You may not negate the switch that appears in quotes. .BLANK 2;.INDENT -5 TEM - Syntax error. Number out of range "xxxx". .BLANK The number that appears in quotes is out of range. .BLANK 2;.INDENT -5 TEM - Syntax error. Invalid attention character "xxxx". .BLANK You are running TEM after having SET HOST (or RMT) into another system, and have specified a null as the attention character. The DECnet remote terminal facility ignores nulls. .BLANK 2;.INDENT -5 TEM - This task will not run under this operating system. .BLANK TEM is only supported under RSX-11M, RSX-11M+, and RSX-11S. If you are in fact running under one of these, you have found a bug in TEM. If you are not, move to the appropriate system. .BLANK 2;.INDENT -5 TEM - Warning - Failed to open log file. $DSW = xxx (decimal). .BLANK The session log file could not be opened. The value returned is a directive error code, as documented in the RSX Mini-Reference or other appropriate system manual. Check and re-specify the log file. If the problem persists, see your system manager. .BLANK 2;.INDENT -5 TEM - Warning - Failed to open log file. I/O Status = xxx (decimal). .BLANK The session log file could not be opened. The value returned is a I/O error code, as documented in the RSX Mini-Reference or other appropriate system manual. Check and re-specify the log file. If the problem persists, see your system manager. .BLANK 2;.INDENT -5 TEM - Warning - ddnn: doesn't have software speed control. .BLANK You have attempted to change baud rate or enable or disable carrier monitoring in an environment where this is not supported. This error occurs if you attempt to use the /REMOTE or /SPEED switches under VAX-11 RSX, or on a DL-11 or DJ-11. The switches that caused this error are ignored. .LEFT MARGIN -5 .SUBTITLE Advanced Features - Making do without flow control .PAGE .PARAGRAPH TEM does not have any flow control capability, which makes it awkward to (say) drive a 4800 baud line from a 1200 baud terminal, or to use TEM when connected to your host via a packetized net. This kind of thing can be made to work (at least most of the time), provided you heed the following guidelines: .LEFT MARGIN +10 .BLANK;.INDENT -5 * Try not to receive too much data at once, so the inbound ring buffer has time to empty. .BLANK;.INDENT -5 * When sending files, use the /QUIET switch. .BLANK;.INDENT -5 * If the remote system and your terminal support XON/XOFF flow control, don't negate the /RPA switch (the default is /RPA). .BLANK;.INDENT -5 * Try to get the remote system to pad (more) nulls into its transmissions, and don't assert the /NULLS switch (the default is /NONULLS). This won't help if the problem is that there is a packetized net involved. .BLANK;.INDENT -5 * Rebuild TEM with bigger ring buffers - especially the inbound ring buffer. See "Installation Notes" below for how. .BLANK .LEFT MARGIN -10 .SUBTITLE Advanced Features - Batch mode operation. .PAGE .PARAGRAPH TEM can be initiated by the batch processor, or otherwise run on a virtual terminal. Generally, it works the same way as it does on a TT: terminal. However, the VT: driver does not support the "Attach for Unsolicited Input" function. In order to make input from the virtual terminal work more like it does on a real terminal, TEM issues an implicit .INDENT +5 /SEND:TI: .BREAK under the following circumstances: .LEFT MARGIN +10 .INDENT -5 * /NOCOMMAND is in effect .INDENT -5 * /SEND does not appear on the command line. .LEFT MARGIN -10 .PARAGRAPH There are, however, still several differences between input from a virtual terminal and input from a real terminal: .LEFT MARGIN +10 .INDENT -5 * There is no way to feed the attention character to TEM. .INDENT -5 * TEM will prompt for a command after sending a file, rather than going into terminal input mode. This is true even if the /COMMAND switch is negated. .INDENT -5 * If the /QUIET switch is asserted, no input from the remote terminal will be written to the local (virtual) terminal under any circumstances. The /QUIET switch stil does not latch. .LEFT MARGIN -10 There may be other differences, but these are the ones that come to mind. .PARAGRAPH Since TEM is essentially unattended, you should make sure there is nothing that will cause it to stall, such as not receiving an expected prompt character. You should consider specifying /NOPROMPT for such things as sending a series of carriage returns to an autobaud algorithm, where no prompt character can be returned. .SUBTITLE Advanced Features - Startup and Shutdown Command Files .PAGE .PARAGRAPH TEM has the optional capability to execute a startup command file when it first attaches the remote terminal, and a shutdown command file just before it detaches the remote terminal. This feature is selected when TEM is assembled, by defining symbol "LINSET". The startup command file is named .INDENT +8 LB:[1,5]ddnINI.TEM .BREAK and the shutdown command file is named .INDENT +8 LB:[1,5]ddnKIL.TEM .BREAK where "ddn" represents the name and unit number of the remote terminal. The unit number is specified with no leading zeroes, but an explicit "0" is required for unit 0 (eg: TT0INI.TEM, not TTINI.TEM). Neither file is required. The constant part of the file name is located at "SETDV:", if you need/wish to modify it. .PARAGRAPH Because any switches on the user's command are assumed to refer to the new device, execution of the command line that triggered the startup/shutdown process is deferred until after the shutdown and startup command files have executed. There is one exception to this: the /HOLD switch is executed immediately. This lets the user enable or supress the execution of any startup or shutdown files implied by the command. .PARAGRAPH There are two differences between the way a startup or shutdown command file is executed and the way a normal command file is executed. First, it is illegal to specify a device name in a startup or shutdown command file; an attempt to do so will result in a syntax error. Second, it is impossible to do keyboard input in a startup or shutdown command file. The current setting of the /COMMAND switch is ignored, and the file is processed as though it were asserted. Once the command file has completed, TEM begins paying attention to the /COMMAND switch again. .PARAGRAPH The code that impliments the startup and shutdown command files is based on knowlege of the data structures used by the GCML$ package, which is documented in the I/O operations manual. These data structures are internal to GCML$, undocumented, and presumably subject to change without notice. On the other hand, GCML$ seems to be a fairly "stable" product, so this feature may continue to work indefinitely. Probably the thing most likely to change is the size or layout of a pushdown list entry. The default TEM installation enables this feature. .PARAGRAPH For VAX-11 RSX, see the section on installation under VAX-11 RSX. .SUBTITLE Advanced Features - Extended Get Command Line Support .PAGE .PARAGRAPH Starting with RSX-11M V4.0 and M+ V2.0, an Extended Get Command Line package (EGCML) has been available. The only known documentation is in the SYSLIB help file, and it is woefully insufficient. This package was designed for the indirect command file processor, and any features not actually used by the "@" processor are likely not to work. .PARAGRAPH Use of this package is selected at assembly time by defining symbol "EXGTCM". Using this package allows you to specify the following switches on a command file: .LEFT MARGIN +8 .BLANK;.INDENT -4 /LB .BREAK Specifies that the command file is a universal library. An optional parameter specifies the name of the module to execute; if omitted, module ".MAIN." is executed. Any file with records of 512. bytes or larger is assumed to be a library, and module ".MAIN." is executed. The command "@/LB:module" is a special case. If issued from a library module, the specified module in the same library is executed; if not, "module.cmd" is executed. .BLANK;.INDENT -4 /DE .BREAK Causes the command file to be deleted after execution. Unlike the corresponding "@" processor switch, this one seems to work. I have no idea what happens if you combine /LB and /DE on the same line. .BLANK;.INDENT -4 /ER .BREAK The apparent intent of this switch is to prevent an error from being returned if the specified file cannot be opened. Neither asserting or negating it seems to have any effect. .LEFT MARGIN -8 .PARAGRAPH Although the EGCML package has a way to force a call to a nested command file (the original reason for using this package), it doesn't like it if the file cannot be opened. Therefore, startup and shutdown command files are implimented "by hand", just as in the GCML$ version. The difference is that EGCML is obviously not a stable product, and the pushdown stack is more complex. Because of this, and because of the greater size of the EGCML module(s), the default TEM installation uses GCML$ instead. .SUBTITLE Advanced Features - Accounting Support .PAGE .PARAGRAPH Since you might wish to use TEM to communicate over a long distance phone line, TEM has the capability to log the start and end time of all operations to an accounting file. Unfortunately, TEM has no way of knowing if a long distance call was in fact made; but at least the accounting log will tell you when one COULD have been made, and from where. .PARAGRAPH Accounting log capability is built into TEM when it is assembled, by defining symbol "ACCNTG". The default installation is with "ACCNTG" defined. .PARAGRAPH The account file resides on the same disk and UIC as the remote line startup and shutdown command files, but the file name is TEMACT.TEM. If you wish to modify this file name, you will find it in the code at "ACTFN:". You must create the accounting log yourself; if TEM cannot open an existing accounting log file, operations will not be logged. It is suggested that you create the file with EDT, and provide a suitable heading for it. .PARAGRAPH Whenever TEM initializes with or disconnects from a device, it will attempt to open the account log file, and append a record showing the date, time, local terminal name, remote terminal name, and type of transaction. If the file is already accessed for write, TEM will retry the open up to 5 times at 3 second intervals before failing. Any other open error causes immediate failure. If TEM cannot update the accounting log file, NO ERROR MESSAGE is given to the user. The intent in general is that the casual TEM user be oblivious to the account log. .SUBTITLE Advanced Features - Named Directories, Logical Names, Decimal Versions .PAGE The distributed task image TEM.TSK has support for named directories, logical names, and decimal version numbers. If you rebuild TEM, you may or may not get these, as described below. .LEFT MARGIN +8 .BLANK;.INDENT -4 * Named directory support is there, if you build TEM against a SYSLIB that supports it, and execute it on a system that supports it. TEM accepts anything inside square brackets as a directory spec, and lets FILES-11 worry about whether it's valid or not. There is one restriction: if the FEAT$ directive is not available, TEM will take your default directory to be the same as your UIC, no matter what it was when you invoked TEM. .BLANK;.INDENT -4 * What kind of logical name support you get depends on what value of RSXVER you assemble with. If you use no prefix file, you get RSXVER _= 40. If you relink using TEM.CMD, you will get a prefix file with RSXVER appropriate to your system. The cases are: .LIST .LE;RSXVER _= 32. .BREAK This is the reduced-functionality TEM for RSX-11M V3.2 and RSX-11M+ V1.0. You get no logical name support whatever. .LE;RSXVER _= 40. .BREAK This is for RSX-11M V4.0 and up, and RSX-11M+ V2.0 and 2.1. These systems do not support logical names. However, subset TLON$S functionality is included, so you can build TEM under these systems, transport it to VAX-11 RSX, and have it work. Because TLON$S is hard-coded, I can't guarantee that this will work forever, but it ought to be fairly stable. .LE;RSXVER _= 50. .BREAK This is for RSX-11M V5.0 (if ever), RSX-11M+ V3.0, and VAX-11 RSX. Logical names are supported. .END LIST Note that at the moment, the only thing logical name support buys you is more complete functionality under VAX-11 RSX. TEM won't (yet) parse .BLANK;.INDENT -4 * Decimal version numbers will parse if your system has the FEAT$ directive and decimal version support - otherwise not. If TEM decides not to parse decimal version numbers, you can force it to by following the version number with a decimal point. This is probably not supported by FILES-11, but it works with M+ V2.1. .INDENT +4 SYS$SYSREDUNDANT__COMM__DEVICE: .BREAK (eg) as the name of a remote line. .LEFT MARGIN -8 .SUBTITLE Advanced Operations - Aborting TEM .PAGE .PARAGRAPH Since TEM needs to modify the setup of the remote terminal, it is privileged (/PR:0). Since some of these modifications are nasty (ie: NOECHO, RPA), TEM specifies an abort notification AST to allow it to put the remote line back the way it was originally. The astute RSX jockey will note that this combination effectively makes it impossible to abort TEM if the mainline is hung up. There SHOULD be no way for this to happen, but since TEM is not necessarily bug free, here is a way to handle it: .LEFT MARGIN +10 .BLANK;.INDENT -6 * From another terminal, issue the MCR ATL command. The first number after the task name is the address of TEM's Task Control Block (TCB). Make note of it. .BLANK;.INDENT -6 * The "Privileged" bit (T3.PRV = 10000) is in the third status word of the TCB (T.ST3 at offset 36 from the start of the TCB). Open this word. If "xxxxx" is the TCB address noted above, you would use an MCR command like .INDENT +4 >OPE xxxxx+36/KNLD .BREAK on an RSX-11M+ with kernel data space. Clear the "privileged" bit. .BLANK;.INDENT -6 * If you don't know what terminals TEM was running on, run the RMD task header display on it to find out. Make note, as you may have to restore setups after you finally get rid of TEM. .BLANK;.INDENT -6 * Abort your copy of TEM, twice. Since your TEM is now an unprivileged task, the second abort will cause it to abort for real. .BLANK;.INDENT -6 * Check terminal setups on both the "local" and "remote" line, and replace any that are not as they should be. TEM sets the remote line /NOWRAP /FDX /FORMFEED /HFIL:0 /HHT /NOECHO /TYPEAHEAD /SLAVE /LOWER /NOVFILL /NOABAUD /RPA and possibly /[NO]REMOTE and /SPEED if the corresponding TEM switches have been used. TEM sets the local line /NOWRAP, and possibly /[NO]RPA, depending on whether you have used the /RPA switch, and on what it was doing when you killed it. .BLANK;.INDENT -6 * If any shutdown commands are required to the remote terminal, get back into TEM (carefully) and issue them. .LEFT MARGIN -10;.BLANK The usual warnings for any procedure using OPEn apply: the offsets are specific to RSX-11M+ V2.0; they are not guaranteed to be right (typos, you know); and your system is not guaranteed to be running after you do all this. .SUBTITLE Installation notes. .PAGE .PARAGRAPH The default version of TEM occupies about 16K. This assumes you have not mapped it to any resident libraries. The major installation options have been covered above. There are some other customizations you can do. Some of these have been automated, and you can get them just by rebuilding TEM using TEM.CMD. .LEFT MARGIN +8 .BLANK;.INDENT -4 * You should be able to taskbuild with the /ID and /MU switches if you so desire. I would not anticipate any need for the /ID switch, but /MU may be useful if you have a lot of users. I have not tried either, but TEM was coded with this in mind. .BLANK;.INDENT -4 * There is some trace logic built into TEM; you enable it by defining symbol "TRACE". .BLANK;.INDENT -4 * The size of the file buffers is determined by symbol "BUFSIZ". You can change it if you wish. The task will grow or shrink by (2 bytes)*(the size of your change). You should not make BUFSIZ greater than OURSIZ. .BLANK;.INDENT -4 * The size of the inbound ring buffer is determined by symbol "INRSIZ". You can change this if you wish. The task will grow or shrink accordingly. It can be helpful to increase this when running full-screen applications (eg: EDT, RMD), if your terminal is connected to the system TEM is executing on via a packetized network. .BLANK;.INDENT -4 * The size of the outbound ring buffer is determined by symbol "OURSIZ". You can change this if you wish. The task will grow or shrink accordingly, but it should not be made less than BUFSIZ. .BLANK;.INDENT -4 * There is a built-in timeout on synchronous I/O of 10 seconds. The magnitude and units are defined by symbols "SYNTOM" and "SYNTOU". Before making this timeout terribly long, you should consider that this timeout is what bails you out if another task has attached your remote terminal. .BLANK;.INDENT -4 * The initial settings (asserted or negated) of all switches defined under "SWASS:" can be changed by changing the definition of symbol SWINIT as shown in the table below: .BLANK;.NOFILL To assert Set bit ------------ ------- /DELAY SWPAU /ECHO SWECH /LOG SWLOG /NULLS SWNUL /EOF SWEOF /LIST SWLIS /TERMINAL SWDTE /HOLD SWHLD /MONITOR SWMON /RPA SWRPA /COMMAND SWCMD /PROMPT SWPMP .FILL;.BLANK Note that if you assert /LOG in this manner, you may have to modify the code to get the log file opened properly. The initial switch parameter values can be changed by modifying as follows: .BLANK;.NOFILL To change Modify --------------------- ------- /DELAY magnitude RCDLAY: /DELAY units RCDUNT: Attention character ATNBYT: End-of-file character EOFBYT: Prompt character PMPBYT: /ASSIGN setting ASGTBL: /TRANSLATE setting TRNTBL: /MAXBUFFER setting Code in ENTRY: /LOG default filespec LOGFNB: /SEND default filespc SNDFNB: .FILL .BLANK;.INDENT -4 * The initial /PARITY setting can be changed by initializing PARSPC: to the appropriate offset in PARTBL: (found by subtracting the address of the entry for your desired parity from the address of the PARTBL: label), and by initializing ASGTBL: to the appropriate parity. The latter will probably require a semi-sophisticated macro, which I didn't feel like writing. .BLANK;.INDENT -4 * The initial /CHECKPARITY substitution character can be changed by initializing BADPAC: to the desired character. Be sure the high bit is off. If you want to initialize with parity checking turned on, you must set the high bit in BADPAC:, and initialize all entries in BADPAC: that represent invalid parity (under whatever your default parity is) to the desired character. The latter seems to call for another sophisticated macro. .BLANK;.INDENT -4 * Desired setups for the new terminal are at "TERNMC:". Any "static" setups for the remote terminal can be changed by modifying here. Any setups involving actual device control should appear below "TERNDL:" so they can be no-opped for controllers without device control (eg: DL-11, DJ-11). Setups involving only software settings in the TT: driver should appear above "TERNDL:". If you add a setup to the list, it would be polite to add it to the list of saved original settings at "TEROMC:". "TERODL:" performs the same function in this table as "TERNDL:" does in table "TERNMC:". "Switchable" settings cannot be modified this way. The initial settings for /REMOTE and /SPEED are determined in subsoutine "TERSET:". .BLANK;.INDENT -4 * Similarly, the desired setups for the local terminal are at "TELNMC:". The originals are at "TELOMC:". No device control is performed on the local terminal; TEM assumes that speed (and so on) are already pretty much where you want them. .LEFT MARGIN -8 .PARAGRAPH That about covers the easy modifications. TEM could in principle be converted to 8 bit operation, but there is no central place to do this. You would have to double the size of the assign table, and change all the bit masks. You might also want to add an "8BIT" switch. .SUBTITLE;Installation under VAX-11 RSX .PAGE .PARAGRAPH I have limited experience with TEM under VAX-11 RSX. There are, however, a couple things that look obvious: .LIST .LE You must have VAX-11 RSX installed on your system. The AME probably won't cut it. .LE If you want to use startup/shutdown command files or accounting, you will have to create a directory to hold the files: .INDENT 4 $ CREATE/DIRECTORY SYS$SYSROOT:[001005] .BREAK will do it for the default TEM. .LE You will need to .INDENT 4 $ ASSIGN/SYSTEM/EXECUTIVE_MODE device: $$nnn: .BREAK for each terminal that you want to run TEM against. This assign should go in .INDENT +4 SYS$MANAGER:VAX11RSX$DEVICE__NAMES.COM .BREAK Note that the TEM users can use the physical device name - they do not have to use the $$nnn: assignment. Also, you don't need to do this for the null device. You are referred to the VAX-11 RSX manual for more on device name mapping. .LE The terminals you intend to use for remote lines must be .INDENT +4 $ SET TERMINAL xxx:/TYPEAHEAD/SPEED_=nnnn/PERMANENT .BREAK as VAX-11 RSX does not seem to support having TEM do this on its own (at least under some versions). Also, you need to set them to the modem control you want, as TEM can't handle this either. .LE Automatic startup and shutdown command files are named after the VMS physical device being used. For example, if you are running on TXA1, the files are .INDENT 4 SYS$SYSROOT:[005001]TXA1INI.TEM .BREAK and .INDENT 4 SYS$SYSROOT:[005001]TXA1KIL.TEM .BREAK respectively. Note that if you contrive to run TEM against a device whose physical name does not translate into a legal RSX filespec (eg: one of those "_$n_$" things), you can't have a startup or shutdown command file for this device. .LE TEM cannot support subdirectories because VAX-11 RSX doesn't. At least that's what the book says. If your current default directory is a subdirectory, it seems to work OK. .LE If you want nonprivileged people to be able to execute TEM, you need to install it with SYSPRV and TMPMBX. You may also want to install it with an elevated priority. .LE It may be advantageous to rebuild TEM with a larger inbound ring. An inbound ring of 2048 bytes allowed TEM to run acceptably on a moderately loaded 11/780 at priority 4. .LE When I went to rebuild TEM under VMS, I had trouble with MAC and TKB not finding the device WK0:. This turned out to be that .INDENT +4 SYS$MANAGER:VAX11RSX$DEVICE__NAMES.COM .BREAK needed to define a $$n name pointing to SYS$SCRATCH. .LE You can set up TEM as a "foreign" command by defining a global symbol that refers to it. For example, if you have put TEM.TSK in SYS$SYSTEM, .INDENT +4 $ TEM :== $SYS$SYSTEM:TEM.TSK .LE If you invoke TEM as a foreign command, any apostrophes required by the TEM syntax need to be doubled so VMS doesn't take them as orders to perform symbol substitution. This does not apply once you're inside TEM. For example, .INDENT +4 $ TEM TXA1:/ATTENTION:''_~ .BREAK is required from DCL, but .INDENT +4 TEM>TXA1:/ATTENTION:'_~ .BREAK is OK from inside TEM. .LE TEM requires all parts of all filenames to be valid RSX-11 filespecs. That is, the following are FORBIDDEN: .LIST .LE VMS-style device names .LE Directory names longer than 9 characters or containing "$" or "__" .LE Directory numbers (UIC format) with group or member numbers in decimal, or greater than 377 octal. .LE File names longer than 9 characters or containing "$" or "__" .LE File types longer than 3 characters or containing "$" or "__" .LE Version numbers larger than 77777 octal (32767. decimal). .END LIST .END LIST .SUBTITLE;Revision history .PAGE .PARAGRAPH Following is a revision history of TEM, going back to the Spring 1983 DECUS version (84.131, dated 10-May-1984). .BLANK 2;.NOFILL Version Date Revision(s) .BLANK 84.169 17-Jun-1984 Patch /NOREMOTE Add single-argument /SPEED .BLANK 84.173 21-Jun-1984 /SPEED and /REMOTE illegal on DL11 and DJ11 .BLANK 84.177 25-Jun-1984 Cancel control/s on remote line .BLANK 84.194 12-Jul-1984 Make /SPEED and /REMOTE no-ops on DL-11 and DJ11, with warning .BLANK 84.213 31-Jul-1984 Add /TRANSLATE .BLANK 84.221 08-Aug-1984 Beef up attention and abort code .BLANK 84.223 10-Aug-1984 Add /PARITY Add /DELAY as synonym for /PAUSE /PA NOW MEANS /PARITY, NOT /PAUSE .BLANK 84.240 27-Aug-1984 Don't apply parity to translation tbl .BLANK 84.241 28-Aug-1984 Default to /NOMAXBUFFER .BLANK 84.244 31-Aug-1984 Add /CHECKPARITY .BLANK 84.269 25-Sep-1984 Default to /RPA /TERMINAL now implies /NORPA /NOTERMINAL now implies /RPA .BLANK 84.270 26-Sep-1984 Add /STOP .BLANK 84.272 28-Sep-1984 Correct the /NULL code .BLANK 84.292 18-Oct-1984 Add /EXIT .BLANK 84.296 22-Oct-1984 Beef up attention character code .BLANK 85.008 08-Jan-1985 Attempt to conditionalize for RSX-11M V3.2. This is the January 1985 DECUS library version, and the Spring 1985 DECUS version. .BLANK 85.143 23-May-1985 Add /OVERRIDE, /THROTTLE .BLANK 85.227 15-Aug-1985 Add the :DIALOUT option to /REMOTE. Thanks to Ed Cetron for the idea. Also optimize switch presence code. .BLANK 85.255 12-Sep-1985 Do /REMOTE in 2 QIOS instead of one, to try to get settings that SET /REMOTE changes. .BLANK 85.269 26-Sep-1985 Check for the string "Password" (case in- sensitive) when set /REMOTE, and reassert terminal setups (since TT: driver resets on carrier sense and doesn't tell any- one). Also bypass logged-in terminal check for RSX-11S. .BLANK 85.323 19-Nov-1985 Make TEM serially reusable, so that it can be used under RSX-11S without re- loading. Add the /PERMANENT switch, to make per- manent changes in the remote terminal database. .BLANK 85.325 21-Nov-1985 Add /CARRIER switch, to control the re- assertion of remote terminal character- istics after acquisition of carrier. .BLANK 86.014 14-Jan-1986 Remove device name dependance; rely on device characteristics instead. Modify terminal setups to work under VMS. .BLANK 86.015 15-Jan-1986 Parse VMS-style device names. .BLANK 86.055 24-Feb-1986 Fix problem with attention character af- ter /SEND. .BLANK 86.056 25-Feb-1986 Extend setup and takedown command file support to be useful under VMS. Also, put system-wide files on LB:, not LB1:, and parse decimal version numbers. .BLANK 86.062 03-Mar-1986 Disable privilege around file opens, so unprivileged user can't use TEM to snoop. .BLANK 86.093 03-Apr-1986 Allow file buffers and rings to be sized independantly. This is the Spring 1986 DECUS version. .BLANK 86.233 21-Aug-1986 Default the input ring buffer size to 2048. bytes. Also, allow /PERMANENT if the connection was made using the /OVERRIDE switch. .BLANK 87.058 27-Feb-1987 Use GIN$ to get user name from accounting and add to TEMACT.LOG transactions. .BLANK 87.071 12-Mar-1987 Add /TURNAROUND switch. Conditionalize the "explicit default directory" code in 86.056, which is only needed due to a bug in a par- ticular release of VAX-11 RSX. .BLANK 87.077 18-Mar-1987 Fix bug that broke batch support. This bug was probably introduced in version 86.014. .FILL