.PAPER SIZE 60,72;.LEFT MARGIN 9;.RIGHT MARGIN 72 .TITLE TEM - Terminal EMulator program _. .BLANK 20 .CENTER;TEM - Terminal EMulator program .CENTER;--- - -------- -------- ------- .BLANK 25 .INDENT +40;.NOPERIOD T. R. Wyant .BLANK;.INDENT +40;.PERIOD 16-May-1984 .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 .INDENT -4 * Local Echo .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 TEM requires at least RSX-11M+ V2.0. RSX-11M V4.0 with the full-duplex TT: driver, get/set multiple characteristics, and unsolicited input AST's ought to work, but has not been tested. RSX-11M V3.2 seems not to work, though I have not investigated why. 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 initiated from a terminal that is at least as fast as the one 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. .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. 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 /PAUSE 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;.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. .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 chharacter 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 wierd combinations may produce wierd 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 legal device name (including local assigns, etcetera), and 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: .NOJUSTIFY;.TAB STOPS 16,40 Device SY: .BREAK UIC Current Default .BREAK File Name no default .BREAK File Type .CMD .BREAK File Version Highest .JUSTIFY Note that if TEM is invoked as .INDENT +8 >TEM command .BREAK TEM will exit as soon as the command is completed. If the command was "@filename", completion occurs when the end of the file is encountered. Otherwise, completion occurs when you type the attention character. .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. 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 /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 /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 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 /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 recieved 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 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 /PAUSE[: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 /PAUSE:15T .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 /PAUSE switch is negated, the next record is transmitted on receipt of the prompt character. If the /PAUSE 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] .BREAK Specifies whether the driver should generate and monitor modem control signals, and if so what the answer speed should be. 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. If you negate the switch, you may not specify a speed; the result is the same as if you had specified /REMOTE:0. /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 /REMOTE setting of the line is not altered. The initial setting is .INDENT +8 /REMOTE .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 duplicates the local terminal's setting. .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 THIS SWITCH DOES NOT LATCH. 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 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. Legal speed parameters are the same as for /REMOTE. This switch cannot be negated. If given without parameters, the original line speed is used. The initial setting is .INDENT +8 /SPEED .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/PAUSE/PROMPT .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 .LEFT MARGIN -4 .LEFT MARGIN -2 The initial setting is .INDENT +8 /NOTERMINAL .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 .NOJUSTIFY (Low byte used) .BREAK . (Low byte used) .BREAK ' (ASCII value) .BREAK _^ ((ASCII value)_&37) .BREAK % ((ASCII value)!140) .BREAK NU or NUL or NULL 0 .BREAK SOH 1 (_^A) .BREAK STX 2 (_^B) .BREAK ETX 3 (_^C) .BREAK EOT 4 (_^D) .BREAK ENQ 5 (_^E) .BREAK ACK 6 (_^F) .BREAK BEL 7 (_^G) .BREAK BS 10 (_^H) .BREAK HT 11 (_^I) .BREAK LF 12 (_^J) .BREAK VT 13 (_^K) .BREAK FF 14 (_^L) .BREAK CR 15 (_^M) .BREAK SO 16 (_^N) .BREAK SI 17 (_^O) .BREAK DLE 20 (_^P) .BREAK DC1 21 (_^Q) .BREAK DC2 22 (_^R) .BREAK DC3 23 (_^S) .BREAK DC4 24 (_^T) .BREAK NAK 25 (_^U) .BREAK SYN 26 (_^V) .BREAK ETB 27 (_^W) .BREAK CAN 30 (_^X) .BREAK EM 31 (_^Y) .BREAK SUB 32 (_^Z) .BREAK ESC 33 .BREAK FS 34 .BREAK GS 35 .BREAK RS 36 .BREAK US 37 .BREAK SPACE (abbr to 2 char) 40 .BREAK DEL 177 .BREAK (ASCII value) .JUSTIFY .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 .NOJUSTIFY;.TAB STOPS 16,30 /AT:_^@ ! Attention character is null .BREAK /EO:_^Z ! EOF character is control/Z .BREAK /AT:* ! Attention character is "*". .BREAK /AT:'% ! Attention char is "%". .BREAK /AT:%A ! Attention char is "a". .BREAK /AT:SP ! Attention char is " ". .BREAK /AS:_^Q:~ ! Send XON on input of tilde. .JUSTIFY .SUBTITLE Advanced Features - Driving fast line from slow terminal. .PAGE .PARAGRAPH TEM does not have any flow control embedded in it, which makes it awkward to (say) drive a 4800 baud line from a 1200 baud terminal. The one time I tried it, I had no trouble. If your experience is different, here are some things you can try: .LEFT MARGIN +10 .BLANK;.INDENT -5 * Try not to receive too much data at once, so the receive 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, assert the /RPA switch. .BLANK;.INDENT -5 * Try to get the remote system to pad (more) nulls into its transmissions. .BLANK;.INDENT -5 * Rebuild TEM with bigger buffers. 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 niput 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 LB1:[1,5]ddnINI.TEM .BREAK and the shutdown command file is named .INDENT +8 LB1:[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. .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 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 13K. This assumes you have not mapped it to any resident libraries. The major installation options have been covered above. There are some other customizaions you can do: .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 ring buffers is determined by symbol "BUFSIZ". You can change it if you wish. The task will grow or shrink by (4 bytes)*(the size of your change). .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. Initial parameter settings can be changed by modifying as follows: .NOJUSTIFY;.TAB STOPS 24,50 .BREAK To change Modify .BREAK --------------------- ------- .BREAK /PAUSE magnitude RCDLAY: .BREAK /PAUSE units RCDUNT: .BREAK Attention character ATNBYT: .BREAK End-of-file character EOFBYT: .BREAK Prompt character PMPBYT: .BREAK /ASSIGN setting ASGTBL: .BREAK /REMOTE setting TERASA: .BREAK Transmit speed SPDRSD: .BREAK Receive speed SPDRRC: .BREAK;.JUSTIFY .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. If you add one to the list, it would be polite to add it to the list of saved original settings at "TEROMC:". "Switchable" settings cannot be modified this way. .BLANK;.INDENT -4 * Similarly, the desired setups for the local terminal are at "TELNMC:". The originals are at "TELOMC:". .BLANK;.INDENT -4 * The default filename block for the log file is at "LOGFNB:". The default filename block for the send file is at "SNDFNB:". .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.