Groupe de travail Réseau	John Day	
Request for Comments : 732	12 September 1977	
NIC : 41762		
RFC rendue obsolète : 731	Traduction Claude Brière de L’Isle	

Option Telnet Terminal d’entrée de données

1.	Nom et code de la commande

DET	20

2.	Signification de la commande

IAC WILL DET
L’envoyeur de cette commande DEMANDE ou ACCEPTE d’envoyer et recevoir des sous commandes pour contrôler le terminal d’entrée de données.

IAC WONT DET
L’envoyeur de cette commande REFUSE d’envoyer et recevoir des sous commandes pour contrôler le terminal d’entrée de données.

IAC DO DET
L’envoyeur de cette commande DEMANDE ou ACCEPTE d’envoyer et recevoir des sous commandes pour contrôler le terminal d’entrée de données.

IAC DONT DET
L’envoyeur de cette commande REFUSE d’envoyer et recevoir des sous commandes pour contrôler le terminal d’entrée de données.

L’option DET utilise cinq classes de sous commandes :
1)	pour établir les exigences et capacités de l’application et du terminal,
2)	pour formater l’écran,
3)	pour contrôler l’édition,
4)	pour les fonctions de suppression,
5)	pour les fonctions de transmission.
Les sous commandes qui effectuent ces fonctions sont décrites ci-dessous.

2.1	Terminal réseau virtuel d’entrée de données

Le terminal réseau virtuel d’entrée de données (NVDET, Network Virtual Data Entry Terminal) consiste en un clavier et un affichage rectangulaire. Le clavier est capable de générer tous les caractères du jeu de caractères ASCII. De plus, le clavier peut posséder un certain nombre de clés de fonctions qui causent l’envoi d’une sous commande Numéro de fonction (FN, Function Number) lorsque elles sont pressées.
(Bien que la plupart des DET prennent en charge un ou plusieurs appareils périphériques tels qu’un lecteur de bande ou une imprimante, cette option ne prend pas en compte leur prise en charge. La prise en charge des appareils périphériques devrait être traitée par une option distincte).
L’écran du terminal d’entrée des données est un rectangle de M caractères sur N lignes. Les valeurs de M et N sont réglées par la négociation des options, respectivement, Largeur de ligne de sortie (Output Line Width) et Taille de page de sortie (Output Page Size). La prochaine position (x,y) d’écriture sur l’écran (où x est la position du caractère et y est la position de la ligne sur l’écran) est indiquée par un caractère d’affichage spécial appelé le curseur. Le curseur peut être déplacé dans toute position sur l’écran sans déranger aucun caractère figurant déjà sur l’écran. L’adressage du curseur dans les terminaux existants utilise plusieurs topologies et méthodes d’adressage. Afin d’alléger autant que possible la charge de la mise en œuvre, le présent protocole prend en charge deux topologies (le plan fini et les tores hélicoïdaux) et trois méthodes d’adressage ((x,y) ; x et y, et les incréments relatifs). Comme le plan fini avec adressage absolu est le moins ambigu et le plus facile à traduire de et vers les autres, il est le schéma par défaut utilisé par le NVDET. La forme toroïdale avec adressage relatif ou absolu est fournie en plus pour des raisons pratiques.

Le NVDET fournit un mécanisme pour définir des attributs spéciaux sur les champs d’écran. Par exemple, les caractères entrés dans ces champs peuvent être affichés avec plus d’intensité, soulignés par un clignotement ou une visualisation inversée, ou protégés contre la modification par l’usager. Cette dernière caractéristique est une des plus largement utilisées par les applications où le DET affiche un formulaire que l’usager doit remplir.

La définition du NVDET utilise des sous négociations d’option Telnet pour réaliser toutes ses fonctions. Comme aucun des caractères ASCII envoyés dans le flux de données n’a été utilisé pour définir ces fonctions, l’option DET peut être utilisée dans un mode "brut" ou même "rare". Dans des circonstances où le programme d’application sait quelle sorte de terminal se trouve à l’autre extrémité, il peut envoyer les caractères ASCII requis pour les fonctions de contrôle non prises en charge par l’option ou par une mise en œuvre. En général, garder toutes les fonctions NVDET en dehors du flux de données donne une plus grande souplesse.

2.2	Fonctions de facilités

(Voir le détail de la sémantique à la Section 5.)

IAC SB DET <sous commande de facilité de DET><carte de facilités> IAC SE

où <sous commande de facilité de DET> est un octet de 8 bits indiquant la classe des facilités à décrire, et <carte de facilités> est un champ de un ou deux octets contenant des fanions qui décrivent les facilités requises ou désirées par l’envoyeur. Les bits des cartes de facilités sont numérotés à partir de la droite en commençant à zéro. Donc, si le bit 2 est établi (à 1), le champ aura une valeur décimale de 4. Les valeurs du champ sont les suivantes :

Commande de facilité : FACILITÉS D’ÉDITION	code de sous commande : 1

carte de facilités :	numéros de bit
Adressage du curseur toroïdal	6
Adressage du curseur incrémentaire 	5
Adresse du curseur de lecture	4
Insertion/suppression de ligne	3
Insertion/suppression de caractère	2
Tabulation arrière	1
Adressage positif seul	0

où :
-	Si le bit d’adressage du curseur toroïdal est établi, l’envoyeur demande ou assure que les sous commandes SKIP TO LINE et SKIP TO CHAR sont prises en charge.
-	Si le bit d’adressage du curseur incrémentaire est établi, l’envoyeur demande ou assure que les sous commandes HAUT, BAS, GAUCHE, et DROITE sont prises en charge.
-	Si le bit de curseur de lecture est établi, l’envoyeur demande ou assure la prise en charge de la sous commande CURSEUR DE LECTURE.
-	Si le bit Insertion/suppression de ligne est établi, l’envoyeur demande ou assure que les sous commandes INSERTION DE LIGNE et SUPPRESSION DE LIGNE sont prises en charge.
-	Si le bit Insertion/suppression de caractère est établi, l’envoyeur demande ou assure que les sous commandes INSERTION DE CARACTÈRE et SUPPRESSION DE CARACTÈRE sont prises en charge.
-	Si le bit Tabulation arrière est établi, l’envoyeur demande ou assure que la sous commande TABULATION ARRIÈRE est prise en charge.
-	Si le bit Adressage positif est établi, l’envoyeur informe alors le receveur qu’il peut seulement déplacer le curseur dans la direction positive. (Note : Les terminaux qui ont cette propriété ont aussi une fonction Début pour revenir au début.)

Commande de facilité : FACILITÉS D’ÉCASEMENT	code de sous commande : 2

carte de facilités :	numéros de bit
Écraser le champ	4
Écraser la ligne	3
Écraser le reste de l’écran	2
Écraser le reste de la ligne	1
Écraser le reste du champ	0

où :
-	Si un bit de la carte des facilités est établi pour cette commande de facilité, l’envoyeur demande ou assure la facilité indiquée par le bit. Pour une description plus complète de chacune de ces fonctions, voir les fonctions d’écrasement au paragraphe 2.5.

Commande de facilité : FACILITÉS DE TRANSMISSION	code de sous commande 3

carte de facilités :	numéros de bit
Transmet les données	5
Transmet la ligne	4
Transmet le champ	3
Transmet le reste de l’écran	2
Transmet le reste de la ligne	1
Transmet le reste du champ	0

où :
-	Si un bit de la carte de facilités pour cette commande de facilités est établi, l’envoyeur demande ou assure la facilité indiquée par le bit. Pour une description plus complète de chacune de ces fonctions, voir les fonctions de transmission au paragraphe 2.4.

Commande de facilité :  FACILITÉS DE FORMAT	code de sous commande 4

carte de facilités :	numéros de bit
FN	octet 0	7
Modifié	6
Trait fin	5
Répéter	4
Clignotement	3
Vision inverse	2
Justification à droite	1
Surimpression	0
Protection Ouvert/fermé	octet 1	6
Protection	5
Protection alphabétique seul	4
Protection numérique seul	3
Intensité	0-2

où :
-	Si le bit FN est établi, l’envoyeur demande ou assure la sous commande FN.
-	Si le bit Modifié est établi, l’envoyeur demande ou assure la capacité à indiquer les champs qui sont modifiés et prend en charge la sous commande TRANSMISSION MODIFIÉE.
-	Si le bit Trait fin est établi, l’envoyeur demande ou assure la prise en charge d’un trait fin, incluant l’attribut Choix de trait de la sous commande FORMAT DE DONNÉES.
-	Si le bit Répéter est établi, l’envoyeur demande ou assure la sous commande RÉPÉTER.
-	Si le bit Clignotant est établi, l’envoyeur demande ou assure la capacité à souligner une chaîne de caractères en les faisant clignoter.
-	Si le bit Vision inverse est établi, l’envoyeur demande ou assure la capacité à souligner une chaîne de caractères en "inversant l’image vidéo", c’est-à-dire, si les caractères sont affichés normalement en noir sur fond blanc, ceci est inversé en caractères blancs sur fond noir, ou vice versa.
-	Si le bit Justification à droite est établi, l’envoyeur demande ou assure la capacité à faire que les entrées de données soient justifiées à droite dans le champ.
-	Si le bit Surimpression est établi, l’envoyeur demande ou assure la capacité à surimposer un caractère au dessus d’un autre sur l’écran un peu comme ferait un terminal d’impression si le mécanisme d’impression frappait sur la même position sur le papier avec différents caractères.
-	Si le bit Protection Ouvert/fermé est établi, l’envoyeur demande ou assure la capacité à établir et désactiver la protection de champ.
-	Si le bit Protection est établi, l’envoyeur demande ou assure la capacité à protéger certaines chaînes de caractères affichés à l’écran contre l’altération par l’utilisateur du terminal. Établir ce bit implique aussi que les sous commandes NON PROTÉGÉ CONTRE LA SUPPRESSION, TRANSMISSION DES DONNÉES, SÉPARATEUR DE CHAMP, et TRANSMETTRE LES NON PROTÉGÉS (voir plus loin) sont prises en charge.
-	Si le bit Protection alphabétique seul est établi, l’envoyeur demande ou assure la capacité à contraindre l’usager du terminal de telle façon qu’il ne puisse entrer que des données alphabétiques dans certaines zones de l’écran.
-	Si le bit Protection seulement numérique est établi, l’envoyeur demande ou assure la capacité à contraindre l’usager du terminal à ne pouvoir entrer que des données numériques dans certaines zones de l’écran.

Les trois bits du champ Intensité vont contenir un entier positif binaire qui indique le nombre de niveaux d’intensité que demande ou assure l’envoyeur pour l’affichage des données. La valeur du champ de 3 bits devrait être interprétée de la façon suivante :
1	une intensité visible
2	deux intensités ; normal et brillant
3	trois intensités ; sombre, normal, et brillant
>3	plus de 3 intensités ; sombre, et les niveaux restants proportionnés du plus sombre à l’intensité la plus brillante.

Pour toutes les commandes ci-dessus, si le bit approprié dans <carte des facilités> est à zéro, l’envoyeur ne demande ou n’assure pas cette facilité.

2.3	Fonctions d’édition

IAC SB DET MOVE CURSOR <x><y> IAC SE	code de sous commande : 5
où <x> est un octet de 8 bits qui contient un entier binaire positif qui représente la position en caractères du curseur, <y> est un octet de 8 bits contenant un entier binaire positif qui représente la position de ligne du curseur.
Cette sous commande déplace le curseur à l’adresse d’écran absolu (x,y) avec les conditions de limite suivantes :
si x > M-1, régler x = M-1 et envoyer une sous commande ERREUR
si y > N-1, régler y = N-1 et envoyer une sous commande ERREUR
Cela décrit une topologie de plan fini sur l’écran.

IAC SB DET SKIP TO LINE <y> IAC SE	code de sous commande : 6
où <y> est un nombre binaire positif de 8 bits.
Cette sous commande déplace le curseur à la ligne d’écran absolu y. x reste constant. 
Pour les valeurs de y > N-1, y = y mod N.

IAC SB DET SKIP TO CHAR <x> IAC SE	code de sous commande : 7
où <x> est un nombre binaire positif de 8 bits.
Cette sous commande déplace le curseur à la position de caractère absolue x. y reste constant, sauf si x > M-1 auquel cas :
x' = (x mod M)
y' = (y + (x DIV N))
où x' et y' sont les nouvelles valeurs du curseur.

Ces deux dernières sous commandes définissent une topologie toroïdale sur l’écran.

IAC SB DET UP IAC SE	code de sous commande : 8
IAC SB DET DOWN IAC SE	code de sous commande : 9
IAC SB DET LEFT IAC SE	code de sous commande : 10
IAC SB DET RIGHT IAC SE	code de sous commande : 11
Ces sous commandes sont fournies comme facilité pour certains terminaux. Les commandes UP (vers le haut) DOWN (vers le bas) LEFT (vers la gauche) et RIGHT (vers la droite) sont définies comme  :
UP :	(x, y) = (x, y - 1 mod N)
DOWN :	(x, y) = (x, y + 1 mod N)
LEFT :	(x, y) = (x - 1, y) ; si x = 0 puis x - 1 = 0
RIGHT :	(x, y) = (x + 1 mod M, y) et y = y + 1 si x + 1 > M - 1

Note : DOWN, LEFT, et RIGHT ne peuvent pas toujours être remplacées par les codes ASCII pour respectivement le saut à la ligne, l’espace arrière et l’espace. Ces derniers sont des opérateurs de format alors que les premiers sont des commandes du curseur.

IAC SB DET HOME IAC SE	code de sous commande : 12
Cette sous commande positionne le curseur à (0,0). Ceci est équivalent à un MOVE CURSOR 0,0 ou à la séquence SKIP TO LINE 0, SKIP TO CHAR 0.

Cette sous commande est fournie comme facilité, car la plupart des terminaux l’ont comme commande distincte.

IAC SB DET LINE INSERT IAC SE	code de sous commande : 13
Cette sous commande insère une ligne d’espaces entre les lignes y (la ligne en cours, déterminée par la position du curseur) et la ligne y - 1. Les lignes y à N - 2 se déplacent d’une ligne, c’est-à-dire, la ligne y devient la ligne y + 1 ; y + 1 devient y + 2, ... ; N - 2 devient N - 1. La ligne N - 1 est perdue au delà du bas de l’écran. La position du curseur reste inchangée.

IAC SB DET LINE DELETE IAC SE	code de sous commande : 14
Cette sous commande supprime la ligne y où y est la position de la ligne actuelle du curseur. Les lignes y + 1 à N-1 montent d’une ligne, c’est-à-dire que la ligne y + 1 devient la ligne y ; y + 2 devient y + 1 ; ... ; N-1 devient N-2. La position de ligne N-1 est mise toute en espaces. La position du curseur reste inchangée.

IAC SB DET CHAR INSERT IAC SE	code de sous commande : 15
Cette sous commande insère le prochain caractère du flux de données entre le xème et le x-1ème caractère, où x est la position de caractère courante du curseur. Les caractères du xème au M-2ème sur la ligne sont glissés d’une position de caractère vers la droite. Le nouveau caractère est inséré à la xème position vacante. Le caractère M-1 est perdu. La position du curseur reste inchangée.

IAC SB DET CHAR DELETE IAC SE	code de sous commande : 16
Cette sous commande supprime sur l’écran le caractère à la xème position. Le xème caractère est supprimé et les caractères x+1 à M-1 sont glissés d’une position de caractère vers la gauche pour devenir les caractères de x à M-2. La position de caractère M-1 est laissée vide. (Pour la plupart des terminaux, elle sera réglée à NUL ou espace.) La position du curseur reste inchangée.

IAC SB DET READ CURSOR IAC SE	code de sous commande : 17
Cette sous commande demande au receveur d’envoyer la position présente du curseur à l’envoyeur.

IAC SB DET CURSOR POSITION <x><y> IAC SE	code de sous commande : 18
où <x> et <y> sont des entiers binaires positifs de 8 bits.
Cette sous commande est envoyée par une mise en œuvre Telnet en réponse à une sous commande READ CURSOR pour convoyer les coordonnées du curseur à l’autre côté. Noter que x est inférieur à M et y est inférieur à N.
IAC SB DET REVERSE TAB IAC SE	code de sous commande : 19
Cette sous commande cause le déplacement du curseur à la précédente position de tabulation. Si il n’en existe pas sur la présente ligne, le curseur se déplace à la ligne précédente et ainsi de suite jusqu’à ce qu’une tabulation soit trouvée ou qu’on rencontre l’adresse (0,0). Lorsque la protection de champ est activée, le curseur se déplace au début du champ non protégé précédant.

2.4	Fonctions de transmission

(Voir le détail de la sémantique à la Section 5.)

IAC SB DET TRANSMIT SCREEN IAC SE	code de sous commande : 20
Cette sous commande cause la transmission par le terminal de tous les caractères de l’écran de la position (0,0) à 
(M-1,N-1). Le curseur sera à (0,0) après l’achèvement de l’opération.

IAC SB DET TRANSMIT UNPROTECTED IAC SE	code de sous commande : 21
Cette sous commande cause la transmission par le terminal de tous les caractères dans les champs non protégés de la position (0,0) à (M-1,N-1). Les champs non protégés sont séparés par la sous commande de séparateur de champ. Le curseur sera à (0,0) ou au début du premier champ non protégé après l’achèvement de l’opération.

IAC SB DET TRANSMIT LINE IAC SE	code de sous commande : 22
Cette sous commande cause la transmission par le terminal de toutes les données sur la ligne y où y est déterminé par la présente position du curseur. Les données sont envoyées à partir de la position de caractère (0,y) jusqu’à la fin de ligne ou à la position (M-1,y) selon ce qui vient en premier. La position du curseur après la transmission est une position de caractère après la condition de fin de ligne ou le début de la ligne suivante, (0,y+1).

IAC SB DET TRANSMIT FIELD IAC SE	code de sous commande : 23
Cette sous commande cause la transmission par le terminal de toutes les données dans le champ présentement occupé par le curseur. La position du curseur après l’achèvement de l’opération est une position de caractère après le champ ou, si cette position est protégée, au début du prochain champ non protégé.

IAC SB DET TRANSMIT REST OF SCREEN IAC SE	code de sous commande : 24
Cette sous commande cause la transmission par le terminal de tous les caractères sur l’écran depuis la position (x,y) jusqu’à (M-1,N-1) ou jusqu’à la fin du texte. (x,y) est la position actuelle du curseur. La position du curseur après l’opération est une position de caractère après le dernier caractère du texte, ou (0,0) si la dernière position de caractère remplie est 
(M-1,N-1).

IAC SB DET TRANSMIT REST OF LINE IAC SE	code de sous commande : 25
Cette sous commande cause la transmission par le terminal de tous les caractères sur la yème ligne à partir de la position (x,y) jusqu’à la fin de la ligne ou (M-1,y) selon ce qui vient en premier. (x,y) est la position actuelle du curseur. La position du curseur après l’opération est une position de caractère après le dernier caractère de la ligne ou le premier caractère de la prochaine ligne.

IAC SB DET TRANSMIT REST OF FIELD IAC SE	code de sous commande : 26
Cette sous commande cause la transmission par le receveur du reste des caractères dans le champ actuellement occupé par le curseur. La position du curseur après l’opération est au début du prochain champ.

IAC SB DET TRANSMIT MODIFIED IAC SE	code de sous commande : 27
Cette sous commande cause la transmission par le receveur des seuls champs qui ont établi l’attribut modifié. La position du curseur après l’opération est inchangée.

IAC SB DET DATA TRANSMIT <x><y> IAC SE	code de sous commande : 28
Cette sous commande est utilisée pour préfacer les données envoyées du terminal en réponse à une action de l’usager ou à une commande TRANSMIT. Les paramètres <x> et <y> indiquent la position initiale du curseur. Voir la sous commande Transmit à la Section 5 pour les détails. Une sous commande DATA TRANSMIT peut précéder une transmission entière dont chaque champ est délimité par la sous commande FIELD SEPARATOR comme ce serait le cas en réponse à un TRANSMIT UNPROTECTED. Ou, il peut précéder chaque champ, comme se serait le cas en réponse à un TRANSMIT MODIFIED.

2.5	Fonctions de suppression

IAC SB DET ERASE SCREEN IAC SE	code de sous commande : 29
Cette sous commande cause la suppression de tous les caractères de l’écran. Tous les champs, sans considération de leurs attributs, sont supprimés. La position du curseur après l’opération sera (0,0). La plupart des terminaux règlent les caractères supprimés à NUL ou à espace.

IAC SB DET ERASE LINE IAC SE	code de sous commande : 30
Cette sous commande cause la suppression de l’écran de tous les caractères de la yème ligne, où y est la ligne de la position actuelle du curseur. Tous les champs sont supprimés sans considération de leurs attributs. La position du curseur après cette opération sera (0,y). Noter que cette opération peut être aisément simulée par la séquence LINE DELETE, LINE INSERT. Cependant, l’ordre est important pour assurer qu’aucune données ne sont perdues au bas de l’écran.

IAC SB DET ERASE FIELD IAC SE	code de sous commande : 31
Cette sous commande cause la suppression de tous les caractères dans le champ occupé par le curseur. La position du curseur après l’opération est au début du champ.

IAC SB DET ERASE REST OF SCREEN IAC SE	code de sous commande : 32
Cette sous commande cause la suppression de l’écran de tous les caractères de la position (x,y) à (M-1,N-1). Tous les champs sont supprimés, sans considération de leurs attributs. La position du curseur après l’opération est inchangée. Ceci est équivalent à faire un ERASE REST OF LINE plus un LINE DELETE pour les lignes supérieures à y.

IAC SB DET ERASE REST OF LINE IAC SE	code de sous commande : 33
Cette sous commande cause la suppression de l’écran de tous les caractères de la position (x,y) à (M-1,y). Tous les champs sont supprimés, sans considération de leurs attributs. La position du curseur après l’opération est inchangée.

IAC SB DET ERASE REST OF FIELD IAC SE	code de sous commande : 34
Cette sous commande cause la suppression de l’écran de tous les caractères de la position (x,y) à la fin du champ en cours. La position du curseur après l’opération est inchangée.

IAC SB DET ERASE UNPROTECTED IAC SE	code de sous commande : 35
Cette sous commande cause la suppression de l’écran de tous les caractères de l’écran dans les champs non protégés. La position du curseur après l’opération est à (0,0) ou, si cette position est protégée, au début du premier champ non protégé.

2.6	Fonctions de format 

IAC SB DET FORMAT DATA <carte de format><compte> IAC SE	code de sous commande : 36
où <carte de format> est un champ de deux octets contenant les fanions suivants :
Octet 0
Clignotement	7
Vision inverse	6
Justification à droite	5
Protection	3-4
Intensité	0-2
Octet 1
Modifié	1
Choix de trait	0

où :
Si le bit Clignotement est établi, le champ suivant de caractères <compte> devrait avoir l’attribut Clignotement qui lui est appliqué par le receveur.

Si le bit Vision inverse est établi, le champ suivant de caractère <compte> devrait être affiché par le receveur avec vision inversée.

Si le bit Justification à droite est établi, les entrées du champ de caractères <compte> devraient être justifiées à droite.

Le champ Protection est de deux bits et peut prendre les valeurs suivantes :
0	pas de protection
1	protégé
2	alphabétique seul
3	numérique seul

L’attribut Protection spécifie que l’autre côté peut modifier tout caractère (pas de protection), ne modifier aucun caractère (protégé), entrer seulement des caractères alphabétiques (A-Z, et a-z) (alphabétique seul), ou n’entrer que des caractères numériques (0-9, +, ., et -) (numérique seul) dans le champ suivant de <compte> octets.

Le champ Intensité fait trois bits et devrait être interprété de la façon suivante :
Les valeurs de 0 à 6 devraient être utilisées comme indication de la brillance relative à utiliser lors de l’affichage ou l’entrée des caractères dans le champ <compte> suivant. Le nombre de niveaux de brillance disponibles devrait avoir été obtenu préalablement par la sous commande de facilité de format. L’algorithme exact pour transposer ces valeurs dans les niveaux disponibles d’intensité relève des mises en œuvre. Une valeur de 7 dans le champ Intensité indique que la brillance devrait être désactivée, et tout caractère dans le champ ou entrée dans le champ devrait n’être pas affiché.

Si le bit Modifié est établi, le champ est considéré comme ayant été modifié et sera transmis en réponse à une sous commande TRANSMIT MODIFIED.

Si le bit Choix de trait est établi, le champ peut être choisi avec le crayon fin (light pen). Note : L’utilisation du crayon fin devrait faire l’objet d’une autre option Telnet.

<compte> est de deux octets qui devraient être interprétés comme un entier positif binaire de 16 bits qui représente le nombre de caractères qui suivent cette commande et qui sont affectés par elle.

Les données envoyées au terminal ou à l’hôte utilisateur pour les zones non écrites de l’écran qui ne sont pas dans la portée du compte devraient être affichées avec les valeurs par défaut de la carte de format. Les valeurs par défaut sont Pas de clignotement, Vision normale, Pas de justification, Pas de protection, et Intensité normale. Par exemple, supposons qu’une sous commande FORMAT DATA a été envoyée au terminal avec les attributs Clignotement et Protégé et un compte de 5 suivi par la chaîne "Nom : John Doe". La chaîne "Nom :" sera protégée et clignotante, mais la chaîne "John Doe" ne le sera pas.

Cette sous commande est utilisée pour formater les données à afficher sur l’écran du terminal. La <carte de format> décrit les attributs que devrait avoir le champ <compte> en nombre d’octets. Ce champ va débuter à la position du curseur lorsque on agit sur la commande. Les caractères <compte> affichables suivants dans le flux de données sont utilisés pour remplir le champ. Des sous commandes REPEAT ultérieures peuvent être utilisées pour spécifier le contenu de ce champ. Si l’envoyeur spécifie des attributs sur lesquels il n’y a pas eu d’accord par l’utilisation de la sous commande Facilité de format, le processus Telnet devrait envoyer une sous commande Erreur à l’envoyeur, mais formater l’écran comme si le bit n’avait pas été établi.

IAC SB DET REPEAT <compte><caract> IAC SE	code de sous commande : 37
où <compte> est un entier binaire positif de 8 bits. <caract> est un octet qui contient un caractère ASCII.
Cette sous commande est utilisée pour effectuer la compression de données sur les données qui sont transférées au terminal en codant les chaînes de caractères identiques comme le caractère et un compte. Le caractère répété peut faire partie d’un champ spécifié.

IAC SB DET SUPPRESS PROTECTION <négociation> IAC SE	code de sous commande : 38
où <négociation> peut avoir les valeurs de la négociation d’option Telnet :
251	WILL
252	WONT
253	DO
254	DONT
Cette sous commande est utilisée pour supprimer la protection de champ d’une façon non destructive. De nombreux terminaux d’entrée de données fournissent les moyens par lesquels la protection peut être activée et désactivée sans modifier le contenu de l’écran ou la mémoire du terminal. Donc, la protection peut être activée/désactivée sans retransmettre le formulaire.

Le réglage par défaut de l’option est la protection activée, en d’autres termes  :
IAC SB DET SUPPRESS PROTECTION WONT IAC SE
IAC SB DET SUPPRESS PROTECTION DONT IAC SE
La négociation de cette sous commande suit les mêmes règles que les négociations des options Telnet.

IAC SB DET FIELD SEPARATOR IAC SE	code de sous commande : 39
Cette sous commande est nécessaire lorsque on transmet seulement la portion non protégée de l’écran pour donner un moyen de délimitation des champs. Les DET existants utilisent divers caractères ASCII tels que Tabulation, Séparateur de groupe, Séparateur d’unité, etc. Afin de conserver la transparence du NVDET, cette sous commande est utilisée pour séparer les champs. Il est clair que cela entraîne une assez forte redondance. Celle–ci peut être évitée en utilisant l’option Macro octet (voir l’Appendice 3).

2.7	Commandes diverses

IAC SB DET FN <code> IAC SE	code de sous commande : 40
où : <code> est un octet.
De nombreux terminaux d’entrée de données fournissent un ensemble de clés de "fonction" qui lorsque elles ont pressées envoient une commande d’un caractère au serveur. Cette sous commande décrit une telle facilité. Les valeurs du champ <code> sont définies par l’usager et le serveur. L’option fournit simplement le moyen de transférer l’information.

IAC SB DET ERROR <cmd> <code d'erreur> IAC SE	code de sous commande : 41
où :
<cmd> est un octet contenant le code de sous commande de la sous commande erronée.
<code d’erreur> est un octet contenant un code d’erreur. (Voir à l’Appendice 2 la liste des codes d’erreur définis.)
Cette sous commande est fournie pour permettre aux mises en œuvre de l’option DET de faire rapport au processus Telnet correspondant des erreurs qu’elles détectent. Il est utile de répéter à ce point que la philosophie de cette option est que lorsque une erreur est détectée, elle devrait être rapportée  ; cependant, la mise en œuvre devrait tenter tout son possible pour mener à bien les intentions de la sous commande ou des données erronées.

3.	Spécifications de mise en œuvre par défaut et minimale
3.1	Par défaut

WON'T DET -- DON'T DET

Aucun des hôtes ne souhaite utiliser l’option Terminal d’entrée de données.

3.2	Mise en œuvre minimale

DET EDIT FACILITIES
DET ERASE FACILITIES
DET TRANSMIT FACILITIES
DET FORMAT FACILITIES
DET MOVE CURSOR <x><y>
DET HOME
DET ERASE SCREEN
DET TRANSMIT SCREEN
DET FORMAT DATA
DET ERROR <cmd> <code d’erreur>

Dans le cas de formatage des données, la mise en œuvre minimale devrait être capable de prendre en charge un niveau bas et un niveau élevé d’intensité et de protection pour tous les caractères d’un champ, ou aucun. Ces fonctions ne sont cependant pas exigées.

La mise en œuvre minimale exige aussi que les options Telnet Largeur de ligne de sortie et Taille de page de sortie soient prises en charge.

4.	Motivation

Le protocole Telnet a été conçu à l’origine pour fournir un moyen aux terminaux en mode déroulement, tels que le télétype standard, pour communiquer avec les processus à travers le réseau. Cela convenait à ce moment là pour la grande majorité des terminaux et utilisateurs. Cependant, comme l’utilisation du réseau a augmenté dans d’autres domaines, en particulier dans des zones où le réseau est considéré fournir un environnement de production pour d’autres travaux, les désirs et exigences de la communauté des utilisateurs ont changé. Donc, il est nécessaire d’envisager de prendre en charge des facilités qui ne l’étaient pas initialement. Cette option Telnet tente de le faire pour les applications qui requièrent des terminaux d’entrée de données.

Cette option définit en effet le terminal d’entrée de données de réseau virtuel. Bien que la description de cette option soit assez longue, cela n’implique pas que le protocole Telnet soit un mauvais véhicule pour cette facilité. Les terminaux d’entrée de données sont assez complexes et variés dans leurs capacités. Cette option tente de prendre en charge à la fois l’ensemble minimal de fonctions utiles qui sont communes à tous ou qui peuvent être aisément simulées et les fonctions plus sophistiquées fournies par certains terminaux.

À la différence de la plupart des terminaux d’entrée de données réels où les fonctions du terminal sont codées sur un ou plusieurs caractères de l’ensemble natif de caractères, cette option effectue tous ces contrôles au sein du mécanisme de sous négociation Telnet. Cela permet aux programmes qui sont intimement familiers avec les communications avec ce type de terminaux pour envoyer des commandes qui peuvent n’être pas prises en charge soit par l’option, soit par la mise en œuvre. En d’autres termes, il est possible de fonctionner dans un mode "brut" ou au moins "rare" en utilisant autant que nécessaire de l’option.

Bien que de nombreux terminaux d’entrée de données prennent en charge divers appareils périphériques tels que des imprimantes, des cassettes, etc., il sort du domaine d’application de la présente option de rentrer dans de telles considérations. Une autre option devrait être définie pour traiter des aspects de ces appareils.

5.	Description
5.1	Notes générales

Il est exigé de toutes les mises en œuvre de la présente option qu’elles prennent en charge un certain ensemble minimal des sous commandes pour cette option. La Section 3 contient une liste complète des sous commandes de cet ensemble minimal. En conservant la philosophie du protocole Telnet qui veut qu’une mise en œuvre ne devrait pas avoir à être capable d’analyser des commandes qu’elle ne met pas en œuvre, chaque sous commande de cette option est soit dans l’ensemble minimal, soit est couverte par une des sous commandes de facilité. Une mise en œuvre doit "négocier" avec son correspondant la permission d’utiliser des sous commandes qui ne sont pas dans l’ensemble minimal avant de les utiliser. Voir les détails de ce processus de négociation dans le paragraphe 5.2 sur les sous commandes de facilités.

La plupart des terminaux d’entrées de données sont utilisés en mode unidirectionnel. (Bien que la plupart des DET sur le marché puissent être utilisés aussi bien comme terminaux d’entrée de données que comme terminaux interactifs standard, on est ici seulement concerné par leur utilisation comme DET.) Lorsque cette option est utilisée, il est suggéré que les options Telnet suivantes soient refusées  : Écho, Transmission contrôlée à distance et écho, et Suppression vers l’avant. Cependant, cette option pourrait être utilisée pour prendre en charge une simple application fondée sur un CRT bidirectionnel en utilisant les fonctions de contrôle de base par curseur fournies ici. Pour ces cas, une ou plusieurs des listes d’options ci-dessus pourraient être requises. (La prise en charge d’applications calligraphiques interactives sophistiquées sort du domaine d’application de cette option et devrait être faite par une autre option ou par le protocole Network Graphics.)

Dans la RFC728, il était noté qu’une séquence synchronisée peut causer des interactions indésirables entre les fonctions de contrôle Telnet et le flux de données. Une séquence synchronisée cause la purge des données mais pas des fonctions de contrôle. Si une fonction de contrôle qui a un effet sur les données qui la suivent immédiatement est présente dans le flux de données lorsque survient une séquence synchronisée, la fonction de contrôle va exercer son effet non sur les données visées mais sur celles qui suivent immédiatement la marque de données. Les sous commandes de DET suivantes sont susceptibles de se prêter à ce biais :
CHAR INSERT
DATA TRANSMIT
FORMAT DATA

Le mieux pour éviter ces interactions indésirables est que le receveur de la séquence de synchronisation supprime ces sous commandes et toutes les données qui leur sont associées avant de continuer le traitement de ces fonctions de contrôle. Cela implique que la marque de données ne devrait pas survenir au milieu des données associées à ces sous commandes.

5.2	Sous-commandes de facilités

Ces quatre sous commandes sont utilisées par les mises en œuvre d’utilisateur et de serveur pour négocier les sous commandes et attributs du terminal qui peuvent être utilisées. Cette négociation peut être vue comme si le terminal (hôte utilisateur) indiquait quelles facilités sont fournies et si l’hôte serveur (ou le programme d’application) indiquait quelles facilités sont désirées.

Quand envoyer : une mise en œuvre de serveur Telnet qui utilise l’option DET doit envoyer une sous commande de facilité demandant l’utilisation d’une sous commande particulière ou d’un attribut de terminal qui n’est pas une mise en œuvre minimale avant la première utilisation de cette sous commande ou attribut. La mise en œuvre d’utilisateur Telnet devrait répondre aussi vite que possible. Ni le serveur ni l’utilisateur ne sont obligés de négocier une sous commande à un moment donné. Aussi, une mise en œuvre Telnet qui répond à une sous commande de facilité n’est pas obligée de donner sa permission pour cette seule sous commande. Elle peut envoyer une carte de format qui indique toutes les facilités de cette classe qu’elle prend en charge. Cependant, une mise en œuvre Telnet qui demande des facilités doit envoyer une sous commande de facilité avant sa première utilisation de la sous commande sans considérer si de précédentes négociations avaient indiqué que la facilité est fournie. La facilité ne peut pas être utilisée tant qu’une sous commande de la facilité correspondante n’a pas été reçue. Il n’y a pas d’autre contrainte sur le moment où des sous commandes de facilités peuvent être envoyées. En particulier, il n’est pas nécessaire qu’une application sache au début d’une session toutes les facilitées qu’elle va utiliser.

Action à réception : il y a deux actions possibles qui peuvent être effectuées lorsque est reçue une sous commande de facilité, selon que le receveur est un demandeur ou un fournisseur (utilisateur).

Demandeur : lorsque une sous commande de facilité est reçue par un demandeur et qu’il est dans l’état d’attente d’une réponse, il devrait passer à l’état de Non attente. Il devrait ensuite prendre la carte de facilité qu’il a envoyée et former l’intersection logique avec la carte de facilités reçue. (Pour l’attribut Intensité, on devrait prendre le minimum du nombre reçu et du nombre demandé.) Le résultat indique les facilités négociées avec succès. Noter que si le receveur n’est pas dans l’état Attente de réponse, on est alors dans le cas du fournisseur décrit ci-après.

Fournisseur : lorsque une sous commande de facilité est reçue, il devrait envoyer une sous commande de facilité avec une carte de facilités des facilités qu’il fournit aussitôt que possible. Il devrait alors déterminer quelles nouvelles facilités il fournit pour le demandeur en formant l’intersection logique de la carte des facilités reçue et de celle envoyée.

Note : Bien que dans la plupart des cas le demandeur soit l’hôte serveur et que le fournisseur soit l’hôte utilisateur qui prend en charge le terminal, cette distinction peut n’être pas toujours vraie.

5.3	Sous-commandes de transmission

Il y a deux sortes de sous commandes de transmission : celles utilisées pour demander que les données soient envoyées au demandeur, et celles pour préfacer les données envoyées au demandeur. La première sorte permet au demandeur de contrôler quand, d’où et dans une certaine mesure quelle quantité de données sont transmises à partir du terminal. Leur explication est directe se trouve à la Section 2.

Les données peuvent être envoyées à partir du terminal par suite de deux événements : l’utilisateur du terminal a causé la transmission ou en réponse à une sous commande de transmission. Certains programmes peuvent souhaiter savoir d’où sur l’écran a commencé la transmission. (C’est raisonnable, car l’utilisateur terminal peut déplacer considérablement le curseur avant de transmettre.) D’autres programmes peuvent n’avoir pas besoin de telles informations. La sous commande DATA TRANSMIT est fournie pour le cas où cette fonction est nécessaire. Lorsque elle est utilisée, cette sous commande préface les données qui viennent du terminal. Les paramètres <x> et <y> donnent les coordonnées d’écran du début de transmission. <x> doit être inférieur ou égal à M-1 et <y> doit être inférieur ou égal à N-1. On suppose que toutes les données entre cette DATA TRANSMIT et la suivante commencent aux coordonnées données par la première sous commande et continuent de remplir chaque ligne en suivant conformément aux contraintes de l’écran et des opérateurs de format dans les données. Donc, une mise en œuvre de DET d’hôte utilisateur intelligente ou pointue (selon votre point de vue) a seulement besoin d’inclure une sous commande DATA TRANSMIT lorsque le nouveau point de départ est différent du dernier point de terminaison.

6.	Exemple d’interaction

On utilisera la nomenclature de la RFC726 pour décrire cet exemple. Pour citer cette RFC :
"S:"  est envoyé de l’hôte serveur à l’hôte utilisateur.
"U:"  est envoyé de l’hôte utilisateur à l’hôte serveur.
"T:"  est entré par l’utilisateur du terminal.
"P:"  est imprimé sur le terminal.

Le texte entouré de crochets ([]) est un commentaire. Le texte entouré de crochets angulaires (<>) est à prendre comme une seule unité. Par exemple, retour chariot est <cr>, et la valeur décimale 27 est représentée par <27>.

On suppose que l’usager a établi la connexion Telnet, s’est enregistré, et qu’un programme d’application vient d’être démarré soit directement par l’usager, soit par une procédure de démarrage préconfigurée. La présentation de la page est simplement destinée à regrouper des entités et n’implique pas une position des limites de message. On devrait supposer que toute partie du dialogue peut être envoyée comme un ou plusieurs messages. La première action du programme ou de Telnet est de négocier l’option DET:

S: <IAC><DO><DET>
U: <IAC><WILL><DET>
S:<IAC><DO><OUTPUT PAGE SIZE>	[Négocie d’abord la taille de l’écran. Dans ce cas, on demande à l’usager la taille du terminal. Cela aurait pu être fait avant la négociation de l’option DET.]
U:<IAC><WILL><NAOP>
U:<IAC><SB><NAOP><DR><25><IAC><SE>
S:<IAC><SB><NAOP><DS><0><IAC><SE>
S:<IAC><DO><OUTPUT LINE WIDTH>
U:<IAC><SB><NAOL><DR><80><IAC><SE>	[Définit l’écran comme ayant 25 lignes sur 80 caractères. Le serveur peut utiliser ces informations lorsqu’il formate l’écran.]
S:<IAC><SB><NAOL><DS><0><IAC><SE>
S:<IAC><SB><DET><FORMAT FACILITIES><Repeat><Protection, 3 Levels Intensity><IAC><SE>	[Règle maintenant les attributs du terminal.]
U:<IAC><SB><DET><FORMAT FACILITIES><Repeat, Blinking><Protection, 3 Levels Intensity><IAC><SE>
S:<IAC><SB><DET><ERASE SCREEN><IAC><SE> 	[Écrase l’écran et débute l’envoi du formulaire.]
<IAC><SB><DET><FORMAT DATA><Protection=1, Intensity=1><0><5><IAC><SE>Nom :
<IAC><SB><DET><MOVE CURSOR><0><1><IAC><SE><IAC><SB><DET><FORMAT DATA>
<Protection=1, Intensity=1><0><8><IAC><SE>Adresse :
<IAC><SB><MOVE CURSOR><0><4><IAC><SE>
<IAC><SB><DET><FORMAT DATA><Protection=1, Intensity=1><0><17><IAC><SE>Numéro de téléphone :
<IAC><SB><DET><MOVE CURSOR><32><4><IAC><SE><IAC><SB><DET><FORMAT DATA>
<Protection=1, Intensity=1><0><24><IAC><SE>Numéro de Sécurité Sociale :
<IAC><SB><DET><FORMAT DATA><Protection=1, Intensity=7>
<0><11><IAC><SE>	[Établit un champ qui n’affiche pas ce qui est tapé dedans.]
<IAC><SB><DET><MOVE CURSOR><32><5><IAC><SE>
<IAC><SB><DET><FORMAT FACILITIES>
<Blinking><0><IAC><SE>	[Donne la permission d’utiliser l’attribut Clignotement.]
U:<IAC><SB><DET><FORMAT FACILITIES><Repeat, Blinking><Protection, 3 Levels Intensity><IAC><SE>
S:<IAC><SB><DET><FORMAT DATA><Blinking=1, Protection=1, Intensity=1><0><29><IAC><SE>

Votre n° de SS ne sera pas imprimé.

<IAC><SB><DET><HOME><IAC><SE><IAC><GA>

L’échange précédent a placé sur l’écran un formulaire qui ressemble à :
Nom :
Adresse:
Numéro de téléphone :
Numéro de sécurité sociale : "Votre n° de SS ne sera pas imprimé."
où la chaîne entre guillemets clignote.

L’utilisateur du terminal est maintenant libre de remplir la formulaire fourni. Il positionne le curseur au début du premier champ (cela est habituellement fait en frappant la touche Tabulation) et il commence à taper. On ne montre pas cette interaction car elle ne génère aucune interaction avec le programme d’utilisateur Telnet ou avec le réseau. Après que l’utilisateur du terminal a fini de remplir le formulaire, il frappe la touche de transmission pour envoyer la partie non protégée du formulaire, mais d’abord, le programme d’utilisateur Telnet négocie l’option Macro octet (BM) pour condenser la sous commande de Séparateur de champs:

U:<IAC><DO><BM>	[Négocie l’option Macro octet.]
S:<IAC><WILL><BM>	[Définit le décimal 166 comme sous commande de séparateur de champ (voir l’Appendice 3)]
U:<IAC><SB><BM><DEFINE><166><6><IAC SB DET FIELD SEPARATOR IAC SE><IAC><SE>
S:<IAC><SB><BM><ACCEPT><166><IAC><SE>	[Le serveur accepte la macro.]
U:<IAC><SB><DET><DATA TRANSMIT><0><6><IAC><SE>
John Doe <166> 1515 Elm St., Urbana, Il 61801 <166> 217-333-9999 <166> 123-45-6789 <166>

S:<IAC><SB><DET><ERASE SCREEN><IAC><SE>
Merci.

Et ainsi de suite.

Appendice 1	Sous-commandes, codes de fonctionnement et syntaxe

 1	EDIT FACILITIES	<Carte de facilités>	(facilités d’édition)
 2	ERASE FACILITIES	<Carte de facilités>	(facilités de suppression)
 3	TRANSMIT FACILITIES	<Carte de facilités>	(facilités de transmission)
 4	FORMAT FACILITIES	<Carte de facilités 1> <Carte de facilités 2>	(facilités de formatage)
 5	MOVE CURSOR	<x> <y>	(déplacer le curseur)
 6	SKIP TO LINE 	<y>	(sauter à la ligne suivante)
 7	SKIP TO CHAR	<x>	(sauter au caractère suivant)
 8	UP		(vers le haut)
 9	DOWN		(vers le bas)
10	LEFT		(vers la gauche)
11	RIGHT		(vers la droite)
12	HOME		(en début de ligne)
13	LINE INSERT		(insertion de ligne)
14	LINE DELETE		(suppression de ligne)
15	CHAR INSERT		(insertion de caractère)
16	CHAR DELETE		(suppression de caractère)
17	READ CURSOR		(curseur de lecture)
18	CURSOR POSITION	 <x><y>	(position du curseur)
19	REVERSE TAB		(tabulation arrière)
20	TRANSMIT SCREEN		(transmettre l’écran)
21	TRANSMIT UNPROTECTED	(transmission de ce qui est non protégé)
22	TRANSMIT LINE		(transmettre la ligne)
23	TRANSMIT FIELD		(transmettre le champ)
24	TRANSMIT REST OF SCREEN	(transmission du reste de l’écran)
25	TRANSMIT REST OF LINE	(transmettre le reste de la ligne)
26	TRANSMIT REST OF FIELD	(transmettre le reste du champ)
27	TRANSMIT MODIFIED		(transmettre ce qui est modifié)
28	DATA TRANSMIT	<x><y>	(transmettre les données)
29	ERASE SCREEN		(supprimer ce qui est sur l’écran)
30	ERASE LINE		(supprimer la ligne)
31	ERASE FIELD		(supprimer le champ)
32	ERASE REST OF SCREEN		(supprimer le reste de l’écran)
33	ERASE REST OF LINE		(supprimer le reste de la ligne)
34	ERASE REST OF FIELD		(supprimer le reste du champ)
35	ERASE UNPROTECTED		(supprimer ce qui n’est pas protégé)
36	FORMAT DATA	<carte de format>	(format des données)
37	REPEAT	 <compte><caract>	(répéter)
38	SUPPRESS PROTECTION	<négociation>	(supprimer la protection)
39	FIELD SEPARATOR		(séparateur de champ)
40	FN	<code>	(numéro de fonction)
41	ERROR	<cmd><code d’erreur>	(erreur)

Appendice 2	Codes d’erreur

 1	Facilité non négociée précédemment.
 2	Code de sous commande illégal.
 3	Adresse du curseur hors limite.
 4	Valeur de numéro de fonction (FN) indéfinie.
 5	Une largeur de ligne acceptable ne peut être négociée.
 6	Une longueur de page acceptable ne peut être négociée.
 7	Paramètre illégal dans la sous commande.
 8	Erreur de syntaxe dans l’analyse de la sous commande.
 9	Trop de paramètres dans la sous commande.
10	Pas assez de paramètres dans la sous commande.
11	Valeur de paramètre indéfinie
12	Combinaison d’attributs de format non acceptée.

Appendice 3	Utilisation de l’option Byte Macro

Un des inconvénients majeurs de l’option DET est que comme les fonctions sont codées comme sous négociations d’option Telnet, une assez grosse redondance est générée. Une fonction comme Insertion de caractère qui est codée sur un seul octet dans la plupart des terminaux exige six octets dans l’option DET. À l’origine, la seule autre solution qui aurait réalisé la même transparence que fournit l’utilisation des sous commandes aurait été de définir des fonctions de commande Telnet supplémentaires. Cependant, comme cela aurait entraîné des modification au protocole Telnet lui-même, il a été estimé que cette solution n’était pas acceptable. Depuis lors, l’option Telnet Byte Macro (RFC729) a été définie. Cette option permet à l’utilisateur et au serveur Telnet de transposer une chaîne arbitraire de caractères en un seul octet qui est alors transféré sur le réseau. Donc, l’option Byte Macro fournit le moyen aux mises en œuvre d’éviter la redondance pour les sous commandes d’utilisation intensive. Le reste de cet appendice suggère comment devrait être appliquée l’option Byte Macro à l’option DET.

En restant en ligne avec la spécification de l’option Byte Macro, les octets de macro seront choisis à partir de la gamme 128 à 239. Pour l’option DET, il est suggéré que les octets de macro soient choisis en ajoutant le code de sous commande à 128. De plus, une sous commande de DET non officielle pourrait être définie en indiquant que chaque côté était d’accord pour prendre en charge les octets de macro pour toutes les sous commandes (mais pas nécessairement prendre en charge toutes les sous commandes elles-mêmes) conformément à cet algorithme. Cette sous commande serait :

IAC SB DET DET-MACRO <négociation> IAC SE	code de sous commande : 254

où <négociation> peut avoir la valeur de la négociation d’option Telnet :
251	WILL
252	WONT
253	DO
254	DONT

Cette sous commande est envoyée par une mise en œuvre Telnet pour indiquer sa volonté d’adopter des macros d’octet pour toutes les sous commandes DET conformément à l’algorithme suivant :

L’octet de macro pour la sous commande i sera i+128 et va représenter la chaîne suivante pour les paramètres sans sous commandes :

IAC SB DET <code de sous commande> IAC SE

et la chaîne suivante pour les sous commandes avec paramètres :

IAC SB DET <code de sous commande>

Le réglage par défaut pour cette sous commande est que les macros ne sont pas activées, en d’autres termes,
IAC SB DET DET-MACRO WONT IAC SE
IAC SB DET DET-MACRO DONT IAC SE

La négociation de cette sous commande suit les mêmes règles que les négociations des options Telnet.

Références

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. n° MI-1100. 1974.

6.	[RFC0729]	David Crocker, "Option Telnet Byte Macro", 1977.

7.	Data Entry Virtual Terminal Protocol for Euronet, DRAFT, 1977.

8.	[RFC0728] J. Day, "Un petit piège dans le protocole Telnet", avril 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.

15.	[RFC0726] J. Postel et D. Crocker, "Option Telnet Transmission et écho contrôlés à distance", mars 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. Aussi dans ARPANET Protocol Handbook, 1976.

20.	Walden, David C. "Telnet Output Page Size" NIC # 20197, 1973. Aussi dans ARPANET Protocol Handbook, 1976.