As per Relevance of the word terminal, we have this rfc below:






John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731








Telnet Data Entry Terminal



1. Command Name and code

DET 20


2. Command

IAC WILL
The sender of this command REQUESTS or AGREES to send
receive subcommands to control the Data Entry Terminal

IAC WONT
The sender of this command REFUSES to send and
subcommands to control the Data Entry Terminal

IAC DO
The sender of this command REQUESTS or AGREES to send
receive subcommands to control the Data Entry Terminal

IAC DONT
The sender of this command REFUSES to send and
subcommands to control the Data Entry Terminal

The DET option uses five classes of subcommands 1)
establish the requirements and capabilities of
application and the terminal, 2) to format the screen,
to control the 3) edit, 4) erasure, and 5)
functions. The subcommands that perform these functions
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
display. The keyboard is capable of generating all
the characters of the ASCII character set. In addition
the keyboard may possess a number of function keys
when pressed cause a FN subcommand to be sent. (
most DET's will support one or more peripheral
such as a paper tape reader or a printer, this


1

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


does not consider their support. Support of
devices should be treated by a separate option.)

The screen of the data entry terminal is a rectangle
characters by N lines. The values of M and N are set
negotiating the Output Line Width and Output Page
options, respectively. The next writing position (x,y
on the screen (where x is the character position and y
the position of the line on the screen) is indicated by
special display character called the cursor. The
may be moved to any position on the screen
disturbing any characters already on the screen.
addressing in existing terminals utilizes
topologies and addressing methods. In order to make
burden of implementaton as easy as possible this
supports two topologies (the finite plane and the
torus) and three addressing methods ((x,y); x and y,
relative increments). Since the finite plane
absolute addressing is the least ambiguous and
easiest to translate to and from the others, it is
default scheme used by the NVDET. The torodial form
either relative or absolute addressing is provided
convience

Also the NVDET provides a mechanism for defining on
screen fields with special attributes. For example
characters entered into these fields may be
with brighter intensity, highlighted by reverse video
blinking, or protected from modification by the user
This latter feature is one of the most heavily used
applications where the DET displays a form to be
out by the user

The definition of the NVDET uses Telnet
subnegotiations to accomplish all of its functions
Since none of the ASCII characters sent in the
stream have been used to define these functions, the
option can be used in a "raw" or even "rare" mode.
circumstances where the application program knows
kind of terminal is on the other end, it can send
ASCII characters required to control functions
supported by the option or an implementation. In
keeping all NVDET functions out of the data
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 facility subcommand><facility map> IAC

where facility subcommand> is one 8-bit


2

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


indicating the class of the facilities to be described
and <facility map> is a field of one or two 8-bit
containing flags describing the facilities required
desired by the sender. The bits of the facility maps
numbered from the right starting at zero. Thus, if bit 2
is set the field will have a decimal value of 4.
values of the field are as follows

facility cmd: EDIT FACILITIES subcommand code: 1
facility map: bit
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
requests or provides that the SKIP TO LINE and SKIP
CHAR subcommands be supported

If the Incremental Cursor Addressing bit is set,
sender requests or provides that the UP, DOWN, LEFT,
RIGHT subcommands be supported

If the Read Cursor bit is set, the sender requests
provides the READ CURSOR subcommand

If the Line Insert/Delete bit is set, the sender
or provides that the LINE INSERT and LINE
subcommands be supported

If the Char Insert/Delete bit is set, the sender
or provides that the CHAR INSERT and CHAR
subcommands be supported

If the Back Tab bit is set, the sender requests
provides that the BACK TAB subcommand be supported

If the Positive Addressing bit is set, then the sender
informing the receiver that it can only move the
in the positive direction. (Note: Terminals that
this property also have a Home function to get back
the beginning.)

facility cmd: ERASE FACILITIES subcommand code: 2
facility map: bit


3

John Day Data Entry Terminal
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
set, the sender requests or provides the
indicated by the bit. For a more complete description
each of these functions see the Erase Functions
below

facility cmd: TRANSMIT FACILITIES subcommand code: 3
facility map: bit
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
set, the sender requests or provides the
indicated by the bit. For a more complete description
each of these functions see the Transmit
section below

facility cmd: FORMAT FACILITIES subcommand code: 4
facility map: bit
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


4

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


the REPEAT subcommand

If the Blinking bit is set, the sender requests
provides the ability to highlight a string of
by causing them to blink

If the Reverse Video bit is set, the sender requests
provides the ability to highlight a string of
by "reversing the video image," i.e., if the
are normally displayed as black characters on a
background, this is reversed to be white characters on
black background, or vice versa

If the Right Justification bit is set, the
requests or provides the ability to cause entries of
to be right justified in the field

If the Overstrike bit is set, the sender requests
provides the ability to superimpose one character
another on the screen much like a hard copy
would do if the print mechanism struck the same
on the paper with different characters

If the Protection On/Off bit is set, the sender
or provides the ability to turn on and off
protection

If the Protection bit is set, the sender requests
provides the ability to protect certain strings
characters displayed on the screen from being altered
the user of the terminal. Setting this bit also
that ERASE UNPROTECTED and TRANSMIT
subcommands (see below) are supported

If the Alphabetic-only Protection bit is set, the
requests or provides the ability to constrain the user
the terminal such that he may only enter alphabetic
into certain areas of the screen

If the Numeric-only Protection bit is set, the
requests or provides the ability to constrain the user
the terminal such that he may only enter numerical
into certain areas of the screen

The three bits of the Intensity field will contain
positive binary integer indicating the number of
of intensity that the sender requests or provides
displaying the data. The value of the 3 bit field
be interpreted in the following way



5

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


1 one visible
2 two intensities; normal and
3 three intensities; off, normal, and
>3 >3 intensities; off, and the remaining
proportioned from dimmest to brightest intensity

For the all of the above commands, if the appropriate
in <facility map> is not set, then the sender does
request or provide that facility


E__d_i_t_i_n_g_F__u_n_c_t_i_o_n_

IAC SB DET MOVE CURSOR IAC SE subcommand code: 5

where is an 8-bit byte containing a positive
integer representing the character position of
cursor, is an 8-bit byte containing a positive
integer representing the line position of the cursor

This subcommand moves the cursor to the absolute
address (x,y) with the following boundary conditions

if x>M-1, set x=M-1 and send an ERROR
if y>N-1, set y=N-1 and send an ERROR

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
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
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
the screen



6

John Day Data Entry Terminal
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
terminals. The commands UP, DOWN, LEFT, and RIGHT
defined

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
the ASCII codes for linefeed, backspace, and
respectively. The latter are format effectors while
former are cursor controls

IAC SB DET HOME IAC SE subcommand code: 12

This subcommand positions the cursor to (0,0). This
equivalent to a MOVE CURSOR 0,0 or the sequence SKIP
LINE 0, SKIP TO CHAR 0. This subcommand is provided
convenience, since most terminals haveÆ it as a
control

IAC SB DET LINE INSERT IAC SE subcommand code: 13

This subcommand inserts a line of spaces between lines
(the current line, determined by the position of
cursor) and line y-1. Lines y through N-2 move down
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
the screen. The position of the cursor
unchanged

IAC SB DET LINE DELETE IAC SE subcommand code: 14

This subcommand deletes line y where y is the
line position of the cursor. Lines y+1 through N-1
up one line, i.e. line y+1 becomes line y; y+2
y+1; ...; N-1 becomes N-2. The N-1st line position
set to all spaces. The cursor position
unchanged

IAC SB DET CHAR INSERT IAC SE subcommand code: 15

This subcommand inserts the next character in the
stream between the xth and x-1st characters, where x


7

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


the current character position of the cursor. The
through M-2nd characters on the line are shifted
character positon to the right. The new character
inserted at the vacated xth position. The M-1
character is lost. The position of the cursor
unchanged

IAC SB DET CHAR DELETE IAC SE subcommand code: 16

This subcommand deletes the character on the screen
the x-th position. The x-th character is removed and
characters x+1 through M-1 are shifted one
position to the left to become the x-th through M-2
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
position of the cursor to the sender

IAC SB DET CURSOR POSITION IAC
subcommand code: 18

where and are positive 8-bit binary integers

This subcommand is sent by a Telnet implementation
response to a READ CURSOR subcommand to convey
coordinates of the cursor to the other side. Note: x
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
tab position. If none exists on the present line,
cursor moves to the previous line and so on until a
is found or the address (0,0) is encountered. When
protection is in effect the cursor moves to the
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
characters on the screen from position (0,0)
(M-1,N-1). The cursor will be at (0,0) after
operation is complete



8

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


IAC SB DET TRANSMIT UNPROTECTED IAC
subcommand code: 21

This subcommand causes the terminal to transmit
characters in unprotected fields from position (0,0)
(M-1,N-1). The unprotected fields are separated by
field separator subcommand. The cursor will be at (0,0)
or at the beginning of the first unprotected field
the operation is complete

IAC SB DET TRANSMIT LINE IAC SE subcommand code: 22

This subcommand causes the terminal to transmit all
on the yth line where y is determined by the
position of the cursor. Data is sent from
position (0,y) to the end-of-line or position (M-1,y
whichever comes first. The cursor position after
transmission is one character position after the end
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
in the field presently occupied by the cursor.
cursor position after the operation is complete is
character position after the end of the field or, if
position is protected, at the beginning of the
unprotected field

IAC SB DET TRANSMIT REST OF SCREEN IAC
subcommand code: 24

This subcommand causes the terminal to transmit
characters on the screen from position (x,y) to (M-1,N-1)
or until the end of text. (x,y) is the current
position. The cursor position after the operation is
character position after the last text character,
(0,0) if the last filled character position is (M-1,N-1).

IAC SB DET TRANSMIT REST OF LINE IAC
subcommand code: 25

This subcommand causes the terminal to transmit
characters on the yth line from position (x,y) to the
of line or (M-1,y) whichever comes first. (x,y) is
current cursor position. The cursor position after
operation is one character position after the
character of the line or the first character of the
line


9

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731



IAC SB DET TRANSMIT REST OF FIELD IAC
subcommand code: 26

This subcommand causes the receiver to transmit the
of the characters in the field currently occupied by
cursor. The cursor position after the operation is
the beginning of the next field

IAC SB DET DATA TRANSMIT IAC
subcommand code: 27

This subcommand is used to preface data sent from
terminal in response to a user action or a
command. The parameters and indicate the
position of the cursor. See the Transmit
subsection in Section 5 for more details


E__r_a_s_e_F__u_n_c_t_i_o_n_

IAC SB DET ERASE SCREEN IAC SE subcommand code: 28

This subcommand causes all characters to be removed
the screen. All fields regardless of their
are deleted. The cursor position after the
will be (0,0). Most terminals set the erased
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
be removed from the screen, where y is the line of
current cursor position. All fields regardless of
attributes are deleted. The cursor position after
operation will be (0,y). Note: This operation can
easily simulated by the sequence: LINE DELETE,
INSERT. However, the order is important to insure
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
occupied by the cursor to be removed. The
position after the operation is at the beginning of
field

IAC SB DET ERASE REST OF SCREEN IAC
subcommand code: 31



10

John Day Data Entry Terminal
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
regardless of their attributes are deleted. The
position after the operation is unchanged. This
equivalent to doing an ERASE REST OF LINE plus a
DELETE for lines greater than y

IAC SB DET ERASE REST OF LINE IAC
subcommand code: 32

This subcommand causes all characters from position (x,y
to (M-1,y) to be removed from the screen All
regardless of their attributes are deleted. The
position after the operation is unchanged

IAC SB DET ERASE REST OF FIELD IAC
subcommand code: 33

This subcommand causes all characters from position (x,y
to the end of the current field to be removed from
screen. The cursor position after the operation
unchanged

IAC SB DET ERASE UNPROTECTED IAC
subcommand code: 34

This subcommand causes all characters on the screen
unprotected fields to be removed from the screen.
cursor position after the operation is at (0,0) or,
that position is protected, at the beginning of the
unprotected field

F__o_r_m_a_t_F__u_n_c_t_i_o_n_

IAC SB DET FORMAT DATA IAC
subcommand code: 35

where is an 8-bit byte containing
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
characters should have the Blinking


11

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


applied to it by the receiver

If the Reverse Video bit is set, the following field
characters should be displayed by the
with video reversed

If the Right Justification bit is set, the input
into the field of characters should be
justified

The Protection field is two bits wide and may take on
following values

0 no
1
2 alphabetic
3 numeric

The protection attribute specifies that the other
may modify any character (no protection), modify
characters (protected), enter only
characters (A-Z, and a-z) (alphabetic only), or
only numerical characters (0-9,+,.,and -) (numeric only
in the following field of bytes

The Intensity field is 3 bits wide and should
interpreted in the following way

The values 0-6 should be used as an indication of
relative brightness to be used when displaying
characters in or entered into the following field characters wide. The number of levels of
available should have been obtained previously by
Format Facility subcommand. The exact algorithm
mapping these values to the available levels of
is left to the implementors. A value of 7 in
intensity field indicates that the brightness should
off, and any characters in or entered into the
should not be displayed

is 2 bytes that should be interpreted as
positive 16-bit binary integer representing the number
characters following this command which are affected
it

Data sent to the terminal or the Using Host for
areas of the screen not in the scope of the count
be displayed with the default values of the format map
The default values are No Blinking, Normal Video,
Justification, No Protection and Normal Intensity


12

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731



This subcommand is used to format data to be displayed
the screen of the terminal. The
the attributes that the field bytes wide
have. This field is to start at the position of
cursor when the command is acted upon. The next displayable characters in the data stream are used
fill the field. Subsequent REPEAT subcommands may
used to specify the contents of this field. If
sender specifies attributes that have not been
upon by the use of the Format Facility subcommand,
Telnet process should send an Error Subcommand to
sender, but format the screen as if the bit had not
set

IAC SB DET REPEAT IAC
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
data being transferred to the terminal by
strings of identical characters as the character and
count. The repeated characters may be part of a
specifiedÆÆ

IAC SB DET SUPPRESS PROTECTION <negotiation> IAC
subcommand code: 37

where <negotiation> may have the values of the
option negotiation

251
252
253
254

This subcommand is used to suppress the field
in a non-destructive manner. Many data entry
provide the means by which protection may be turned
and off without modifying the contents of the screen
the terminal's memory. Thus, the protection may
turned off and back on without retransmitting the form
The default setting of the option is that protection
on, in other

IAC SB DET SUPPRESS PROTECTION WONT IAC
IAC SB DET SUPPRESS PROTECTION DONT IAC



13

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


Negotiation of this subcommand follows the same rules
negotiations of the Telnet options

IAC SB DET FIELD SEPARATOR IAC SE subcommand code: 38

It is necessary when transmitting only the
portion of the screen to provide a means for
the fields. Existing DET's use a variety of
characters such as Tab, Group Separator, Unit Separator
etc. In order to maintain transparency of the NVDET
subcommand is used to separate the fields. Clearly,
incurs rather high overhead. This overhead can
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_

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
the server. This subcommand describes such a facility
The values of the field are defined by the
and server. The option merely provides the means
transfer the information

IAC SB DET ERROR IAC
subcommand code: 40

where
is a byte containing the subcommand code
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
implementations to report errors they detect to
corresponding Telnet process. At this point it is
reiterating that the philosophy of this option is
when an error is detected it should be reported; however
the implementation should attempt its best effort
carry out the intent of the subcommand or data in error









14

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


3. Default and Minimal Implementation

D__e_f_a_u_l_

WON'T DET -- DON'T

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_

DET EDIT
DET ERASE
DET TRANSMIT
DET FORMAT
DET MOVE CURSOR DET
DET ERASE
DET TRANSMIT
DET FORMAT
DET ERROR
In the case of formatting the data, the
implementation should be able to support a low and
level of intensity and protection for all or
characters in a field. These functions, however, are
required

The minimal implementation also requires that the
Line Width and Output Page Size Telnet options
supported






















15

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


4.

The Telnet protocol was originally designed to provide
means for scroll-mode terminals, such as the
teletype, to communicate with processes through the network
This was suitable for the vast majority of terminals
users at that time. However, as use of the network
increased into other areas, especially areas where
network is considered to provide a production
for other work, the desires and requirements of the
community have changed. Therefore, it is necessary
consider supporting facilities that were not
supported. This Telnet option attempts to do that
applications that require data entry terminals

This option in effect defines the Network Virtual Data
Terminal. Although the description of this option is
long, this does not imply that the Telnet protocol is a
vehicle for this facility. Data Entry Terminals are
complex and varied in their abilities. This option
to support both the minimal set of useful functions that
either common to all or can be easily simulated and the
sophisticated functions supplied in some terminals

Unlike most real data entry terminals where the
functions are encoded into one or more characters of
native character set, this option performs all such
within the Telnet subnegotiation mechanism. This
programs that are intimately familiar with the kind
terminal they are communicating with to send commands
may not be supported by either the option or
implementation. In other words, it is possible to
in a "raw" or at least "rare" mode using as much of
option as necessary

Although many data entry terminals support a variety
peripheral devices such as printers, cassettes, etc. it
beyond the scope of this option to entertain
considerations. A separate option should be defined
handle this aspect of these devices












16

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


5.



G__e_n_e_r_a_l_N__o_t_e_

All implementations of this option are required to support
certain minimal set of the subcommands for this option
Section 3 contains a complete list of the subcommands
this minimal set. In keeping with the Telnet
philosophy that an implementation should not have to be
to parse commands it does not implement, every subcommand
this option is either in the minimal set or is covered
one of the facility subcommands. An implementation
"negotiate" with its correspondent for permission to
subcommands not in the minimal set before using them.
details of this negotiation process see the section below
facility subcommands

Most data entry terminals are used in a half duplex mode
(Although most DET's on the market can be used either
data entry terminals or as standard interactive terminals
we are only concerned here with their use as DET's.)
this option is used, it is suggested that the
Telnet options be refused: Echo, Remote
Transmission and Echoing, and Suppress Go-Ahead. However
this option could be used to support a simple full
CRT based application using the basic cursor
functions provided here. For these cases, one or more
the above list of options might be required. (Support
sophisticated interactive calligraphic applications
beyond the scope of this option and should be done
another option or the Network Graphics Protocol.)

In RFC 728, it was noted that a synch sequence can
undesired interactions between Telnet Control functions
the data stream. A synch sequence causes data but
control functions to be flushed. If a control
which has an effect on the data immediately following it
present in the data stream when a synch sequence occurs,
control function will have its effect not on the
data but on the data immediately following the Data Mark
The following DET subcommands are susceptible to
pitfall

CHAR
DATA
FORMAT

The undesired interactions are best avoided by the


17

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


of the synch sequence deleting these subcommandsÆ and
data associated with them before continuing to process
control functions. This implies that the Data Mark
not occur in the middle of the data associated with
subcommands

F__a_c_i_l_i_t_y_S__u_b_c_o_m_m_a_n_d_

These four subcommands are used by the User and
implementations to negotiate the subcommands and
of the terminal that may be utilized. This negotiation
be viewed as the terminal (User Host) indicating
facilities are provided and the Server Host (or
program) indicating what facilities are desired

W__h_e_n_S__e_n_t:_ A Server Telnet implementation using the
option must send a facility subcommand requesting the use
a particular subcommand or terminal attribute not in
minimal implementation before the first use of
subcommand or attribute. The User Telnet
should respond as quickly as possible with its reply
Neither the User nor Server are required to negotiate
subcommand at a time. Also, a Telnet
responding to a facility subcommand is not required to
permission only for that subcommand. It may send a
map indicating all facilities of that class which
supports. However, a Telnet implementation
facilities must send a facility subcommand before its
use of the subcommand regardless of whether
negotiations have indicated the facility is provided.
facility cannot be used until a corresponding
subcommand has been received. There are no
constraints on when the facility subcommands may be sent
In particular, it is not necessary for an application
know at the beginning of a session all facilities that
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
may be taken when a facility subcommand is
depending on whether the receiver is a requestor or
provider (User).

Requestor: When a facility subcommand is received by
requestor and it is in the state of Waiting for a Reply,
should go into the state of Not Waiting. It should
take the facility map it had sent and form the
intersection with the facility map received. (For
Intensity attribute, one should take the minimum of
number received and the number requested.) The
indicates the facilities successfully negotiated. Note:


18

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


the receiver is not in the Waiting for Reply state,
this is the provider case described next

Provider: When a facility subcommand is received,
should send a facility subcommand with a facility map of
facilities it provides as soon as possible. It should
determine what new facilities it is providing for
Requestor by forming the logical intersection of
facility map received and the one sent

Note: Although in most cases the requestor will be
Server Host and the provider will be the User
supporting the terminal, this distinction may not always
true

T__r_a_n_s_m_i_t_S__u_b_c_o_m_m_a_n_d_

There are two kinds of transmit subcommands: those used
request that data be sent to the requestor, and one
preface data sent to the requestor. The first kind
the requestor to control when, from where and to some
how much data is transmitted from the terminal.
explanation is straightforward and may be found in
2.

Data may be sent from the terminal as a result of
events: the user of the terminal caused the transmission
in response to a transmit subcommand. Some programs
wish to know from where on the screen the
began. (This is reasonable, since the terminal user
move the cursor around considerably before transmitting.)
Other programs may not need such information. The
TRANSMIT subcommand is provided in case this function
needed. When used this subcommand prefaces data coming
the terminal. The parameters and give the
coordinates of the beginning of the transmission.
be less than or equal to M-1 and must be less than
equal to N-1. It is assumed that all data between this
TRANSMIT and the next one starts at the coordinates
by the first subcommand and continues filling each
thereafter according to the constraints of the screen
the format effectors in the data. Thus an intelligent
sloppy user-host DET implementation (depending on your
of view) need only include a DATA TRANSMIT subcommand
the new starting point is different from the last
point


6. Sample



19

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


The nomenclature of RFC 726 will be used to describe this example.
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.
surrounded by angle brackets (<>) is to be taken as a single unit
E.g, carriage return is , and the decimal value 27
represented <27>.

We assume that the user has established the Telnet connection
logged on, and an application program has just been started
by the user directly or through a canned start up procedure.
presentation on the page is meant to merely group entities
and does not imply the position of message boundaries. One
assume that any part of the dialogue may be sent as one or
messages. The first action of the program or Telnet is
negotiate the DET option

S:
U:
S: [First negotiate the
size. In this case we
U: asking the user the size of
terminal. This could have
U:<25> done before the DET option
negotiated.]
S:<0>
S:
U:<80> [Defines the screen to be 25
lines by 80 characters
S:<0> The server may use
information when
the screen.]
S: [Now set the terminal attributes.]
<Protection, 3
Intensity>
U: <Protection, 3
Levels Intensity>
S: [Erase the screen


20

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731


start sending the form.]
<Protection=1, Intensity=1><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'
<Protection=1, Intensity=7> display what is typed into it.]
<0><11>
<32>
<5>
[Get permission to use
<0> Attribute.]

U: <Protection
3 Levels Intensity>
S: Protection=1,
Intensity=1><0><29>
Your SSN will not be printed



21

John Day Data Entry Terminal
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.
positions the cursor at the beginning of the first field (this
is done by hitting the tab key) and begins typing. We do not show
interaction since it does not generate any interaction with the
Telnet program or the network. After the terminal user has
filling in the form, he strikes the transmit key to send the
part of the form, but first the User Telnet program negotiates the
Macro Option to condense the Field Separator subcommand

U: [Negotiate Byte Macro Option.]

S: [Define decimal 166 to be
Field Separator
U: (see Appendix 3)]
<166><6> SEPARATOR IAC SE>
S:<166> [The server accepts the macro.]


U:TRANSMIT><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
June 27,1977 NIC 40652
RFC 731






Appendix 1 - Subcommands, opcodes and



1 EDIT FACILITIES 2 ERASE FACILITIES <Facility map
3 TRANSMIT FACILITIES <Facility map
4 FORMAT FACILITIES <Facility map 1> <Facility map 2>
5 MOVE CURSOR 6 SKIP TO LINE 7 SKIP TO CHAR 8
9
10
11
12
13 LINE
14 LINE
15 CHAR
16 CHAR
17 READ
18 CURSOR POSITION 19 REVERSE
20 TRANSMIT
21 TRANSMIT
22 TRANSMIT
23 TRANSMIT
24 TRANSMIT REST OF
25 TRANSMIT REST OF
26 TRANSMIT REST OF
27 DATA TRANSMIT 28 ERASE
29 ERASE
30 ERASE
31 ERASE REST OF
32 ERASE REST OF
33 ERASE REST OF
34 ERASE
35 FORMAT DATA 36 REPEAT 37 SUPPRESS PROTECTION <negotiation
38 FIELD
39 FN 40 ERROR



23

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731







Appendix 2 - Error



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
11 Unsupported combination of Format































24

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731








Appendix 3 - Use of the Byte Macro




One of the major drawbacks of the DET option is that because
functions are encoded as Telnet option subnegotiations a
high overhead is incurred. A function like Character Insert
is encoded as a single byte in most terminals requires six bytes
the DET option. Originally the only other solution that would
accomplished the same transparency that the use of
provides would have been to define additional Telnet
functions. However, since this would entail modification of
Telnet protocol itself, it was felt that this was not a
solution. Since then the Telnet Byte Macro Option (RFC 729)
been defined. This option allows the user and server Telnets
map an arbitrary character string into a single byte which is
transferred over the net. Thus the Byte Macro Option provides
means for implementations to avoid the overhead for heavily
subcommands. The rest of this appendix suggests how the Byte
Option should be applied to the DET option

In keeping with the specification of the Byte Macro Option,
bytes will be chosen from the range 128 to 239. For the
option, it is suggested that macro bytes be chosen by adding
subcommand code to 128. In addition, an unofficial DET
might be defined indicating that each side was willing to
macro bytes for all subcommands (but not necessarily support all
the subcommands themselves) according to this algorithm.
subcommand would be

IAC SB DET DET-MACRO <negotiation> IAC
subcommand code: 254

where <negotiation> may have the values of the Telnet
negotiation
251
252
253
254

This subcommand is sent by a Telnet implementation to indicate
willingness to adopt byte macros for all of the DET
according to the following algorithm


25

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731



The macro byte for subcommand i will be i+128 and will
the following string for parameterless subcommands

IAC SB DET <subcommand code> IAC

and the following string for subcommands with parameters

IAC SB DET <subcommand code

The default setting for this subcommand is that the macros
not in effect, in other words

IAC SB DET DET-MACRO WONT IAC
IAC SB DET DET-MACRO DONT IAC

Negotiation of this subcommand follows the same rules
negotiations of the Telnet options


































26

John Day Data Entry Terminal
June 27,1977 NIC 40652
RFC 731












1. ADM-1 Interactive Display Terminal Operator's
Lear-Siegler, Inc. 7410-31.

2. ADM-Interactive Display Terminal Operator's
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
and Interface Manual. Applied Digital Data Systems, Inc
98-3000.

11. How to Use the Consul 520: A Terminal Operator's
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
June 27,1977 NIC 40652
RFC 731


15. Postel, Jon and Crocker, David. "Remote
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







if you see any problems within the linking, don't worry be happy,
this is version 0.1 of the Relevance System and you gotta expect some crappy subroutines sometimes,
just be content we did not write this in Java, which would have made this "bigger and better" HAHAHHA.




RFC documents can be found at I.E.T.F.



Relevance System Copyright © 2002 Spectrum WorldResearch
other technical nosh by ServerMasters Corporation
collaboration of BobX







Spectrum