Catégories: "Développement"

Un exemple de pages HTML

Soit fichierA.html:

<HTML>
 <HEAD>
  <TITLE>Document A</TITLE>
 </HEAD>
 <BODY>
 <H1>Ceci est le
     Document A</H1>
 Vous en saurez plus dans le
<A HREF="fichierB.html">Document B</A>.
 </BODY>
</HTML>

...et fichierB.html:

<HTML>
 <HEAD>
  <TITLE>Document B</TITLE>
 </HEAD>
 <BODY>
  <H1>Ceci est le
      Document B</H1>

 Je vous propose d'en
 apprendre un peu plus sur
  <A HREF="http://www.univ-compiegne.fr/">l'UTC</A>...
 <HR>
  <UL>
   <LI>Un élément</LI>
   <LI>Un autre élément</LI>
   <LI>Une liste imbriquée,
       et numérotée en plus:</LI>
    <OL>
     <LI>1er élément...</LI>
     <LI>2ème élément...</LI>
    </OL>
   <LI>Encore un élément</LI>
  </UL>
 <HR>
  Retour au <A HREF="fichierA.html">Document A</A>.
 </BODY>
</HTML>

Vous découvrirez dans ces fichiers quelques marqueurs supplémentaires et notamment ceux permettant de créer des liens vers un autre fichier (local) ou vers un autre serveur en donnant l'URL  complète.

Sachez également que vous pouvez consulter le texte source de n'importe quelle page qui vous plaît en sélectionnant l'option "View/Source..." du menu de votre navigateur lorsque cette page y est affichée. Le menu d'aide de la plupart des clients peut également vous aiguiller vers des sites dédiés à la création de pages pour le Web...

Les bases du HTML

Pour commencer, rien ne vaut un exemple. Jetez donc un oeil sur le texte source suivant:

<HTML>
 <HEAD>
  <TITLE>Page d'exemple très simple</TITLE>
 </HEAD>
 <BODY>
  <HR>
  <H1>Gros Titre</H1>
   <P>Premier paragraphe...
      Fin.</P>
   <P>Deuxième paragraphe...
      Fin.</P>
  <HR>
   <H2>Moins Gros Titre</H2>
    <P>Du texte...
    La suite...
    <BR>A la ligne.</P>

  <HR>
 </BODY>
</HTML>

Cliquez ici pour voir le résultat à l'écran.

Vous constaterez que le texte source de cette page contient déjà un certain nombre de marqueurs, ces marqueurs devant être insérés entre crochets angulaires <...>. Vous pouvez également constater les marqueurs vont généralement par deux: un marqueur d'ouverture, par exemple <H1> et un marqueur de fermeture, par exemple </H1>. Les marqueurs portent sur la partie de texte entre l'ouverture et la fermeture. Voyons rapidement la signification de ces quelques marqueurs très simples:

<HTML>...</HTML>: englobe l'ensemble de la page au format HTML.

<HEAD>...</HEAD>: englobe certaines informations concernant le document, par exemple le titre qui sera indiqué par<TITLE>. Notez que ce titre apparaît séparé du reste du document à l'affichage, c'est pour çà que vous ne le voyez pas dans le rendu de page ci-dessus. Le titre peut par exemple être affiché dans le titre de la fenêtre du client. Il est également utilisé lorsque l'utilisateur insère votre page dans ses favoris.

<BODY>...</BODY> délimitent le corps de votre document. C'est entre ces marqueurs que vous placerez l'information elle-même.

<HR> est une exception à la règle, il n'y a pas de marqueur de fermeture. [Note: vous pouvez toutefois fermer cette balse de la manière suivante <HR></HR> ou mieux: "à la XHTML" c'est à dire en une seule balise qui ouvre et qui ferme en même temps: <HR />] Ce marqueur signifiant Horizontal Rule, trace un trait de séparation sur toute la largeur de la fenêtre client.

<H1> à <H6> permettent de donner des titres de section de différents niveaux, comme dans le cas des sommaires hiérarchiques que l'on trouve dans la plupart des publications scientifiques. Notez que la norme recommande de ne pas sauter de niveaux dans la hiérarchie, c'est-à-dire qu'il faut éviter d'avoir un <H1>...</H1> suivi par un <H3>...</H3>sans avoir mis de <H2>...</H2> entre eux.

<P>...</P> délimitent un paragraphe. Il est cependant parfaitement correct d'omettre le </P> final puisque le début du prochain paragraphe dénotera forcément la fin du premier. De même, il n'est pas nécessaire d'avoir un <P> juste après un titre. En pratique, on a donc coutume d'utiliser <P> uniquement pour signaler un changement de paragraphe... à vous de voir ce que vous préférez. [Note: tout ceci est effectivement valide en HTML, mais ce sont des mauvaises habitudes qui vous empêcheront d'évoluer facilement vers des langages plus évolués tels que XHTML. Prenez donc l'habitude d'ouvrir et de fermer systématiquement tous vos paragraphes!]

Finalement, <BR> signale un retour à la ligne (Break) sans changement de paragraphe. [Note: là encore, prenez l'habitude d'écrire directement <br />]

Dernier détail à connaître: quel que soit le nombre d'espaces ou de retours à la ligne que vous mettez entre deux mots dans votre code HTML, le client n'interprètera qu'un seul espace. Les retours à la ligne sont générés automatiquement lorsque le texte arrive à droite de l'écran à moins que vous n'ayez inséré un marqueur spécifique.

De quoi avons nous besoin pour Publier sur le Web?

Etre accessible sur le Web

Pour être accessible sur le World Wide Web, votre information doit être placée sur un serveur WWW, c'est à dire que vos pages HTML doivent être placées sur le disque dur d'un ordinateur sur lequel tourne un serveur de requêtes HTTP. Cet ordinateur serveur doit être connecté à Internet en permanence afin que les utilisateurs puissent y accéder quand ils le désirent.

  • Si vous - ou l'organisation à laquelle vous appartenez (Université, Société, etc...) - disposez d'une connexion Full-IPà Internet, vous pouvez envisager de mettre en place un tel serveur sur l'un de vos ordinateurs.
  • Par contre, si vous n'avez qu'un accès Dialup-IP (le minimum pour utiliser le Web correctement) ou si vous voulez tâter le terrain avant d'installer votre propre serveur, vous allez profiter du serveur Web de votre prestataire de services.

Les bons prestataires incluent désormais dans leurs forfaits mensuels d'abonnement la possibilité de placer quelques pages HTML sur leur serveur, sans frais supplémentaires. Si cette solution comporte certaines restrictions, elle n'en reste pas moins un moyen simple, rapide et efficace "d'entrer dans le Web". Les restrictions que cette méthode comporte sont en fait sans importance pour le débutant. Elles proviennent de la politique commerciale du prestataire d'une part (le contenu de l'information doit être non commercial, limitation d'espace disque...) et de raisons techniques d'autre part (si vous n'avez pas directement accès au serveur, vous ne pouvez pas traiter de formulaires ni d'index cherchable par mot clef... mais ce n'est pas notre objectif premier de toute façon).

Ecrire des pages HTML

La méthode de création des pages est relativement simple. Tout d'abord, essayez de séparer vos informations en différentes "pages", sachant qu'une page, au sens HTML, est un document qui sera chargé en un seul bloc par le client puis affiché pour lecture. Lorsque vous cliquez pour suivre un lien, vous vous rendez (dans la majorité des cas) à une autre page. Chaque page peut être aussi longue que vous le voulez; si une page ne peut être affichée entièrement sur l'écran par un client, une barre de défilement apparaîtra automatiquement pour permettre au lecteur de se déplacer dans la page.

Il est néanmoins recommandé de respecter certaines limites. En effet, des pages trop courtes peuvent obliger le lecteur à changer de page trop souvent, à se perdre dans l'arborescence, et surtout à s'impatienter devant des étapes de chargement répétées. De l'autre côté, des documents trop longs (correspondant à plus de 4 pages A4) ne vont probablement pas être lus en entier...

Vous pouvez taper vos pages avec n'importe quel éditeur de texte ou traitement de texte permettant de sauver le "texte seul". A ce propos, si vous incluez des caractères spéciaux ou accentués, assurez-vous que le jeu de caractères utilisé soit l'ISO Latin-1. C'est le cas général sous Windows, courant sous UNIX, peu fréquent sur Mac et rare sous DOS. Nous verrons plus tard, une méthode de codage des caractères spéciaux permettant de sauver les pages en ASCII-7 bits (l'ASCII-7 bits étant un sous-ensemble de l'ISO Latin-1 et de l'immense majorité des jeux de caractères existants!)

Lors de la rédaction de vos documents, vous pouvez commencer à insérer différents marqueurs HTML pour spécifier la mise en forme. Sauvez alors chaque page dans un fichier séparé portant l'extension .html

Par la suite, vous verrez qu'il est également possible d'utiliser des éditeurs HTML. Ces éditeurs apportent un confort non négligeable par rapport à un éditeur de texte; cependant ils ne faciliteront pas toujours votre compréhension du langage. Peut-être devrirez vous attendre la fin de cette initiation avant de les utiliser...

Vérifier les pages HTML

A ce moment, vous voudrez probablement avoir un aperçu de votre page sous forme formatée. Pour ce faire, chargez simplement un client tel que Netscape, mais sans vous connecter à Internet. Dans le menu "Fichier" de votre client vous trouverez une option appelé "Ouvrir fichier..." ou "Fichier Local...". En sélectionnant cette option, vous aurez la possibilité de choisir un fichier xxx.html que vous avez créé sur votre disque dur et de voir s'afficher la page HTML qu'il contient... sous forme formatée.

Petit détail pratique: Si votre ordinateur n'est pas relié en permanence a Internet et que Netscape Navigator se bloque lorsque vous le lancez sans être connecté allez dans le menu "Options/Preferences/Styles" et sélectionnez "Start with: Blank Page" ce qui évitera que Netscape aille chercher automatiquement une quelconque page de départ sur le réseau.

ATTENTION: Gardez à l'esprit que ce que vous voyez n'est pas exactement ce que verront les gens utilisant un autre client que vous... et même s'ils utilisaient le même, ils pourraient le configurer différemment en ce qui concerne les polices de caractères et les couleurs utilisées. Songez qu'il existe même des clients Web en mode texte, sans aucun graphisme, et utilisables sans souris!

Vous pouvez alors retourner éditer le fichier pour améliorer sa présentation, puis demander à votre client de faire un "reload" pour voir le résultat.

Placer vos pages sur le serveur HTTP

Une fois que le résultat vous convient:

  • Si vous passez par un prestataire de service Internet externe, vous devez suivre ses instructions pour envoyer le ou les fichiers xxx.html vers son serveur; ceci se fait généralement par FTP.
  • Si la machine sur laquelle vous travaillez est directement reliée à Internet, il vous suffit parfois de placer vos pages dans un dossier nommé public_html dans votre compte (sous UNIX).
  • Lorsque vous maîtriserez bien HTML, vous voudrez peut-être mettre en place votre propre serveur HTTP...

A ce moment vos pages sont immédiatement accessibles depuis le monde entier (ou plutôt: l'Internet entier) par une adresse de type http://www.prestataire.domaine.fr/~votrelogin/xxx.html. Une telle adresse est appelée URL (Uniform Resource Locator).

World Wide Web et HTML

On ne présente plus le World Wide Web (aussi appelé communément Web, WWW ou W3)! C'est probablement la facette la plus médiatique d'Internet. C'est certainement aussi la plus impressionnante: hypertexte, multimédia, distribuée... Paradoxalement, nous allons le voir, c'est aussi la plus accessible pour publier votre information!

En un mot, le Web est un outil idéal, puissant et facile à utiliser. Placez un utilisateur devant le Web et il apprendra à s'en servir tout seul, comme si c'était inné! Au bout de quelques clics de souris, il aura déjà fait le tour de la planète! Pour la suite, vous devez néanmoins savoir que pour consulter le Web, vous utilisez un client (Netscape NavigatorMosaïc,CelloLynx, etc...) qui permet de vous connecter à différents serveurs répartis dans le monde. Vous pouvez, bien sûr, passer d'un serveur à un autre de manière transparente, en cliquant simplement sur un lien. Vos propres informations seront donc installées sur un serveur particulier... mais seront visibles du monde entier comme si elles faisaient partie du Web entier.

Le client le plus utilisé actuellement est très probablement Netscape Navigator (communément appelé Netscape tout court), mais il faut garder à l'esprit qu'une proportion non négligeable des lecteurs potentiels de vos informations utiliseront toujours un client différent et aux capacités différentes, ne serait-ce que parce que tous les logiciels de navigation ne sont pas disponibles sur toutes les plates-formes. Cependant, pour garantir une représentation à peu près uniforme de vos données auprès de n'importe quel utilisateur, tous les clients reconnaissent un langage standardisé de structuration des documents. Ce langage est appelé HTML pour HyperText Markup Language, et consiste à enrichir vos différentes pages d'information avec des marqueurs ("tags") indiquant que telle phrase est un titre, que telle autre est une citation, qu'il faut insérer une image à tel endroit, etc...

Le langage HTML - qui est en fait une application particulière de la norme ISO-SGML (Standard Generalized Markup Language) - a été défini à l'origine par le CERN. Mais rapidement, d'autres acteurs d'Internet (notamment NCSA et Netscape) sont venus apporter des suggestions pour étendre le langage. HTML est donc devenu un standard en perpétuel développement sous le contrôle de l'IETF (Internet Engineering Task Force). On a ainsi vu apparaître successivement HTML version 1 puis 2 et bientôt 3. La particularité de ces différentes versions est d'être compatibles plus ou moins dans les deux sens, c'est-à-dire qu'un document écrit sous HTML 1 peut être affiché sans problème par un client implémentant HTML 3; de même, un document HTML 3 peut être affiché par un client HTML 1 mais cette fois-ci avec certaines restrictions... La compatibilité est étudiée de telle sorte que les restrictions se fassent les plus discrètes possibles et ne gênent pas la lecture.

Programmer un serveur Minitel (2): Dompter le Minitel!

[NDA: Article écrit en Setembre 1995, publié dans ST Magazine n° 100 en Décembre 1995.]

Le mois dernier, je vous présentais le code source du logiciel serveur Minitel STUT ONE 2.6X et son fonctionnement général. Ce mois ci, mous allons nous intéresser aux traitements spécifiques nécessaires pour communiquer avec un Minitel. Vous allez découvrir que malgré sa petite taille, il ne se laisse pas dompter si facilement... Le Minitel est il asocial? C'est la question que nous allons élucider ici, en tentant de communiquer avec lui...

Inutile de vous dire que, pour nos explications, nous allons très fortement nous baser sur le code source de STUT ONE fourni sur la disquette du mois dernier. Si vous avez été assez fou pour ne pas vous procurer le numéro précédent de l'unique magazine au monde qui n'a pas peur d'expliquer comment fonctionnent les composantes indispensables de notre monde (un serveur Minitel par exemple!), sachez qu'il n'est peu être pas trop tard et qu'avec un peu de chance, il en reste un exemplaire à la boutique Pressimage...

LES OREILLES DU MINITEL

Posez donc votre Minitel sur une table et regardez le en face. Regardez le bien. Est-ce que vous voyez des oreilles? Oui? Alors je vous conseille d'arrêter de manger des champignons... Non? Rassurez vous c'est normal! Simplement parce que les oreilles du Minitel sont sur sa face arrière!

Vous avez maintenant le choix entre retourner votre Minitel ou bien contourner votre table. Toujours est-il que sur la face arrière, vous verrez une prise DIN, ronde avec 5 canaux auditifs (5 trous quoi). C'est dans cette oreille là qu'il faut causer pour que votre Minitel vous écoute. C'est surtout, par là que le serveur va causer pour dominer le Minitel, tel un maître son esclave.

L'autre oreille du Minitel, elle se situe au bout d'un tentacule (un cordon quoi) qui part de la face arrière et se loge dans la première prise téléphonique qu'elle trouve. C'est par là que le Minitel écoute ce que veulent les connectés du serveur. Ce qu'il entend par là, il devra le rapporter à son maître: l'ordinateur serveur...

Mais comment fait-il, justement, pour parler au maître. Eh bien, en fait, les oreilles du Minitel sont aussi des bouches et il peut donc parler avec ses oreilles! C'est vraiment incroyable l'anatomie de ces bêtes là!

Le mode de fonctionnement de ces organes est néanmoins assez simple à la base: quand le serveur envoie quelque chose dans une oreille, le Minitel l'envoie au connecté par l'autre. Et quand le connecté fait une requête dans l'autre oreille, le Minitel la transmet au serveur par la première...

Vous connaissez cette moquerie: "çà rentre par une oreille et çà ressort par l'autre". Oui? Eh bien, elle est tout à fait adaptée au fonctionnement du Minitel. En gros, le Minitel est donc une boîte sans cervelle, tout à fait stupide et qui ne sait s'affranchir que d'un éventail de tâches très limité. Ceci implique que nous allons constamment devoir être derrière lui...

MAIS A QUOI SERT-IL?

En temps normal, quand vous utilisez le Minitel en tant qu'interprète, pour vous connecter au 11 par exemple (commercialement parlant, je devrais dire: quand vous vous connectez au 3615 STMAG)... quand vous vous connectez au 11 donc, c'est un peu différent, puisque les informations à afficher arrivent par l'autre oreille - celle qui est dans la prise téléphonique. Les commandes que vous tapez repartent également par cette 'oreille'...

Résumons nous: les deux oreilles fonctionnent à peu près de la même manière. Quand vous parlez dans l'une, çà ressort par l'autre, et en plus çà s'affiche sur l'écran. Et quand vous parlez dans l'autre, çà ressort par la première et çà s'affiche aussi sur l'écran. Et encore plus subtil: quand vous tapez sur le clavier, çà lui sort par les deux oreilles en même temps, au Mintel!

Vous avez probablement un doute là... En effet, pourquoi deux oreilles au fonctionnement identique ont elles une apparence physique si différente? Il y a en effet une petite différence, elle se situe au niveau des signaux: l'oreille-fiche-téléphonique parle une langue "analogique" alors que l'oreille-prise-DIN-5-broches parle une langue "digitale". Quant au clavier et à l'écran, ils parlent une langue "humaine".

Le métier du Minitel est donc un métier d'interprète (même si vous ne l'aviez jamais remarqué jusque là). Le Minitel effectue instantanément la traduction entre trois langue: le "digital", la langue des ordinateurs, "l'analogique", la langue du réseau téléphonique, et "l'humain", la langue des utilisateurs.

Cet interprète, vous le payez 20 Francs/mois, ce qui est peu cher payé, voire complètement immoral. Néanmoins, comme il ne bronche pas, on ne va pas se priver et on va le faire travailler à plein régime.

Bien sûr, cette explication est un peu simpliste, et je vais vous la résumer, façon techno-maniac pour être sûr que tout le monde comprend bien: Le Minitel n'est autre qu'un terminal asynchrone interconnectant de manière complète un écran 40*25 8 niveaux de gris, un clavier AZERTY étendu, un modem V23 et un codec TTL. C'est clair? Bon, alors continuons...

AFFICHE!

La légende veut que les sysops de serveurs RTC, et à fortiori les auteurs de logiciels serveurs comme vous et moi, soient assoiffés de pouvoir. Ce pouvoir, ils, enfin nous, l'avons tout d'abord exercé sur notre chien, maintenant sur notre Minitel et le mois prochain, nous tenterons de l'exercer sur nos connectés. Ensuite nous serons probablement maîtres du monde. Mais d'ici là, nous avons du boulot! Je ne vais pas ici vous expliquer comment faire asseoir ou coucher votre Minitel, néanmoins, je vais tenter de vous montrer comment le faire afficher... Faciiiiile.

Première solution: vous allumez votre Minitel et vous écrivez en langage humain sur le clavier. Le Minitel va afficher en langage humain sur l'écran. C'est simple, rapide et efficace, sauf que vous allez vite en avoir marre de taper au clavier et de recommencer pour chaque nouveau connecté.

Deuxième solution: vous appelez le 11 et là bas un gentil ordinateur se charge de parler dans l'oreille téléphonique de votre Minitel pour le faire afficher. L'inconvénient c'est qu'il n'affiche pas vraiment ce que vous voulez!

Troisième solution: vous lui parlez dans son oreille-prise-DIN, mais cette oreille ne comprend que le "digital". Le grand bonheur, c'est que vous avez dans les parages un ordinateur de type ATARI ST (Avouez, nous savons tout!) parfaitement à même de parler le 'digital' avec votre Minitel. Un câble entre la prise DIN et la prise série de votre ATARI et ils sont prêts à se parler.

Votre ordinateur dispose également de la capacité fort intéressante de pouvoir être programmé. Vous pouvez donc lui faire mémoriser un série d'actions qu'il refera autant de fois que vous le désirez. Dans le cas qui nous intéresse, nous voulons qu'il mémorise des "phrases" et qu'il les répète dans l'oreille du Minitel lorsque bon nous semble.

En GfA Basic, il y a plusieurs manières de parler au Minitel en utilisant la prise série. La première s'applique très rapidement comme ceci:

OUT 1,65,66,67

Cette instruction affiche ABC sur l'écran de votre Minitel. Le 1 correspond au port série. Si vous avez plusieurs ports série, le 1 correspond au port série par défaut réglé dans le panneau de contrôle. Nous n'avons pas à chercher plus loin ici, puisque STUT ONE 2 ne gère qu'un seul port série. Les nombres 65, 66 et 67 quant à eux correspondent aux codes ASCII des lettres A, B et C.

La deuxième méthode est un peu plus civilisée:

OPEN "",#99,"AUX:"
PRINT #99,"ABC";
CLOSE #99

Il faut ici commencer par ouvrir un canal vers le port série (AUX:). Ici nous attribuons arbitrairement le n° 99 à ce canal. Ensuite nous pouvons faire des prints vers le port série, et c'est, ma foi, bien agréable. A la fin du programme, nous n'oublions pas de refermer la porte derrière nous...

La deuxième méthode, plus civilisée, semble avoir tous les avantages. Eh oui, on pourrait par exemple stocker une grande chaîne de caractères dans la variable page$ et l'afficher en un tournemain avec:

PRINT #99;page$;

Malheureusement ce n'est pas si simple, en effet, le Minitel se laisse piloter par un certain nombre de codes de contrôles assez barbares. Dans ce cas, on aura par exemple le choix entre:

OUT 1,27,66

et

PRINT #99;chr$(27);chr$(66);

pour passer en encre verte.

Déjà, la première solution semble plus courte. Autre exemple:

PRINT #99;"çà c'est génial";

produira quelque chose de bizarre. En effet, le Mintel et l'ATARI ne sont pas d'accord sur la représentation des caractères accentués. Pour afficher une telle phrase, il faut donc l'analyser caractère par caractère et envoyer des codes spéciaux à chaque fois que l'on rencontre un caractère accentué. C'est ce que fait la procédure affiche_msg() par exemple. La conversion d'un caractère accentué en une chaîne de caractères équivalente pour le Minitel se fait en appelant la procédure code_accent().

STUT ONE mélange donc allègrement la méthode OUT1,x et la méthode PRINT #99;x$; pour afficher sur le minitel, selon ce qui est le plus pratique à un instant donné.

VITESSE, PARITE ET LES AUTRES...

Envoyer des caractères vers le port série, d'une manière ou d'une autre, est une bonne chose. Mais en pratique cela pose quelques petits problèmes de compréhension entre la machine qui émet et celle qui est censée recevoir. Nous évoquions plus haut que le port série de l'ordinateur et la prise DIN 5 broches parlaient la même langue: le 'digital'. Soit, mais cette langue se décompose en plusieurs 'dialectes'! Il y a des paramètres tels que le débit, le nombre de bits par caractère, la parité et le contrôle de flux sur lesquels ils doivent se mettre d'accord.

Le Minitel impose des échanges à 7 bits par caractère et une parité paire. Quant à la vitesse (le débit), il y a plusieurs possibilités. D'un côté, sur la prise téléphonique, le Minitel (hormis les modèles les plus récents que seuls les employés de France Télécom peuvent s'offrir) ne peut communiquer qu'à 1200 bps. Que signifie bps? Cela signifie 'bits par secondes'. Dans ce cas précis on peut aussi parler de 1200 bauds, mais évitez, çà vous évitera de dire des âneries par la suite.

Concrètement, à quoi correspond cette vitesse? Nous avons vu que le Minitel utilisait 7 bits par caractère. Il y a également un bit de parité (paire). S'ajoute à cela, un bit de début de caractère et un bit de fin de caractère. Sans eux, deux Minitels (ou modems) communiquant entre eux ne sauraient pas où commencent les caractères. Ca nous fait donc 10 bits par caractère. Si on divise alors 1200 par 10 on se rend compte que le Minitel transmet (ou reçoit, selon les cas) 120 caractères par seconde. Sachant que son écran de 40 colonnes et 25 lignes fait 1000 caractères, un écran complet peut donc théoriquement s'afficher en 8,3 secondes, ce qui est déjà assez long...

Mais ce chiffre correspond à une suite de caractères blancs sur fond noir, sans jamais changer de couleur, sans clignotement, sans soulignement, sans animations, sans caractères semi-graphiques, etc... En effet à chaque fois que l'on veut introduire l'un des effets ci-dessus, il faut introduire dans le flux de caractères affichables, des caractères de contrôle permettant de changer de couleur, de passer en inverse vidéo, etc... Ces caractères de contrôles viennent rarement seuls, c'est souvent une séquence de 2, 3 ou 4 caractères d'un coup. Pour distinguer ces séquences de caractères du texte, elles commencent généralement par le caractère 'escape' de code ASCII 27 ($1B en héxadécimal). Vous le retrouverez dans l'exemple plus haut permettant de passer en entre verte.

C'est ainsi que le Minitel est devenu célèbre pour sa légendaire vitesse de transmission. La seule solution pour que çà aille un tout petit peu plus vite est d'afficher des pages un peu plus dépouillées...

Imaginez maintenant que vous êtes en train de créer une page vidéotex (un écran Minitel). Si a chaque modification, vous devez attendre 10 secondes pour voir le résultat, vous allez vite devenir fou. C'est pour cela que sur la prise DIN (qui s'appelle en fait prise péri-informatique), le Minitel 1B peut communiquer jusqu'à 4800 bps et le Minitel 2, jusqu'à 9600 bps. Et celui qui me parle de bauds sur la prise péri-informatique sera banni à jamais!

Au début, on se dit donc la chose suivante: on va communiquer à 9600 bps entre l'ordinateur et le Minitel, et puis derrière, sur la ligne téléphonique, ma foi, on ne communiquera qu'à 1200 bps, puisqu'on ne peut pas aller plus vite. Oui, c'est très intéressant çà! Comme çà, quand on fait des tests en local, çà va vite, et puis quand un type est connecté sur notre serveur, eh bien çà va aussi vite que çà peut!

Mais ce n'est pas si simple. Dans le cas précis où un type est connecté à 1200 bps et que l'ordinateur envoie une page vers le Minitel à 9600 bps, le Minitel reçoit, en une seconde, 8 fois plus d'informations qu'il ne peut en transmettre dans le même intervalle de temps. Ces données doivent êtres mises en mémoire par le Minitel, pour les envoyer un peu plus tard. Mais l'ordinateur continue d'envoyer, et le Minitel doit mettre de plus en plus de données en Mémoire. Cette mémoire, qu'on appelle une mémoire tampon (buffer en anglais) est limité. Dans le cas du Minitel, elle fait 256 octets, c'est à dire que c'est comme s'il n'y en avait pas. En envoyant à 9600 bps, vous la remplissez en un peu plus d'un quart de seconde! Et en moins d'une demi seconde, vous aurez envoyé plus de données que le Minitel n'a pu en stocker ou envoyer. Ces données en trop disparaîtront littéralement dans le néant (il y a un trou noir dans tous les Minitel, sisi, croyez moi!).

La seule solution pour éviter ces fâcheux problèmes, est de repasser la liaison ordinateur-Minitel à 1200 bps lorsqu'on travaille en mode connecté. Si vous arrivez à comprendre çà, vous êtes sur la bonne voie. Les éminents programmeurs d'une éminente société d'édition du nom de Log Access n'ont jamais saisi... [NDA: Private joke... sorry!]

CHANGER DE VITESSE

Bon, accrochez-vous, on va faire une comparaison vraiment tirée par les cheveux! Quand vous conduisez une voiture, si vous voulez changer de vitesse, vous devez d'abord débrayer et ensuite vous pouvez manipuler le levier de vitesse. Si vous ne débrayez pas avant de changer de vitesse, vous n'arriverez pas au résultat escompté. Vous aurez même des effets secondaires indésirables...

Eh bien pour changer la vitesse de la liaison ordinateur-Minitel, c'est pareil. L'ATARI dispose d'un appel système: XBIOS(15) pour changer la vitesse du port série. La procédure init_rs_520_1040 utilise cet appel système. Mais cet appel système, c'est comme le levier de vitesse: il faut 'débrayer' avant de l'utiliser!

En effet, imaginez que l'ordinateur communique avec le Minitel à 1200 bps et que tout à coup vous changez la vitesse de l'ordinateur à 9600 bps. La vitesse du Minitel, elle, reste à 1200 bps. Et les deux appareils ne peuvent plus communiquer jusqu'à ce que vous les mettiez à nouveau sur la même vitesse.

Pour changer la vitesse de la prise péri-informatique du Minitel, on peut utiliser la combinaison de touches Fnct+P puis 9 sur le clavier du Minitel (9 comme 9600, 4 comme 4800, 1 comme 1200 ou 3 comme 300 bps). Néanmoins ce sera vite lassant si vous devez répéter cette gymnastique avec vos doigts à chaque fois. Les ingénieurs de France Télécom y ont pensé et ont prévu une séquence de codes (vous savez celles qui commencent par Escape) que l'on peut envoyer par la prise péri-info, ce qui changera sa vitesse. Seulement voilà, si vous avez changé la vitesse de l'ordinateur, tout ce qu'il pourra bien envoyer à la prise péri-info sera incompris. Il faut donc demander au Minitel de changer de vitesse AVANT de changer la vitesse de l'ordinateur! Vu?

De plus, il ne faut pas changer la vitesse de l'ordinateur avant d'être sûr que les codes de changement de vitesse soient bien arrivés au Minitel. Il faut donc marquer une petite pose. Mais, bien sûr, entre le moment où le Minitel à changé de vitesse et celui ou l'ordinateur l'a fait aussi, il y a un laps de temps pendant lequel toute communication est impossible. Si le Minitel avait quelque chose d'important à dire à ce moment là, par exemple "j'ai détecté un appel entrant", l'ordinateur ne l'entendra pas.. et comme le Minitel ne le répétera pas... on distingue dores et déjà un deuxième trou noir! Les aléas de la technique... mmmh...

Permettez moi de faire une parenthèse et de vous dire comment les américains on traité le problème. Vous savez déjà que chez eux, les voitures sont automatiques et qu'on n'y débraye pas avant de changer de vitesse. Eh bien, quand ils ont inventé le modem à plusieurs vitesses, ils ont continué dans cette voie. Prenez un modem compatible Hayes, branchez-le, réglez la vitesse de l'ordinateur à n'importe quelle vitesse, envoyez une commande AT quelconque, et hop, le modem à adopté la vitesse. Changez la vitesse de l'ordinateur, renvoyez une commande Hayes, hop le modem s'est adapté... "Trop puissant le protocole Hayes!" serait-on tenté de dire. M'enfin, revenons en au Minitel...

Le corollaire du problème, c'est que quand STUT ONE démarre, il n'a aucune idée de la vitesse actuelle du Minitel, et pourtant il doit s'aligner sur cette vitesse pour commencer à communiquer avec lui! Il a trois chances sur quatre de se planter. Voici donc la méthode utilisée pour obtenir un taux de réussite de 100%. STUT ONE passe la prise série de l'ATARI successivement aux vitesses de 9600 bps, 1200 bps et 300 bps. A chaque fois, on demande au Minitel de passer à 4800 bps. Soit le Minitel reconnaît la requête lors d'un des trois essais, soit il était déjà à 4800 bps. Ensuite on passe l'ordinateur à 4800 bps et là on est sûr d'être à la même vitesse que le Minitel. On peut maintenant continuer sur de bonnes bases.

LES BASES, PARLONS-EN DES BASES!

Maintenant que vous savez à peu près tout ce qui est nécessaire pour envoyer des caractères, commandes et autres séquences de codes au Minitel, il ne vous reste plus qu'à connaître la syntaxe desdites commandes.

Je vous ai dévoilé au début, comment passer en encre verte. Je suis conscient que ce n'est pas très palpitant, mais vous pourrez trouver pratiquement toutes les séquences de commande du Minitel rien qu'en fouinant dans le code source de STUT ONE. La procédure code_vdt() est particulièrement adaptée pour commencer vos recherches. En effet, c'est elle qui s'occupe de traduire les pages vidéotex composées en langage SOVI.

Maintenant, si vous voulez de la documentation officielle, sachez qu'elle existe. Ca s'appelle "Spécifications Techniques d'Utilisation du Minitel 1B" (STUM1B pour les intimes) et çà se commande au CNET (renseignements dans les agences France Télécom). Existe aussi en version STUM2, additif au STUM1B et décrivant les nouvelles fonctions du Minitel 2. On espère le STUM4 pour bientôt... Remarquez, on est pas encore sûr du nom, ce sera peut-être aussi STUM-TVR (Télétel Vitesse Rapide) STUM-Photo ou même STUM'95 (Si ils s'inspirent de Microsoft...)

Bon allez, je vous laisse tenter de dompter votre Minitel. Bon courage!