From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc731.txt | 1653 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1653 insertions(+) create mode 100644 doc/rfc/rfc731.txt (limited to 'doc/rfc/rfc731.txt') diff --git a/doc/rfc/rfc731.txt b/doc/rfc/rfc731.txt new file mode 100644 index 0000000..546f050 --- /dev/null +++ b/doc/rfc/rfc731.txt @@ -0,0 +1,1653 @@ + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + + + + + + + Telnet Data Entry Terminal Option + + + +1. Command Name and code: + + DET 20 + + +2. Command Meanings + + IAC WILL DET + The sender of this command REQUESTS or AGREES to send and + receive subcommands to control the Data Entry Terminal. + + IAC WONT DET + The sender of this command REFUSES to send and receive + subcommands to control the Data Entry Terminal. + + IAC DO DET + The sender of this command REQUESTS or AGREES to send and + receive subcommands to control the Data Entry Terminal. + + IAC DONT DET + The sender of this command REFUSES to send and receive + subcommands to control the Data Entry Terminal. + + The DET option uses five classes of subcommands 1) to + establish the requirements and capabilities of the + application and the terminal, 2) to format the screen, and + to control the 3) edit, 4) erasure, and 5) transmission + functions. The subcommands that perform these functions are + described below. + + + T__h_e_N__e_t_w_o_r_k_V__i_r_t_u_a_l_D__a_t_a_E__n_t_r_y_T__e_r_m_i_n_a_l(NVDET) + + The NVDET consists of a keyboard and a rectangular + display. The keyboard is capable of generating all of + the characters of the ASCII character set. In addition, + the keyboard may possess a number of function keys which + when pressed cause a FN subcommand to be sent. (Although + most DET's will support one or more peripheral devices + such as a paper tape reader or a printer, this option + + + 1 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + does not consider their support. Support of peripheral + devices should be treated by a separate option.) + + The screen of the data entry terminal is a rectangle M + characters by N lines. The values of M and N are set by + negotiating the Output Line Width and Output Page Size + options, respectively. The next writing position (x,y) + on the screen (where x is the character position and y is + the position of the line on the screen) is indicated by a + special display character called the cursor. The cursor + may be moved to any position on the screen without + disturbing any characters already on the screen. Cursor + addressing in existing terminals utilizes several + topologies and addressing methods. In order to make the + burden of implementaton as easy as possible this protocol + supports two topologies (the finite plane and the helical + torus) and three addressing methods ((x,y); x and y, and + relative increments). Since the finite plane with + absolute addressing is the least ambiguous and the + easiest to translate to and from the others, it is the + default scheme used by the NVDET. The torodial form with + either relative or absolute addressing is provided for + convience. + + Also the NVDET provides a mechanism for defining on the + screen fields with special attributes. For example, + characters entered into these fields may be displayed + with brighter intensity, highlighted by reverse video or + blinking, or protected from modification by the user. + This latter feature is one of the most heavily used for + applications where the DET displays a form to be filled + out by the user. + + The definition of the NVDET uses Telnet option + subnegotiations to accomplish all of its functions. + Since none of the ASCII characters sent in the data + stream have been used to define these functions, the DET + option can be used in a "raw" or even "rare" mode. In + circumstances where the application program knows what + kind of terminal is on the other end, it can send the + ASCII characters required to control functions not + supported by the option or an implementation. In general + keeping all NVDET functions out of the data stream + provides better flexibility. + + F__a_c_i_l_i_t_y_F__u_n_c_t_i_o_n_s (for detailed semantics see Section 5.) + + IAC SB DET IAC SE + + where is one 8-bit byte + + + 2 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + indicating the class of the facilities to be described, + and is a field of one or two 8-bit bytes + containing flags describing the facilities required or + desired by the sender. The bits of the facility maps are + numbered from the right starting at zero. Thus, if bit 2 + is set the field will have a decimal value of 4. The + values of the field are as follows: + + facility cmd: EDIT FACILITIES subcommand code: 1 + facility map: bit numbers + Toroidal Cursor Addressing 6 + Incremental Cursor Addressing 5 + Read Cursor Address 4 + Line Insert/Delete 3 + Char Insert/Delete 2 + Back Tab 1 + Positive Addressing only 0 + + where: + + If the Toroidal Cursor Addressing bit is set, the sender + requests or provides that the SKIP TO LINE and SKIP TO + CHAR subcommands be supported. + + If the Incremental Cursor Addressing bit is set, the + sender requests or provides that the UP, DOWN, LEFT, and + RIGHT subcommands be supported. + + If the Read Cursor bit is set, the sender requests or + provides the READ CURSOR subcommand. + + If the Line Insert/Delete bit is set, the sender requests + or provides that the LINE INSERT and LINE DELETE + subcommands be supported. + + If the Char Insert/Delete bit is set, the sender requests + or provides that the CHAR INSERT and CHAR DELETE + subcommands be supported. + + If the Back Tab bit is set, the sender requests or + provides that the BACK TAB subcommand be supported. + + If the Positive Addressing bit is set, then the sender is + informing the receiver that it can only move the cursor + in the positive direction. (Note: Terminals that have + this property also have a Home function to get back to + the beginning.) + + facility cmd: ERASE FACILITIES subcommand code: 2 + facility map: bit numbers + + + 3 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + Erase Field 4 + Erase Line 3 + Erase Rest of Screen 2 + Erase Rest of Line 1 + Erase Rest of Field 0 + + where: + + If a bit of the facility map for this facility command is + set, the sender requests or provides the facility + indicated by the bit. For a more complete description of + each of these functions see the Erase Functions section + below. + + facility cmd: TRANSMIT FACILITIES subcommand code: 3 + facility map: bit numbers + Data Transmit 5 + Transmit Line 4 + Transmit Field 3 + Transmit Rest of Screen 2 + Transmit Rest of Line 1 + Transmit Rest of Field 0 + + where: + + If a bit of the facility map for this facility command is + set, the sender requests or provides the facility + indicated by the bit. For a more complete description of + each of these functions see the Transmit Functions + section below. + + facility cmd: FORMAT FACILITIES subcommand code: 4 + facility map: bit numbers + byte 0 + Repeat 4 + Blinking 3 + Reverse Video 2 + Right Justification 1 + Overstrike 0 + + byte 1 + Protection On/Off 6 + Protection 5 + Alphabetic-only Protection 4 + Numeric-only Protection 3 + Intensity 0-2 + + where: + + If the Repeat bit is set the sender requests or provides + + + 4 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + the REPEAT subcommand. + + If the Blinking bit is set, the sender requests or + provides the ability to highlight a string of characters + by causing them to blink. + + If the Reverse Video bit is set, the sender requests or + provides the ability to highlight a string of characters + by "reversing the video image," i.e., if the characters + are normally displayed as black characters on a white + background, this is reversed to be white characters on a + black background, or vice versa. + + If the Right Justification bit is set, the sender + requests or provides the ability to cause entries of data + to be right justified in the field. + + If the Overstrike bit is set, the sender requests or + provides the ability to superimpose one character over + another on the screen much like a hard copy terminal + would do if the print mechanism struck the same position + on the paper with different characters. + + If the Protection On/Off bit is set, the sender requests + or provides the ability to turn on and off field + protection. + + If the Protection bit is set, the sender requests or + provides the ability to protect certain strings of + characters displayed on the screen from being altered by + the user of the terminal. Setting this bit also implies + that ERASE UNPROTECTED and TRANSMIT UNPROTECTED + subcommands (see below) are supported. + + If the Alphabetic-only Protection bit is set, the sender + requests or provides the ability to constrain the user of + the terminal such that he may only enter alphabetic data + into certain areas of the screen. + + If the Numeric-only Protection bit is set, the sender + requests or provides the ability to constrain the user of + the terminal such that he may only enter numerical data + into certain areas of the screen. + + The three bits of the Intensity field will contain a + positive binary integer indicating the number of levels + of intensity that the sender requests or provides for + displaying the data. The value of the 3 bit field should + be interpreted in the following way: + + + + 5 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + 1 one visible intensity + 2 two intensities; normal and bright + 3 three intensities; off, normal, and bright + >3 >3 intensities; off, and the remaining levels + proportioned from dimmest to brightest intensity. + + For the all of the above commands, if the appropriate bit + in is not set, then the sender does not + request or provide that facility. + + + E__d_i_t_i_n_g_F__u_n_c_t_i_o_n_s + + IAC SB DET MOVE CURSOR IAC SE subcommand code: 5 + + where is an 8-bit byte containing a positive binary + integer representing the character position of the + cursor, is an 8-bit byte containing a positive binary + integer representing the line position of the cursor. + + This subcommand moves the cursor to the absolute screen + address (x,y) with the following boundary conditions: + + if x>M-1, set x=M-1 and send an ERROR subcommand + if y>N-1, set y=N-1 and send an ERROR subcommand + + This describes a finite plane topology on the screen. + + IAC SB DET SKIP TO LINE IAC SE subcommand code: 6 + + where is a positive 8-bit binary number. + + This subcommand moves the cursor to the absolute screen + line y. x remains constant. For values of y>N-1 + y = y mod N. + + IAC SB DET SKIP TO CHAR IAC SE subcommand code: 7 + + where is a positive 8-bit binary number. + + This subcommand moves the cursor to the absolute + character position x. y remains constant, unless x>M-1 + in which case: + x' = (x mod M) + y' = (y+(x DIV N)) + where x' and y' are the new values of the cursor. + + These last two subcommands define a toroidal topology on + the screen. + + + + 6 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + IAC SB DET UP IAC SE subcommand code: 8 + IAC SB DET DOWN IAC SE subcommand code: 9 + IAC SB DET LEFT IAC SE subcommand code: 10 + IAC SB DET RIGHT IAC SE subcommand code: 11 + + These subcommands are provided as a convenience for some + terminals. The commands UP, DOWN, LEFT, and RIGHT are + defined as + + UP: (x,y)=(x, y-1 mod N) + DOWN: (x,y)=(x, y+1 mod N) + LEFT: (x,y)=(x-1, y); if x=0 then x-1 = 0 + RIGHT: (x,y)=(x+1 mod M, y) and y = y+1 if x+1>M-1 + + Note: DOWN, LEFT, and RIGHT cannot always be replaced by + the ASCII codes for linefeed, backspace, and space + respectively. The latter are format effectors while the + former are cursor controls. + + IAC SB DET HOME IAC SE subcommand code: 12 + + This subcommand positions the cursor to (0,0). This is + equivalent to a MOVE CURSOR 0,0 or the sequence SKIP TO + LINE 0, SKIP TO CHAR 0. This subcommand is provided for + convenience, since most terminals have it as a separate + control. + + IAC SB DET LINE INSERT IAC SE subcommand code: 13 + + This subcommand inserts a line of spaces between lines y + (the current line, determined by the position of the + cursor) and line y-1. Lines y through N-2 move down one + line, i.e. line y becomes line y+1; y+1 becomes y+2, + ...; N-2 becomes N-1. Line N-1 is lost off the bottom of + the screen. The position of the cursor remains + unchanged. + + IAC SB DET LINE DELETE IAC SE subcommand code: 14 + + This subcommand deletes line y where y is the current + line position of the cursor. Lines y+1 through N-1 move + up one line, i.e. line y+1 becomes line y; y+2 becomes + y+1; ...; N-1 becomes N-2. The N-1st line position is + set to all spaces. The cursor position remains + unchanged. + + IAC SB DET CHAR INSERT IAC SE subcommand code: 15 + + This subcommand inserts the next character in the data + stream between the xth and x-1st characters, where x is + + + 7 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + the current character position of the cursor. The xth + through M-2nd characters on the line are shifted one + character positon to the right. The new character is + inserted at the vacated xth position. The M-1st + character is lost. The position of the cursor remains + unchanged. + + IAC SB DET CHAR DELETE IAC SE subcommand code: 16 + + This subcommand deletes the character on the screen at + the x-th position. The x-th character is removed and the + characters x+1 through M-1 are shifted one character + position to the left to become the x-th through M-2nd + characters. The M-1st character position is left empty. + (For most terminals it will be set to a NUL or space.) + The cursor position remains unchanged. + + IAC SB DET READ CURSOR IAC SE subcommand code: 17 + + This subcommand requests the receiver to send the present + position of the cursor to the sender. + + IAC SB DET CURSOR POSITION IAC SE + subcommand code: 18 + + where and are positive 8-bit binary integers. + + This subcommand is sent by a Telnet implementation in + response to a READ CURSOR subcommand to convey the + coordinates of the cursor to the other side. Note: x is + less than M and y is less than N. + + IAC SB DET REVERSE TAB IAC SE subcommand code: 19 + + This subcommand causes the cursor to move to the previous + tab position. If none exists on the present line, the + cursor moves to the previous line and so on until a tab + is found or the address (0,0) is encountered. When field + protection is in effect the cursor moves to the beginning + of the preceding unprotected field. + + T__r_a_n_s_m_i_t_F__u_n_c_t_i_o_n_s (For detailed semantics see Section 5.) + + IAC SB DET TRANSMIT SCREEN IAC SE subcommand code: 20 + + This subcommand causes the terminal to transmit all + characters on the screen from position (0,0) to + (M-1,N-1). The cursor will be at (0,0) after the + operation is complete. + + + + 8 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + IAC SB DET TRANSMIT UNPROTECTED IAC SE + subcommand code: 21 + + This subcommand causes the terminal to transmit all + characters in unprotected fields from position (0,0) to + (M-1,N-1). The unprotected fields are separated by the + field separator subcommand. The cursor will be at (0,0) + or at the beginning of the first unprotected field after + the operation is complete. + + IAC SB DET TRANSMIT LINE IAC SE subcommand code: 22 + + This subcommand causes the terminal to transmit all data + on the yth line where y is determined by the present + position of the cursor. Data is sent from character + position (0,y) to the end-of-line or position (M-1,y) + whichever comes first. The cursor position after the + transmission is one character position after the end of + line condition or the beginning of the next line, + (0,y+1). + + IAC SB DET TRANSMIT FIELD IAC SE subcommand code: 23 + + This subcommand causes the terminal to transmit all data + in the field presently occupied by the cursor. The + cursor position after the operation is complete is one + character position after the end of the field or, if that + position is protected, at the beginning of the next + unprotected field. + + IAC SB DET TRANSMIT REST OF SCREEN IAC SE + subcommand code: 24 + + This subcommand causes the terminal to transmit all + characters on the screen from position (x,y) to (M-1,N-1) + or until the end of text. (x,y) is the current cursor + position. The cursor position after the operation is one + character position after the last text character, or + (0,0) if the last filled character position is (M-1,N-1). + + IAC SB DET TRANSMIT REST OF LINE IAC SE + subcommand code: 25 + + This subcommand causes the terminal to transmit all + characters on the yth line from position (x,y) to the end + of line or (M-1,y) whichever comes first. (x,y) is the + current cursor position. The cursor position after the + operation is one character position after the last + character of the line or the first character of the next + line. + + + 9 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + + IAC SB DET TRANSMIT REST OF FIELD IAC SE + subcommand code: 26 + + This subcommand causes the receiver to transmit the rest + of the characters in the field currently occupied by the + cursor. The cursor position after the operation is at + the beginning of the next field. + + IAC SB DET DATA TRANSMIT IAC SE + subcommand code: 27 + + This subcommand is used to preface data sent from the + terminal in response to a user action or a TRANSMIT + command. The parameters and indicate the initial + position of the cursor. See the Transmit Subcommands + subsection in Section 5 for more details. + + + E__r_a_s_e_F__u_n_c_t_i_o_n_s + + IAC SB DET ERASE SCREEN IAC SE subcommand code: 28 + + This subcommand causes all characters to be removed from + the screen. All fields regardless of their attributes + are deleted. The cursor position after the operation + will be (0,0). Most terminals set the erased characters + to either NUL or space characters. + + IAC SB DET ERASE LINE IAC SE subcommand code: 29 + + This subcommand causes all characters on the yth line to + be removed from the screen, where y is the line of the + current cursor position. All fields regardless of their + attributes are deleted. The cursor position after this + operation will be (0,y). Note: This operation can be + easily simulated by the sequence: LINE DELETE, LINE + INSERT. However, the order is important to insure that + no data is lost off the bottom of the screen. + + IAC SB DET ERASE FIELD IAC SE subcommand code: 30 + + This subcommand causes all characters in the field + occupied by the cursor to be removed. The cursor + position after the operation is at the beginning of the + field. + + IAC SB DET ERASE REST OF SCREEN IAC SE + subcommand code: 31 + + + + 10 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + This subcommand causes all characters from position (x,y) + to (M-1,N-1) to be removed from the screen. All fields + regardless of their attributes are deleted. The cursor + position after the operation is unchanged. This is + equivalent to doing an ERASE REST OF LINE plus a LINE + DELETE for lines greater than y. + + IAC SB DET ERASE REST OF LINE IAC SE + subcommand code: 32 + + This subcommand causes all characters from position (x,y) + to (M-1,y) to be removed from the screen All fields + regardless of their attributes are deleted. The cursor + position after the operation is unchanged. + + IAC SB DET ERASE REST OF FIELD IAC SE + subcommand code: 33 + + This subcommand causes all characters from position (x,y) + to the end of the current field to be removed from the + screen. The cursor position after the operation is + unchanged. + + IAC SB DET ERASE UNPROTECTED IAC SE + subcommand code: 34 + + This subcommand causes all characters on the screen in + unprotected fields to be removed from the screen. The + cursor position after the operation is at (0,0) or, if + that position is protected, at the beginning of the first + unprotected field. + + F__o_r_m_a_t_F__u_n_c_t_i_o_n_s + + IAC SB DET FORMAT DATA IAC SE + subcommand code: 35 + + where is an 8-bit byte containing the + following flags: + + Blinking 7 + Reverse Video 6 + Right Justification 5 + Protection 3-4 + Intensity 0-2 + + where: + + If the Blinking bit is set, the following field of + characters should have the Blinking attribute + + + 11 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + applied to it by the receiver. + + If the Reverse Video bit is set, the following field of + characters should be displayed by the receiver + with video reversed. + + If the Right Justification bit is set, the input entered + into the field of characters should be right + justified. + + The Protection field is two bits wide and may take on the + following values: + + 0 no protection + 1 protected + 2 alphabetic only + 3 numeric only + + The protection attribute specifies that the other side + may modify any character (no protection), modify no + characters (protected), enter only alphabetical + characters (A-Z, and a-z) (alphabetic only), or enter + only numerical characters (0-9,+,.,and -) (numeric only) + in the following field of bytes. + + The Intensity field is 3 bits wide and should be + interpreted in the following way: + + The values 0-6 should be used as an indication of the + relative brightness to be used when displaying the + characters in or entered into the following field + characters wide. The number of levels of brightness + available should have been obtained previously by the + Format Facility subcommand. The exact algorithm for + mapping these values to the available levels of intensity + is left to the implementors. A value of 7 in the + intensity field indicates that the brightness should be + off, and any characters in or entered into the field + should not be displayed. + + is 2 bytes that should be interpreted as a + positive 16-bit binary integer representing the number of + characters following this command which are affected by + it. + + Data sent to the terminal or the Using Host for unwritten + areas of the screen not in the scope of the count should + be displayed with the default values of the format map. + The default values are No Blinking, Normal Video, No + Justification, No Protection and Normal Intensity. + + + 12 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + + This subcommand is used to format data to be displayed on + the screen of the terminal. The describes + the attributes that the field bytes wide should + have. This field is to start at the position of the + cursor when the command is acted upon. The next + displayable characters in the data stream are used to + fill the field. Subsequent REPEAT subcommands may be + used to specify the contents of this field. If the + sender specifies attributes that have not been agreed + upon by the use of the Format Facility subcommand, the + Telnet process should send an Error Subcommand to the + sender, but format the screen as if the bit had not been + set. + + IAC SB DET REPEAT IAC SE + subcommand code: 36 + + where is a positive 8-bit binary integer. + is an 8-bit byte containing an ASCII character. + + This subcommand is used to perform data compression on + data being transferred to the terminal by encoding + strings of identical characters as the character and a + count. The repeated characters may be part of a field + specified + + IAC SB DET SUPPRESS PROTECTION IAC SE + subcommand code: 37 + + where may have the values of the Telnet + option negotiation: + + 251 WILL + 252 WONT + 253 DO + 254 DONT + + This subcommand is used to suppress the field protection + in a non-destructive manner. Many data entry terminals + provide the means by which protection may be turned on + and off without modifying the contents of the screen or + the terminal's memory. Thus, the protection may be + turned off and back on without retransmitting the form. + The default setting of the option is that protection is + on, in other words + + IAC SB DET SUPPRESS PROTECTION WONT IAC SE + IAC SB DET SUPPRESS PROTECTION DONT IAC SE + + + + 13 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + Negotiation of this subcommand follows the same rules as + negotiations of the Telnet options. + + IAC SB DET FIELD SEPARATOR IAC SE subcommand code: 38 + + It is necessary when transmitting only the unprotected + portion of the screen to provide a means for delimiting + the fields. Existing DET's use a variety of ASCII + characters such as Tab, Group Separator, Unit Separator, + etc. In order to maintain transparency of the NVDET this + subcommand is used to separate the fields. Clearly, this + incurs rather high overhead. This overhead can be + avoided by using the Byte Macro Option (see Appendix 3). + + M__i_s_c_e_l_l_a_n_e_o_u_s_C__o_m_m_a_n_d_s + + IAC SB DET FN IAC SE subcommand code: 39 + + where: is one byte. + + Many data-entry terminals provide a set of "function" + keys which when pressed send a one-character command to + the server. This subcommand describes such a facility. + The values of the field are defined by the user + and server. The option merely provides the means to + transfer the information. + + IAC SB DET ERROR IAC SE + subcommand code: 40 + + where: + is a byte containing the subcommand code of + the subcommand in error. + is a byte containing an error code. + (For a list of the defined error codes see Appendix 2.) + + This subcommand is provided to allow DET option + implementations to report errors they detect to the + corresponding Telnet process. At this point it is worth + reiterating that the philosophy of this option is that + when an error is detected it should be reported; however, + the implementation should attempt its best effort to + carry out the intent of the subcommand or data in error. + + + + + + + + + + 14 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + +3. Default and Minimal Implementation Specifications + + D__e_f_a_u_l_t + + WON'T DET -- DON'T DET + + Neither host wishes to use the Data Entry Terminal option. + + M__i_n_i_m_a_l_I__m_p_l_e_m_e_n_t_a_t_i_o_n + + DET EDIT FACILITIES + DET ERASE FACILITIES + DET TRANSMIT FACILITIES + DET FORMAT FACILITIES + DET MOVE CURSOR + DET HOME + DET ERASE SCREEN + DET TRANSMIT SCREEN + DET FORMAT DATA + DET ERROR + + In the case of formatting the data, the minimal + implementation should be able to support a low and high + level of intensity and protection for all or no + characters in a field. These functions, however, are not + required. + + The minimal implementation also requires that the Output + Line Width and Output Page Size Telnet options be + supported. + + + + + + + + + + + + + + + + + + + + + + + 15 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + +4. Motivation + + The Telnet protocol was originally designed to provide a + means for scroll-mode terminals, such as the standard + teletype, to communicate with processes through the network. + This was suitable for the vast majority of terminals and + users at that time. However, as use of the network has + increased into other areas, especially areas where the + network is considered to provide a production environment + for other work, the desires and requirements of the user + community have changed. Therefore, it is necessary to + consider supporting facilities that were not initially + supported. This Telnet option attempts to do that for + applications that require data entry terminals. + + This option in effect defines the Network Virtual Data Entry + Terminal. Although the description of this option is quite + long, this does not imply that the Telnet protocol is a poor + vehicle for this facility. Data Entry Terminals are rather + complex and varied in their abilities. This option attempts + to support both the minimal set of useful functions that are + either common to all or can be easily simulated and the more + sophisticated functions supplied in some terminals. + + Unlike most real data entry terminals where the terminal + functions are encoded into one or more characters of the + native character set, this option performs all such controls + within the Telnet subnegotiation mechanism. This allows + programs that are intimately familiar with the kind of + terminal they are communicating with to send commands that + may not be supported by either the option or the + implementation. In other words, it is possible to operate + in a "raw" or at least "rare" mode using as much of the + option as necessary. + + Although many data entry terminals support a variety of + peripheral devices such as printers, cassettes, etc. it is + beyond the scope of this option to entertain such + considerations. A separate option should be defined to + handle this aspect of these devices. + + + + + + + + + + + + + 16 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + +5. Description + + + +G__e_n_e_r_a_l_N__o_t_e_s + + All implementations of this option are required to support a + certain minimal set of the subcommands for this option. + Section 3 contains a complete list of the subcommands in + this minimal set. In keeping with the Telnet protocol + philosophy that an implementation should not have to be able + to parse commands it does not implement, every subcommand of + this option is either in the minimal set or is covered by + one of the facility subcommands. An implementation must + "negotiate" with its correspondent for permission to use + subcommands not in the minimal set before using them. For + details of this negotiation process see the section below on + facility subcommands. + + Most data entry terminals are used in a half duplex mode. + (Although most DET's on the market can be used either as + data entry terminals or as standard interactive terminals, + we are only concerned here with their use as DET's.) When + this option is used, it is suggested that the following + Telnet options be refused: Echo, Remote Controlled + Transmission and Echoing, and Suppress Go-Ahead. However, + this option could be used to support a simple full duplex + CRT based application using the basic cursor control + functions provided here. For these cases, one or more of + the above list of options might be required. (Support of + sophisticated interactive calligraphic applications is + beyond the scope of this option and should be done by + another option or the Network Graphics Protocol.) + + In RFC 728, it was noted that a synch sequence can cause + undesired interactions between Telnet Control functions and + the data stream. A synch sequence causes data but not + control functions to be flushed. If a control function + which has an effect on the data immediately following it is + present in the data stream when a synch sequence occurs, the + control function will have its effect not on the intended + data but on the data immediately following the Data Mark. + The following DET subcommands are susceptible to this + pitfall: + + CHAR INSERT + DATA TRANSMIT + FORMAT DATA + + The undesired interactions are best avoided by the receiver + + + 17 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + of the synch sequence deleting these subcommands and all + data associated with them before continuing to process the + control functions. This implies that the Data Mark should + not occur in the middle of the data associated with these + subcommands. + +F__a_c_i_l_i_t_y_S__u_b_c_o_m_m_a_n_d_s + + These four subcommands are used by the User and Server + implementations to negotiate the subcommands and attributes + of the terminal that may be utilized. This negotiation can + be viewed as the terminal (User Host) indicating what + facilities are provided and the Server Host (or application + program) indicating what facilities are desired. + + W__h_e_n_S__e_n_t:_ A Server Telnet implementation using the DET + option must send a facility subcommand requesting the use of + a particular subcommand or terminal attribute not in the + minimal implementation before the first use of that + subcommand or attribute. The User Telnet implementation + should respond as quickly as possible with its reply. + Neither the User nor Server are required to negotiate one + subcommand at a time. Also, a Telnet implementation + responding to a facility subcommand is not required to give + permission only for that subcommand. It may send a format + map indicating all facilities of that class which it + supports. However, a Telnet implementation requesting + facilities must send a facility subcommand before its first + use of the subcommand regardless of whether earlier + negotiations have indicated the facility is provided. The + facility cannot be used until a corresponding facility + subcommand has been received. There are no other + constraints on when the facility subcommands may be sent. + In particular, it is not necessary for an application to + know at the beginning of a session all facilities that it + will use. + + A__c_t_i_o_n_W__h_e_n_R__e_c_i_e_v_e_d:_ There are two possible actions that + may be taken when a facility subcommand is received + depending on whether the receiver is a requestor or a + provider (User). + + Requestor: When a facility subcommand is received by a + requestor and it is in the state of Waiting for a Reply, it + should go into the state of Not Waiting. It should then + take the facility map it had sent and form the logical + intersection with the facility map received. (For the + Intensity attribute, one should take the minimum of the + number received and the number requested.) The result + indicates the facilities successfully negotiated. Note: if + + + 18 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + the receiver is not in the Waiting for Reply state, then + this is the provider case described next. + + Provider: When a facility subcommand is received, it + should send a facility subcommand with a facility map of the + facilities it provides as soon as possible. It should then + determine what new facilities it is providing for the + Requestor by forming the logical intersection of the + facility map received and the one sent. + + Note: Although in most cases the requestor will be the + Server Host and the provider will be the User Host + supporting the terminal, this distinction may not always be + true. + +T__r_a_n_s_m_i_t_S__u_b_c_o_m_m_a_n_d_s + + There are two kinds of transmit subcommands: those used to + request that data be sent to the requestor, and one to + preface data sent to the requestor. The first kind allow + the requestor to control when, from where and to some degree + how much data is transmitted from the terminal. Their + explanation is straightforward and may be found in Section + 2. + + Data may be sent from the terminal as a result of two + events: the user of the terminal caused the transmission or + in response to a transmit subcommand. Some programs may + wish to know from where on the screen the transmission + began. (This is reasonable, since the terminal user may + move the cursor around considerably before transmitting.) + Other programs may not need such information. The DATA + TRANSMIT subcommand is provided in case this function is + needed. When used this subcommand prefaces data coming from + the terminal. The parameters and give the screen + coordinates of the beginning of the transmission. must + be less than or equal to M-1 and must be less than or + equal to N-1. It is assumed that all data between this DATA + TRANSMIT and the next one starts at the coordinates given + by the first subcommand and continues filling each line + thereafter according to the constraints of the screen and + the format effectors in the data. Thus an intelligent or + sloppy user-host DET implementation (depending on your point + of view) need only include a DATA TRANSMIT subcommand when + the new starting point is different from the last ending + point. + + +6. Sample Interaction + + + + 19 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + +The nomenclature of RFC 726 will be used to describe this example. To +quote that RFC: + + "S:" is sent from serving host to using host. + "U:" is sent from using host to serving host. + "T:" is entered by the terminal user. + "P:" is printed on the terminal. + + Text surrounded by square brackets([]) is commentary. Text + surrounded by angle brackets (<>) is to be taken as a single unit. + E.g, carriage return is , and the decimal value 27 is + represented <27>. + + We assume that the user has established the Telnet connection, + logged on, and an application program has just been started either + by the user directly or through a canned start up procedure. The + presentation on the page is meant to merely group entities together + and does not imply the position of message boundaries. One should + assume that any part of the dialogue may be sent as one or many + messages. The first action of the program or Telnet is to + negotiate the DET option: + +S: + +U: + +S: [First negotiate the screen + size. In this case we are +U: asking the user the size of the + terminal. This could have been +U:<25> done before the DET option was + negotiated.] +S:<0> + +S: + +U:<80> [Defines the screen to be 25 + lines by 80 characters. +S:<0> The server may use this + information when formatting + the screen.] +S: [Now set the terminal attributes.] + + +U: + + +S: [Erase the screen and + + + 20 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + start sending the form.] + + <0> + <5>Name: + + <0><1> + + + + Protection=1, Intensity=1><0> + <8> + + Address: + <0><4> + + + + Protection=1, Intensity=1><0> + <17> + Telephone number: + + <32><4> + + + + Protection=1, Intensity=1><0> + <24> + Social Security Number: + + [Establish a field that doesn't + display what is typed into it.] + <0><11> + + <32> + <5> + + [Get permission to use Blinking + <0> Attribute.] + +U: + + +S: + <0><29> + + Your SSN will not be printed. + + + + + 21 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + + +The previous exchange has placed a form on the screen that looks like: + +Name: +Address: + + +Telephone Number: Social Security Number: + "Your SSN will not be printed." + +where the quoted string is blinking. + +The terminal user is now free to fill in the form provided. He +positions the cursor at the beginning of the first field (this usually +is done by hitting the tab key) and begins typing. We do not show this +interaction since it does not generate any interaction with the User +Telnet program or the network. After the terminal user has completed +filling in the form, he strikes the transmit key to send the unprotected +part of the form, but first the User Telnet program negotiates the Byte +Macro Option to condense the Field Separator subcommand: + +U: [Negotiate Byte Macro Option.] + +S: [Define decimal 166 to be the + Field Separator subcommand +U: (see Appendix 3)] + <166><6> + +S:<166> [The server accepts the macro.] + + + +U:<0><6> + + John Doe <166> 1515 Elm St., Urbana, Il 61801 + <166> 217-333-9999 <166> 123-45-6789 <166> + +S: + Thank you. + +And so on. + + + + + + + + + + 22 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + + + + +Appendix 1 - Subcommands, opcodes and syntax + + + + 1 EDIT FACILITIES + 2 ERASE FACILITIES + 3 TRANSMIT FACILITIES + 4 FORMAT FACILITIES + 5 MOVE CURSOR + 6 SKIP TO LINE + 7 SKIP TO CHAR + 8 UP + 9 DOWN + 10 LEFT + 11 RIGHT + 12 HOME + 13 LINE INSERT + 14 LINE DELETE + 15 CHAR INSERT + 16 CHAR DELETE + 17 READ CURSOR + 18 CURSOR POSITION + 19 REVERSE TAB + 20 TRANSMIT SCREEN + 21 TRANSMIT UNPROTECTED + 22 TRANSMIT LINE + 23 TRANSMIT FIELD + 24 TRANSMIT REST OF SCREEN + 25 TRANSMIT REST OF LINE + 26 TRANSMIT REST OF FIELD + 27 DATA TRANSMIT + 28 ERASE SCREEN + 29 ERASE LINE + 30 ERASE FIELD + 31 ERASE REST OF SCREEN + 32 ERASE REST OF LINE + 33 ERASE REST OF FIELD + 34 ERASE UNPROTECTED + 35 FORMAT DATA + 36 REPEAT + 37 SUPPRESS PROTECTION + 38 FIELD SEPARATOR + 39 FN + 40 ERROR + + + + + 23 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + + + + + +Appendix 2 - Error Codes + + + + 1 Facility not previously negotiated. + 2 Illegal subcommand code. + 3 Cursor Address Out of Bounds. + 4 Undefined FN value. + 4 Can't negotiate acceptable line width. + 5 Can't negotiate acceptable page length. + 6 Illegal parameter in subcommand. + 7 Syntax error in parsing subcommand. + 8 Too many parameters in subcommand. + 9 Too few parameters in subcommand. + 10 Undefined parameter value + 11 Unsupported combination of Format Attributes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 24 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + + + + + + + Appendix 3 - Use of the Byte Macro Option + + + + + One of the major drawbacks of the DET option is that because the + functions are encoded as Telnet option subnegotiations a fairly + high overhead is incurred. A function like Character Insert which + is encoded as a single byte in most terminals requires six bytes in + the DET option. Originally the only other solution that would have + accomplished the same transparency that the use of subcommands + provides would have been to define additional Telnet control + functions. However, since this would entail modification of the + Telnet protocol itself, it was felt that this was not a wise + solution. Since then the Telnet Byte Macro Option (RFC 729) has + been defined. This option allows the user and server Telnets to + map an arbitrary character string into a single byte which is then + transferred over the net. Thus the Byte Macro Option provides the + means for implementations to avoid the overhead for heavily used + subcommands. The rest of this appendix suggests how the Byte Macro + Option should be applied to the DET option. + + In keeping with the specification of the Byte Macro Option, macro + bytes will be chosen from the range 128 to 239. For the DET + option, it is suggested that macro bytes be chosen by adding the + subcommand code to 128. In addition, an unofficial DET subcommand + might be defined indicating that each side was willing to support + macro bytes for all subcommands (but not necessarily support all of + the subcommands themselves) according to this algorithm. This + subcommand would be: + + IAC SB DET DET-MACRO IAC SE + subcommand code: 254 + + where may have the values of the Telnet option + negotiation: + 251 WILL + 252 WONT + 253 DO + 254 DONT + + This subcommand is sent by a Telnet implementation to indicate its + willingness to adopt byte macros for all of the DET subcommands + according to the following algorithm: + + + 25 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + + The macro byte for subcommand i will be i+128 and will represent + the following string for parameterless subcommands: + + IAC SB DET IAC SE + + and the following string for subcommands with parameters: + + IAC SB DET + + The default setting for this subcommand is that the macros are + not in effect, in other words, + + IAC SB DET DET-MACRO WONT IAC SE + IAC SB DET DET-MACRO DONT IAC SE + + Negotiation of this subcommand follows the same rules as + negotiations of the Telnet options. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 26 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + + + + + + + References + + + + 1. ADM-1 Interactive Display Terminal Operator's Handbook + Lear-Siegler, Inc. 7410-31. + + 2. ADM-Interactive Display Terminal Operator's Handbook + Lear-Siegler, Inc. EID, 1974. + + 3. Burroughs TD 700/800 Reference Manual, Burroughs Corp., 1973 + + 4. Burroughs TD 820 Reference Manual, Burroughs Corp. 1975. + + 5. CC-40 Communications Station: General Information Manual. + Computer Communication, Inc. Pub. No. MI-1100. 1974. + + 6. Crocker, David. "Telnet Byte Macro Option," RFC 729, 1977. + + 7. Data Entry Virtual Terminal Protocol for Euronet, DRAFT, 1977. + + 8. Day, John. "A Minor Pitfall in the Telnet Protocol," + RFC 728, 1977. + + 9. Hazeltine 2000 Desk Top Display Operating Instructions. + Hazeltine IB-1866A, 1870. + + 10. How to Use the Consul 980: A Terminal Operator's Guide + and Interface Manual. Applied Digital Data Systems, Inc. + 98-3000. + + 11. How to Use the Consul 520: A Terminal Operator's Guide + and Interface Manual. Applied Digital Data Systems, Inc. + 52-3000. + + 12. Honeywell 7700 Series Visual Information Projection (VIP) + Systems: Preliminary Edition. 1973. + + 13. An Introduction to the IBM 3270 Information Display System. + IBM GA27-2739-4. 1973. + + 14. Naffah, N. "Protocole Appareil Virtuel type Ecran" + Reseau Cyclades. TER 536. 1976. + + + + 27 + +John Day Data Entry Terminal Option +June 27,1977 NIC 40652 + RFC 731 + + + 15. Postel, Jon and Crocker, David. "Remote Controlled + Transmission and Echoing Telnet Option", RFC 726 + NIC 39237, Mar. 1977. + + 16. Schicker, Peter. "Virtual Terminal Protocol (Proposal 2). + INWG Protocol Note #32., 1976. + + 17. UNISCOPE Display Terminal : Programmer Reference . Sperry- + Univac UP-7807 Rev. 2, 1975. + + 18. Universal Terminal System 400: System Description. Sperry- + Univac UP-8357, 1976. + + 19. Walden, David C. "Telnet Output Line Width Option." + NIC # 20196, 1973, also in ARPANET Protocol Handbook, 1976. + + 20. Walden, David C. "Telnet Output Page Size" NIC # 20197, + 1973, also in ARPANET Protocol Handbook, 1976. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 28 + \ No newline at end of file -- cgit v1.2.3