ARCH Virtual Terminal Package DECsystem-10 to PDP-11 Virtual Terminal Support Author: RW Stamerjohn Version: 2.2 Revised: April 5, 1979 ARCH Virtual Terminal Package PAGE 2 Chapter 1 -- Introduction CHAPTER 1 INTRODUCTION 1.0 Introduction This document describes the DECsystem-10 to PDP-11 virtual terminal (VTY) software package. This software was developed at the Monsanto Agriculural Research headquarters in St. Louis, Mo. by Ralph Stamerjohn. Any comments about this document or any of the software described in it should be refered to the author. The VTY package provides the DECsystem-10 user the ability to access any RSX-11M node in the ARCH network as a true virtual terminal from his DECsystem-10 terminal. This package is one part of the ARCH network support package. It is not intended for application usage; rather, it is a programming tool designed for use by RSX-11M application programmers. The package is made up of three major components: a DECsystem-10 program named RSXVT3, A RSX-11M task named VTY3.., and the implementation of psuedo terminals into the RSX-11M operating system (PTYs). RSXVT3 is gets the desired node the user wants communicate with and request VTY3.. on that node. RSXVT3 then takes the characters typed on the DECsystem-10 terminal and transmitts them to VTY3.. via DECNET. VTY3.. passes the characters into a PTY and returns any PTY output to RSXVT3. This output is sent to the DECsystem-10 terminal. A new element of the package is LTY. This RSX-11M MCR task allows an RSX-11M system to access a psuedo terminal on another system. This program was written by Dave Purvis 1.1 Contents The following chapters document various aspects of the VTY package. The chapters and their contents are listed below: Chapter 2 - Software/Hardware Requirements ARCH Virtual Terminal Package PAGE 3 Chapter 1 -- Introduction This chapter states the current software/hardware requirements necessary to use the VTY package. This discussion lists the DECsystem-10, RSX-11M, and DECNET requirements. Chapter 3 - Usage This chapter describes how the package is used by the DECsystem-10 and RSX-11M terminal user. The chapter covers dialogue, control characters, and error messages. Chapter 4 - Implementation Details This chapter discusses in general terms how the package was implemented. For exact implementation details, see the various source code listings. Chapter 5 - Package Installation This chapter describes how to install the package on DECsystem-10 and RSX-11M systems. The discussion list all files used at Monsanto to install the package. Chapter 6 - Shortcomings, Deficiencies, and Futures This chapter list known shortcomings and deficiencies in the version 2.2 implementation of the VTY package. It also discusses possible future enhancements for later releases. ARCH Virtual Terminal Package PAGE 4 Chapter 2 -- Software/Hardware Requirements CHAPTER 2 SOFTWARE/HARDWARE REQUIREMENTS 2.0 Introduction The VTY package consist of a DECsystem-10 program (RSXVT3), two RSX-11M tasks (VTY3.. and ...LTY), and RSX-11M executive modifications to provide psuedo terminal support. This chapter details the various software/hardware features each component requires from its host operating system and DECNET. 2.1 DECsystem-10 Requirements The VTY package is implemented on the DECsystem-10 using the TOPS10 version 6.03 monitor with the task-to-task communication option. RSXVT3 provides its own I/O buffers and uses a buffer size of 10(8) words for task output and 25(8) words for task input. RSXVT3 uses .IOBYT mode for all task I/O and .IOPIM mode for all terminal I/O. The current version of RSXVT3 has a size of 2+1 pages and is built with a shareable high segment. The VTY package has been run successfully on a KL1090 system. It is not known if the package will function on the KA10 or KI10 processors. 2.2 PDP-11 Requirements The VTY package is implemented on the PDP-11 using the RSX-11M version 3.1 executive with the DECNET-11M version 2.0 option. VTY3.. requires AST support be included in the RSX-11M system. The current version of VTY3.. may handle any number of psuedo terminals and has kernal size of 4712(8) bytes plus 1124(8) bytes per psuedo terminal. VTY3.. may have up to eight outstanding QIO's per psuedo terminal and sufficient pool space must be available. ARCH Virtual Terminal Package PAGE 5 Chapter 2 -- Software/Hardware Requirements An alternate version of VTY3 named VTI3 can also be generated. This version includes some data gathering support. It does not effect any VTY3 functionality. If statistics are desired, this version should be installed and fixed. The various buffers can be read later using the MCR OPR command. The LTY task is a new feature of the package and is still under development. It is the functional equivalent of the DECsystem-10 RSXVT3 program, only operating for RSX-11M. The final RSX-11M requirements are not known. The executive modifications add two new directives to the RSX-11M system and some number of psuedo terminals (PTY). The number of DL11's and PTY's may not exceed 16(10). The total number of actual terminals and PTY's may not exceed 64(10). The executive modifications add 246(8) bytes to the executive and the PTY's require DCB, UCB, and SCB space. Chapter 4 discusses what a psuedo terminal is and how they are implemented. The VTY package has been run successfully on a PDP-11/34 and PDP-11/55. It has never been tested in an unmapped environment, however, the code should run successully. 2.3 DECNET Requirements The VTY package is implemented using DECNET phase II protocols. The DECsystem-10 task-to-task service must include the .IOBYT I/O mode. The largest message size used by the package is 25(8) DECsystem-10 words or 124(8) PDP-11 bytes. Each VTY connection requires two DECNET logical links. ARCH Virtual Terminal Package PAGE 6 Chapter 3 -- Usage CHAPTER 3 USAGE 3.0 Introduction This chapter describes how the VTY package is used by the DECsystem-10 terminal user. The chapter is broken into subsections discussing the dialogue used to setup the DECsystem-10 terminal as a RSX-11M virtual terminal, the control characters used during virtual terminal mode, and the possible error messages from RSXVT3. The package is used from an RSX-11M terminal by invoking LTY. The dialogue and control characters used by this program are similar to RSXVT3. Execpt where noted, the comments on RSXVT3 also apply to LTY. 3.1 Dialogue The VTY package is initiated from a DECsystem-10 terminal by running the program SYS:RSXVT3.EXE. This program gets the nodename from the terminal user and checks that virtual terminal support is allowed to this node. If everything checks out, RSXVT3 connects to VTY3.. on the remote node and begins passing all terminal input to the remote node and all output from the remote node to the DECsystem-10 terminal. If an error is detected during connection, the appropriate error message is typed and the user is reprompted. A sample dialogue is shown below: .R RSXVT3 RSX-11M VTY SERVICE - V02.01 NODE: nodename CONNECTION COMPLETE TO RSX-11M VTY #nn ARCH Virtual Terminal Package PAGE 7 Chapter 3 -- Usage TYPE ^Y TO BREAK CONNECTION, ^P FOR ODT TOGGLE ^P [ENTERING ODT MODE] > The following notes apply to the dialogue shown above: 1. The nodename can be entered in upper or lower case. 2. The nodename is the one to six character remote node name. No underscore need follow the name. The node number is not a legal response. 3. The VTY terminal number (VTY #nn) is the RSX-11M terminal number the DECsystem-10 terminal is connected to on the remote node. 4. After the > prompt is typed, the terminal is in virtual terminal mode. All characters except the control characters listed in the next section will be sent to the remote node (including ^C). 3.2 Control Characters Four ASCII characters are used to control the VTY package and cannot be passed to the remote node. The first two characters are ^S (XOFF) and ^Q (XON). These characters have the traditional meaning (stop output/start output) and are processed by TOPS10. The other two control characters are used by RSXVT3. The character ^Y is used to exit from virtual terminal mode. When this character is typed, RSXVT3 disconnects from VTY3.. and exits to monitor level. Note that any PDP-11 program using the psuedo terminal will hang in I/O wait until RSXVT3 connects to that node and psuedo terminal again. The character ^P toggles the echo mode used by RSXVT3. The initial mode is called ODT. In this mode all characters typed at the DECsystem-10 terminal are transmitted to the remote node one character at a time. The remote node performs all echoing functions. This mode is useful for operations which do not need a line terminator (i.e. ODT) or require exact character echoing. In the other mode, RSXVT3 attempts to echo characters locally and buffer transmissions to the remote node. RSXPTY types a message whenever ^P is entered describing the effect of the toggle. The message ^P [ENTERING ODT MODE] signifies that ODT mode is enabled. The message ^P [LEAVING ODT MODE] ARCH Virtual Terminal Package PAGE 8 Chapter 3 -- Usage signifies character buffering is enabled. In addition, ^O is specially processed by the package in order to achieve the desired effect of turning off output. Whenever a ^O is typed, all terminal output is flushed using the CLRBFO TTCALL and the ^O sent to the remote node. Until the ^O is returned by VTY3.., all incoming characters are ignored. NOTE Beacuse RSX-11M does not pass ^O to a task, LTY uses ^B for this functionality. It internally transforms the control-B into a control-O. 3.3 Error Messages An error message is typed on the DEcsystem-10 terminal whenever RSXVT3 encounters a situation it cannot resolve. The error messages follow the standard DECsystem-10 convention. Fatal error messages start with a question mark (?). After a fatal error, RSXVT3 will exit to the monitor. Non-fatal errors are preceded with a percent sign (%). RSXVT3 attempts to use specific error messages to describe the error conditions. If an error cannot be interpreted, a more general error message is used and the octal error number is typed. Please report such messages to the author so more intelligent error handling can be added to RSXVT3. The code also uses HALT instructions in all places no error is ever expected. If RSXVT3 exits because of one of these instructions, again notify the author. NOTE With the phase II protocols, exact meaning for various errors have not been determined. Therefore, all errors report the site and numerical value. ARCH Virtual Terminal Package PAGE 9 Chapter 3 -- Usage NOTE The LTY errors have not been checked and documented yet. The following list the error messages in alphabetical order: ?VTYNTS - NO TASK DEVICE AVAILABLE AT SELECTED NODE This error message is typed if RSXVT3 cannot open the TSK device to the selected node. This error is typically caused by all TSK devices being in use already or no task device assigned to the selected node. The first condition can be verified by performing a SYSTAT B command and counting the number of TSK devices shown. If the number is equal to the system limit (currently 10) you must wait until another user frees a device. The second condition can be checked by performing a NODE command and checking to see if any TSK devices are available to the selected node. If none, dismounting and mounting the network at the RSX-11M node will typically clear up the problem. ?VTYTIE - TASK INPUT ERROR #nnnnnn This error message is typed if RSXVT3 encounters an error during input from the remote node. The number is the file status for the TSK device. If this error occurs, notify the author. ?VTYTOE - TASK OUTPUT ERROR #nnnnnn This error message is typed if RSXVT3 encounters an error during output to the remote node. The number is the file status for the TSK device. If this error occurs, notify the author. ?VTYUNE - UNDEFINED NODE ERROR #nnnnnn The error message is typed if RSXVT3 cannot interpret the error return from the NODE. UUO used to process the nodename. If this error occurs, notify the author. ?VTYUUE - UNDEFINED ENTER ERROR #nnnnnn This error message is typed if RSXVT3 cannot determine the error from the connect to the ARCH Virtual Terminal Package PAGE 10 Chapter 3 -- Usage remote node. If this error occurs, notify the author. ARCH Virtual Terminal Package PAGE 11 Chapter 4 -- Implementation Details CHAPTER 4 IMPLEMENTATION DETAILS 4.0 Introduction This chapter discusses how the VTY package was implemented on the ARCH network. It attempts to provide some insight into the program structure and logic. The source code remains the final authority on implementation details. The remaining chapter is broken into six sections. The first will discuss the concept and implementation of psuedo terminals in RSX-11M. The next two sections will layout the program structure of RSXVT3 and VTY3.. respectively. Sections 5 and 6 list the character processing rules used by the DECsystem-10 and PDP-11 programs. The last section discusses how link termination is handled at both ends. NOTE Because LTY is still under development and test, its implementation details are not included here. 4.1 RSX-11M Psuedo Terminals The key to the implementation of the VTY package was the development of psuedo terminal support for RSX-11M. A psuedo terminal is a device which has all the attributes of a terminal, but has its I/O provided by a task instead of a communications interface. The initial brainstorm on how to implement psuedo terminals under RSX-11M should be credited to Henry Dayringer and Roger Uphoff. Implementing PTY support under RSX-11M turned out to be a ARCH Virtual Terminal Package PAGE 12 Chapter 4 -- Implementation Details very simple project. A PTY appears to the terminal driver (TTDRV) as a DL11 asynchronous interface. One DCB is set up for all PTY's and an UCB and SCB is created for each PTY. The S.CSR in the SCB points to a four word block in core memory. This becomes the PTY device registers. Another 4 word block is allocated in device vector space as the PTY trap vector addresses. These modifications involved the creation of a seperate module (PTYTB.MAC) to implement the device structures and appropriate edits to RSXMC.MAC. The symbol P$$PTY is added to RSXMC.MAC to define the number of PTY's desired. D$$L11 is increased by this value and V$$CTR is increased by 10(8) times this value. The PTY device structures create terminals TT77:, TT76:, etc. The implemtation of psuedo terminals involved no modifications to the terminal driver. Two new directives where added to the RSX-11M executive to allow a task to simulate terminal input and output. The new directives involved modifying DRDSP.MAC to dispatch correctly and the creation of a new module (DRPTY.MAC) to process the directives. The directive ICHR$ simulates a key stroke at a terminal. This directive has the form: ICHR$ pty,char Where: pty = PTY reference number. This number has a range of 0 to P$$PTY-1 and is used to define which PTY to use. char = Character to input to PTY. The directive processor places the character into the receive field of the PTY device register. It then sets the system stack and PSW to reflect a device interrupt and passes control to the terminal driver DL11 input interrupt service. This is done using the vector address defined for the console terminal (location 60). Upon return, the directive processor sets the calling task DSW to success and exits from the monitor. The directive will return failure status if the PTY reference number is not legal or the PTY does not have interrupts enabled. The directive OCHR$ simulates output to a terminal. This directive has the form: OCHR$ pty,size,buf Where: pty = PTY reference number. This number has a range of 0 to P$$PTY-1 and is used to define which PTY to use. size = Size of user buffer in bytes. This number has a range of 1 to 377(8) and is the size of ARCH Virtual Terminal Package PAGE 13 Chapter 4 -- Implementation Details the buffer defined by the next argument. buf = Character buffer address. This is the starting address of the buffer in the user task space to return output characters. The directive processor verifies the PTY reference number and buffer are correct and returns an error if not. It then checks US.OUT in the PTY UCB to see if a character has been output and a transmit complete interrupt is pending. If the bit is on, the character is removed from the transmit register of the PTY and stored in the user buffer. The module then sets up the system stack and PSW to reflect a device interrupt and passes control to the DL11 output interrupt service. When control is returned and the user buffer is not full yet, the cycle is repeated. After no more characters are available or the user buffer is filled, the user task DSW is set to the number of characters in the buffer and control is returned to it. If no characters where available, an error return is made. Macro definitions where added to the system macro library (RSXMAC.SML) for both directives. All three forms ($, $C, and $S) of system macros are available. Correct use of PTY's from a task is illustrated by the VTY3.. task (see section 4.6). 4.2 RSXVT3 Structure RSXVT3 is the DECsystem-10 portion of the VTY package. It is written in Macro-10 and follows the ARCH Macro-10 programming standard. The code consist of three major sections: initialization of virtual terminal service, actual virtual terminal processing, and various subroutines and utility processes. This section will discuss various important concepts in the code. The reader should refer to the actual source listing for a complete understanding. Most major variables are defined symbolically on page three of the source file. Symbols that can be redfined without any other code modifications include the following: TSKONM = Number of buffers to allocate to the TSK device outout ring. TSKINM = Number of buffers to allocate to the TSK device input ring. TTYINM = Number of buffers to allocate to the TTY device input ring. The following symbols can be set to new values without code ARCH Virtual Terminal Package PAGE 14 Chapter 4 -- Implementation Details changes to RSXVT3, however, corresponding changes must be made to VTY3.. to reflect the changes. MARKR = Symbol used to mark echo sequences. This is currently set to 377. The chosen value must not be a legal character. TOP11S = Size of buffers sent tp PDP-11. This variable defines the size of the TTY input buffers and TSK output buffers. If this variable is changed, PTY... must be modified to allocate an input buffer of correct size. FRP11S = Size of buffers from PDP-11. This variable defines the size of the TTY output buffers and TSK input buffers. If the variable is changed, PTY... must be modified to use output buffers of correct size. The virtual terminal initialization section is fairly straight forward. Notice that both the TSK and TTY devices are opened for asynchronous I/O (UU.AIO). Note also the TTY device has PAGE mode enabled and a zero PIM mode break set. Because TOPS10 I/O is required to be half-duplex in nature (concurrent input and outputs are not allowed), two logical links must be used to support between RSXVT3 and the remote node. The first link is used for all output to the remote nod; the second link is used for all input from the remote node. 4.3 VTY3.. Structure VTY3.. is the RSX-11M portion of the VTY package. It is written in Macro-11 and follows the ARCH Macro-11 programming standard. The task is written to be the passive DECNET partner to RSXVT3. It is AST driven and supports multiple DECNET connects. This section will discuss various important concepts used in this task. The reader should refer to the source code listing for a complete understanding. All variables are defined on page three of the source file. In naming the variables, the phrase 'VTY' refers to the virtual terminal support supplied to the DECsystem-10 and 'PTY' refers the the RSX-11M psuedo terminal used by this task. It is important to remember that VTY3.. is basically a psuedo terminal driver that happens to get the terminal input from a remote node and routes terminal output to the remote node. Symbols that can be redefined without any other code modifications include the following: ARCH Virtual Terminal Package PAGE 15 Chapter 4 -- Implementation Details I.NUM = Number of character input buffers to allocate for each PTY. O.NUM = Number of terminal output buffers to allocate for each PTY. E.NUM = Number of echo output buffers to allocate for each PTY. The following symbols can be set to new values without code changes to VTY3.., however, corresponding changes must be made to RSXVT3 to reflect the changes. MARKR = Symbol used to mark echo sequences. The must have the same definition as RSXVT3. I.SIZ = Size of buffers from DECsystem-10. This variable must have the same size as TOP11S in RSXVT3. Note that the number here is in PDP-11 bytes and TOP11S is DECsystem-10 words. I.SIZ should be 4 times TOP11S. O.SIZ = Size of buffers to DEcsystem-10. This variable must have the same size as FRP11S in RSXVT3. Note that the number here is in PDP-11 bytes and FRP11S is DECsystem-10 words. O.SIZ should be 4 times FRP11s plus B.HDR. E.SIZ must be less than or equal to O.SIZ. When VTY3.. is started it determines the number of PTY's it can service based on the number of luns assigned to it, the number of PTY's generated into the system and the amount of buffer space available to it. The resulting number is stored in location PTYNUM. As stated above, the task is almost entirely AST driven. The mainline code sets up the number of PTY's supported, declares the task open for DECNET I/O and sleeps until no further PTY's need service. Three major AST's are used by the task. The first is the DECNET mailbox AST. This AST is serviced at SPAAST and is used for processing connects to VTY3.. and disconnects from the task. Disconnects are simply handled by marking the PTY free and decrementing the number of PTY's in use. When this number reaches zero. Connects are handled by searching for a free PTY, accepting the connect and establishing the other link by connecting back to the requesting task. Finally, the TTY number is sent back and the PTY initialized. If no link is available, the initial connection is rejected. ARCH Virtual Terminal Package PAGE 16 Chapter 4 -- Implementation Details NOTE A patch is required to the DECsystem-10 side to correctly handle the reject case. If not applied, the job remains in event wait. The next important AST is at CRVAST. This routine handles input from the DEcsystem-10 into the PTY and echo back to the DECsystem-10. Multiple inputs are queued together if input servicing is disabled. Output from the PTY is handled by the POSAST routine. This AST occurs on a timed basis (current every 15 tics). Each active PTY is pooled and output transmitted to the DECsystem-10. If the output buffer is not completly filled, a partial AST is declared for 2 tics later. Partial AST's will continue to occur until no more character output is available. 4.4 RSXVT3 Character Processing This section and the following one discuss how each end of the VTY package performs character processing. Obviously, this is the most important part of the code and the most likely area to examine for performance improvements. It is also the most fragile area because of the neccesity of synchronizing several asynchrounous processes. The character processing code in RSXVT3 consist of one large loop with two subloops inside it. In the large loop, RSXVT3 hibernates until an I/O completes. It then enters a loop to process keyboard input. When all input characters are handled, the program enters a loop to process all network input. The code then loops back and hibernates again. The TTY processing loop logic depends on whether character buffering is enabled or disabled (ODT mode). In either mode, the character is first checked to see if it is a control character (^P or ^Y). If not, and the current mode is ODT, the character is marked as not echoed (bit 7 off) and transmitted to the remote node. The loop continues until no more characters are available. In buffered mode, the character is checked to see if it can be echoed locally. Characters from space (040) to underscore (137) are candidates for local echo. They are marked as echoed (bit 7 on) and buffered for later transmission to the remote ARCH Virtual Terminal Package PAGE 17 Chapter 4 -- Implementation Details node. A break character is marked for echo and placed in the output buffer. A special marker (377) is then placed in the buffer and the buffer sent to the remote node. Further input character processing is disabled until the marker is received back from the PDP-11. Whenever a break sequence occurs, the next character is treated in the same fashion, even if it is a legal character for local echo. This is done to properly handle rubouts. After all input characters have been processed or a break sequence is effected, the TSK loop is entered. All characters received from the remote node are typed on the DECsystem-10 terminal, except a marker. When all characters are processed, the code normally loops to the wait state. If a marker was received, the code continues at the TTY loop instead. Currently, output to the DECsystem-10 terminal is via OUT UUO's. It is possible to use TTCALL's to do output. In the future, RSXVT3 may be modified to use such UUO's. 4.5 VTY3.. Character Processing The processing of characters on the PDP-11 is divided into two sections: processing characters received from the DECsystem-10 and PTY output polling. The first type is handled by the AST processor for input completion (CRVAST). The output polling is handled by the mark time AST service routine (POSAST). This task has the responsiblity of sending output from the PTY to the DECsystem-10 in correct order. The two character processors interact to accomplish this. The output polling is used to periodically empty the PTY of output and transmit the characters to the DECsystem-10. Whenever the input processor is active, output polling for the PTY is disabled and all PTY output is handled by the input processor. Each character processor has its own output buffers to use. If an output buffer cannot be obtained for polling purposes, the PTY is skipped until the next mark time occurs. If an echo buffer for the input processor cannot be obtained, the input processor suspends itself and is resumed when an echo buffer is rerturned to the pool. Note that while input processing is suspended, the PTY polling also remains suspended. CRVAST also illustrates the correct sequence of feeding a PTY and getting the character echos. Before a character is input to the PTY, all output from the PTY is dumped to an echo buffer. When the OCHR$ directive returns no more characters, a character is fed to the PTY via the ICHR$ directive. The echo ARCH Virtual Terminal Package PAGE 18 Chapter 4 -- Implementation Details of the character is then obtained. If the fed character is to be echoed, the output is sent to the DECsystem-10. If the character is already echoed, the echo is checked to see if only the input character was returned by the terminal driver. If so, the output is discarded, otherwise, VTY3.. returns the output to the DECsystem-10. If the input character is the marker symbol, it is placed in the output buffer and not fed to the PTY. 4.6 Link Termination The VTY package currently uses a very simple link termination scheme. RSXVT3 releases the network device and exits whenever a TSK I/O error is detected or a ^Y typed. VTY3.. stops servicing a PTY whenever an non-connect mailbox AST is dequed and exits when all connections are broken. This scheme works adequately for normal circumstances. The weak area is when the link is broken without logging off the PDP-11 system. The PTY is not serviced, but remains logged in. Furthermore, any task using the PTY for its TI: remains in I/O wait. Only careful use of the VTY package will prevent this situation from becoming a problem. ARCH Virtual Terminal Package PAGE 19 Chapter 5 -- Installation CHAPTER 5 INSTALLATION 5.0 Introduction This chapter details the files required to install the VTY package. The chapter is broken into sections on RSXVT3, VTY3.., ...LTY, and psuedo terminal installation. 5.1 RSXVT3 Installation The control file RSXVT3.CTL is used to create the DECsystem-10 side of the VTY package. The file assembles, loads, and save RSXVT3 and uses RUNOFF to produce this document. The VTY software is kept in PPN [10,210] on DSKC. The following files are required by RSXVT3.CTL. RSXVT3.CTL Batch control file used to build RSXVT3. RSXVT3.MAC Macro-10 source file for RSXVT3. RSXVT3.RNO Runoff version of this document. The following files are produced by RSXVT3.CTL. The list also comments on the disposition of the files. RSXVT3.EXE Saved image of RSXVT3. This file should be copied to the system area. RSXVT3.DOC This document. This file should be copied to the documentation area. The control file produces a batch log and listings of itself, RSXVT3.MAC and RSXVT3.DOC. ARCH Virtual Terminal Package PAGE 20 Chapter 5 -- Installation 5.2 VTY3, LTY Installation The indirect command file VTYGEN.CMD is used to build the RSX-11M side of the VTY package. The file assembles and task builds the tasks VTY3.TSK and LTY.TSK. The VTY software is kept on the ARCH system maintenance disk in UIC [177,*]. The following files are required by VTYGEN.CMD. VTYASM.CMD Indirect command file used to assemble sources. VTYBLD.CMD Task builder command file for VTY3. VTIBLD.CMD Task builder command file for VTI3. LTYBLD.CMD Task builder command file for LTY. VTY3 .MAC Macro-11 source file for VTY. VTI3 .MAC Macro-11 prefix file for VTI. LTY .MAC Macro-11 source file for LTY. The VTY task image must be installed in a RSX-11M system before virtual terminal service is available to that node. It should be incremented by 452(8) words for each PTY over one to be supported. 5.3 RSX-11M Psuedo Terminal Installation Installing psuedo terminals into RSX-11M involves patching the directive dispatcher module (DRDSP.MAC) and adding two new modules to the executive (DRPTY.MAC and PTYTB.MAC). The system configuration file (RSXMC.MAC) must also be editted to define the number of PTY's to be added to the system. The system generation procedure used for ARCH RSX-11M systems will include PTY support if desired by the system manager. DRDSP .COR SLP correction file for DRDSP.MAC. This file adds the two new directives to the RSX-11M system. DRPTY .MAC Macro-11 source file containing the directive processning code for the PTY directives. PTYTB .MAC Macro-11 source file containing PTY data structures. PTYMAC.MAC Source file with macro definitions for PTY ARCH Virtual Terminal Package PAGE 21 Chapter 5 -- Installation directives. ARCH Virtual Terminal Package PAGE 22 Chapter 6 -- Shortcomings, Deficiencies, and Futures CHAPTER 6 SHORTCOMINGS, DEFICIENCIES, AND FUTURES 6.0 Introduction This chapter deals with what the VTY package does wrong or badly and possible improvements for the future. The first section list all known problems with the current package. This is followed by sections on current limitations and possible future enhancements. If any other problems are discovered, please notify the author as soon as possible. Submit any future enhancements in writing to the author. 6.1 Known Problems The following list the known problem areas of the VTY package and the corrective action if applicable. Since resolution of the problems involves further RSX-11M or TOPS10 modifications, further action to resolve these problems will be defered to the release of RSX-11M version 3.1. 1. Whenever RSXVT3 terminates the link, VTY3.. marks that PTY down and does no more character processing for it. Any PDP-11 task using that PTY for its TI: will hang in I/O wait. Also the PTY will remain logged in if not logged off before the link was terminated. This situation can be avoided by proper use of the VTY software, i.e. never terminate a session until you log off the RSX-11M system. A better resolution would be to have VTY3.. disable the PTY whenever a connection is broken (similiar to the technique used by the terminal driver when a dial-up line hangs up). 2. The specific error codes for the DECsystem-10 have not be decoded into proper error messages. This involves carefully creating possible error situations and noting the errors that occur. ARCH Virtual Terminal Package PAGE 23 Chapter 6 -- Shortcomings, Deficiencies, and Futures 6.2 Limitations The VTY package accomplishes most of its objectives. The current limit of five virtual terminals per RSX-11M node is artificial and can be raised or lowered if necessary. The same applies to the number of TSK devices available on the DECsystem-10. A more real limitation is who should be allowed to use the package and under what circumstances. The package is new and can be destructive if misused. In general, virtual terminal support is intended only for RSX-11M application programs and should be used only on a system with the permission of the system manager. If common sense do not provide sufficient controls, more strict measures will be taken (including total removal from the ARCH network). 6.3 Future Enhancements There are many enhancements desirable to the VTY package. The following list the major areas to be examined for future releases. 1. Implement directives to allocate/deallocate PTY's. A deallocated PTY would swallow any output to it and reject any input request. When a PTY is deallocated, any user would be logged off. VTY3.. would be modified to use these directives. 2. Implement a more reliable and efficient character processing method. One approach is the method used by DECsystem DN8x software. 3. Modify RSXVT3 to use PISER instead of the HIBER UUO to tell if terminal or task input has finished. The current method was used because of the author's ignorance of PISER techniques. 4. Improve buffer handling by studying load rates. The current buffer sizes and the number of buffers where chosen by guess. 5. Log the use of virtual terminals to the ARCH RSX-11M event logger. ARCH Virtual Terminal Package PAGE 24 Chapter 6 -- Shortcomings, Deficiencies, and Futures 6. Implement RSX11M to RSX11M and RSX11M to DECsystem-10 virtual terminal support.