Simulation du 3615 M6 en BASIC

Vu sur m6

      La famille a remonter le temps

 

ExcluTélécharger les codes sources et les réutiliser : Hard disk type3615 M6

Exclu Photos du tournage pour la séquence Minitel : La famille à remonter le temps

 

Simulation du site Minitel 3615 M6 en GW-BASIC :

Mon but est de recréer un site Minitel avec une simulation des services qu'on pouvaient trouver sur les pages du type 3615 (Informations, chat, jeux,...)

Je vais refaire un site avec comme théme, la chaîne de télévision M6.

 

Vidéo du projet terminé :

Vidéo de l'utilisation sur M6  :

 


 

INDEX

Recherche d'informations sur la communication PC / MINITEL

Achat et réception du matériel de communication

Montage et premier test de communication

Recherche d'informations sur les codes GWBASIC pour Minitel

Recherche d'informations et utilisation du format de fichier vidéotex (.VDT)

Création d'un CHAT BOT et CHAT PC/MINITEL

Les premiers essais du site

MAJ : Etat d'avancement après 1 mois de développement

MAJ : Etat d'avancement après 1 mois et 2 semaines de développement

MAJ : Etat d'avancement après 1 mois et 3 semaines de développement

MAJ : Etat d'avancement après 2 mois de développement

Télécharger les codes sources et les réutiliser

Les liens d'autres projets Minitel

 


Haut

1) Recherche d'informations sur la communication PC / MINITEL :

Pour commencer, il me faut un moyen de communiquer avec le Minitel, pour ça je vais utiliser un adaptateur SERIE/TTL.

Le TTL est un signal électronique qui correspond à un "0" sur une tension électrique comprise entre 0 et 0,5v et de "1" sur une tension entre 2,4 et 5v.

Wikipedia sur le TTL : https://fr.wikipedia.org/wiki/Transistor-Transistor_logic

 

Une puce électronique est spécialement faite pour cette conversion, le "MAX232"

Max232 1  

Avec des entrées côté PC aux broches "R1IN" et "T2OUT" et des sorties côté Minitel, sur les broches "T2IN" et "R1OUT" (Adaptées via résistances), la conversation est possible dans les deux sens :

Max232 2

Les deux broches à utiliser en entrées et en sorties doivent être croisés, elles s’appellent "RX" et "TX".

La transmission sur le fils "TX" côté PC sera donc branchée sur la réception "RX" côté Minitel et inversement.

Tout ça se fait à travers la puce "MAX232", avec des signaux adaptés via des condensateurs et des résistances :

Max232 4

Le branchement côté PC se fait via la prise RS232 (DB-9) qui sert habituellement de port série aux anciens ordinateurs (COM1:, COM2:,..).

sur le schéma puis le tableau ci-dessous, on voit bien la broche de réception "RX" et celle d'émission "TX" pour ce type de prise :

Max232 5  

Pin SIG. Signal Name DTE (PC)
1 DCD Data Carrier Detect in
2 RXD Receive Data in
3 TXD Transmit Data out
4 DTR Data Terminal Ready out
5 GND Signal Ground -
6 DSR Data Set Ready in
7 RTS Request to Send out
8 CTS Clear to Send in
9 RI Ring Indicator in

 

Du côté Minitel, il faut une prise de type "DIN5" et d'angle "45°"si votre Minitel n'a pas cette prise à son dos ou/et n’a pas de touche "FNCT", vous pouvez vous arrêter là, car l'appareil n'est pas compatible pour une communication série :

Ttl 11

Ttl 12

 

 


Haut

2) Achat et réception du matériel de communication :

Pas besoin de commencer à faire des montages électroniques complexes, tous est disponibles à très petit prix sur EBAY.

(Si quand même vous voulez faire le montage, voici un site avec le circuit imprimé à reproduire : http://pafgadget.free.fr/bidouillages/minitel.htm )

 

J'ai opté pour ce montage-ci, la puce MAX232 est alimentée par un connecteur USB et des fils sont fournis, ce qui m'a coûté 10,37 Euros (Frais de port inclus).

Ttl 5

Pour la prise DIN du minitel, je l'ai achetée sur selectronic.com avec 15 mètres de fils à souder et une boite de gaine Thermos, le tout pour la sommes de 18 euros (Frais de port inclus).

Ttl 44

Ttl 45

Ttl 46

 

Réception :

Après quelques jours, j'ai bien reçus mes commandes, voici le circuit imprimé MAX232 :

Ttl 1   Ttl 3

Ttl 2

La prise DIN :

Ttl 51

 

 


Haut

3) Montage et premier test de communication :

Le montage du câble :

Ttl 20

Ttl 21

Le branchement côté DIN Minitel :

Ttl 22

Le branchement côté PC sur le port Série RS232 :

Ttl 23

L'alimentation du circuit via une prise USB :

Ttl 24

Maintenant que le câble est prêt, je vais tester la communication dans les deux sens via l'utilitaire intégré à Windows : "TERMINAL" (Windows 3.11), ou "HYPER TERIMINAL" (Windows 9x).

N'étant plus disponible sur les nouveaux OS, vous pouvez alors le télécharger ici : HyperterminalHyperterminal (143.95 Ko)

Ttl 25

Ttl 26

La configuration pour la communication avec le Minitel : Baud 1200, 7 bits de parité paire sans contrôle de flux et 1 bits de stop :

Ttl 27

Le test PC vers Minitel :

Ttl 29

Le test Minitel vers PC :

Ttl 28

Les touches appuyées sur le PC s'affichent sur le Minitel et inverssement, ça fonctionne !

 

 


Haut

4) Recherche d'informations sur les codes GWBASIC pour Minitel :

J'utilise le langage GW-BASIC de Microsoft car j'ai retrouvé un programme dans le "Science & vie Micro n°58" qui permettait de faire une bataille navale entre un PC et un Minitel.

Je n'avais pas fait de GW-BASIC depuis les années 80 mais ce language est très facile à comprendre, j'utilise le "User's Reference guide" pour la syntaxe des commandes : Gw basic user guideGw basic user guide (482.2 Ko)

 

Donc dans le code fournis par SVM, j'ai tout ce qu'il me faut pour faire une communication PC/MINITEL avec écriture et lecture :

Bataille navale en GWBASIC pour PC/MINITEL (SVM58) 1-4Bataille navale en GWBASIC pour PC/MINITEL (SVM58) 2-4Bataille navale en GWBASIC pour PC/MINITEL (SVM58) 3-4Bataille navale en GWBASIC pour PC/MINITEL (SVM58) 4-4

 

Découpage des parties intéressantes :

La dernière page est géniale car elle recense tous les codes d'affichages du Minitel et surtout les codes de réception des touches :

Ttl 6

La ligne 260 aussi, car elle montre comment ouvrir la connexion sur le port série du PC (ici COM1:) :

Ttl 7

Je ne vais utiliser que cette partie dans mon propre code :

Ttl 30

Je vais aussi récupérer la routine qui permet d'attendre le retour d'une touche du Minitel :

Ttl 8

Je l'ai réécrite dans ce format pour l'attente le retour d'une touche unique :

Ttl 32

3041 : Compteur Arrêt à 0

3042 : Tant que le compteur Arrêt est à 0 alors débute la boucle

3043 : Appel du sous-programme 3050

3047 : Fin de la boucle

====Sous-programme

3070 : Lecture des touches du Minitel

3071 : Pause de 1 seconde

3080 : Si le retour touche Minitel = La variable "TOUCHE" alors Arrêt = 1

3110 : Fin du sous-programme

Pour appeler cette fonction, il faudra définir la variable touche attendue et appeler la routine :

Ttl 36

Dans le tableau ci-dessus du magazine SVM, la valeur 72 correspond à la touche "Suite".

 

Maintenant pour un menu à plusieurs choix :

Ttl 33

3220 à 4260 : Identique au cas précédent, Tant que le compteur Arrêt est à 0 alors boucle sur le sous-programme.

====Sous-programme

4300 : Lecture des touches du Minitel

4301 : Pause d'une seconde

4310 : si la touche est 49 (Vaut 1) alors arrêt = 1

4320 : si la touche est 50 (Vaut 2) alors arrêt = 1

4330 : si la touche est 51 (Vaut 3) alors arrêt = 1

4340 : si la touche est 52 (Vaut 4) alors arrêt = 1

 

Après je peux appeler ma fonction et rediriger les retours des touches du Minitel, sur les sous-menus :

Ttl 37

 

Je continues à récupérer du code original, les lignes qui permettent d'écrire à un endroit précis sur le Minitel :

Ttl 10

Ttl 9

Je vais directement écrire chaque ligne sans GOSUB :

Ttl 52

Le premier chiffre souligné correspond à la ligne et le deuxième à la colonne.

L'écran du Minitel à 24 lignes et 40 Colonnes.

 

Pour tous ce qui est écriture en mode texte sur le Minitel, voici un tableau des possibilitées, les codes peuvent être combinés :

Les écritures
PRINT #1,CHR$(27)+CHR$(76)+"TEXTE" Écriture en taille normale
PRINT #1,CHR$(27)+CHR$(77)+"TEXTE" Écriture en double hauteur
PRINT #1,CHR$(27)+CHR$(78)+"TEXTE" Écriture en double largeur
PRINT #1,CHR$(27)+CHR$(79)+"TEXTE" Écriture en double taille
PRINT #1,CHR$(27)+CHR$(93)+"TEXTE" Écriture en blanc sur fond noir
PRINT #1,CHR$(27)+CHR$(92) Retour en texte blanc sur fond noir
PRINT #1,CHR$(27)+CHR$(72)+"TEXTE" Écriture en texte clignotant
PRINT #1,CHR$(27)+CHR$(73) Arrêter le clignotement
PRINT #1,CHR$(27)+CHR$(75) Début incrustation
PRINT #1,CHR$(27)+CHR$(74) Fin incrustation
PRINT #1,CHR$(27)+CHR$(88) Début masque ligne
PRINT #1,CHR$(27)+CHR$(95) Fin masque ligne
PRINT #1,CHR$(27)+CHR$(90) Début soulignement
PRINT #1,CHR$(27)+CHR$(89) Fin soulignement
PRINT#1,CHR$(26)+CHR$(27) Afficher un carré blanc
PRINT#1,CHR$(27)+CHR$(94) Transparence
Divers contrôles
PRINT #1,CHR$(7) Faire "Bipper" le Minitel
PRINT #1,CHR$(12) Effacement complet de l'écran
Contrôles du curseur
PRINT #1,CHR$(8) Curseur à gauche
PRINT #1,CHR$(9) Curseur à droite
PRINT #1,CHR$(10) Curseur en bas
PRINT #1,CHR$(11) Curseur en haut
PRINT #1,CHR$(13) Retour chariot
PRINT #1,CHR$(17) Curseur visible
PRINT #1,CHR$(20) Curseur invisible
Les Couleurs
PRINT #1,CHR$(27)+CHR$(71)+"TEXTE" Couleur du texte blanc
PRINT #1,CHR$(27)+CHR$(70)+"TEXTE" Couleur du texte cyan
PRINT #1,CHR$(27)+CHR$(69)+"TEXTE" Couleur du texte magenta
PRINT #1,CHR$(27)+CHR$(68)+"TEXTE" Couleur du texte bleu
PRINT #1,CHR$(27)+CHR$(67)+"TEXTE" Couleur du texte jaune
PRINT #1,CHR$(27)+CHR$(66)+"TEXTE" Couleur du texte vert
PRINT #1,CHR$(27)+CHR$(65)+"TEXTE" Couleur du texte rouge
PRINT #1,CHR$(27)+CHR$(64)+"TEXTE" Couleur du texte noir
PRINT #1,CHR$(27)+CHR$(87)+" TEXTE" Couleur de fond blanc (espace avant texte)
PRINT #1,CHR$(27)+CHR$(86)+" TEXTE" Couleur de fond cyan (espace avant texte)
PRINT #1,CHR$(27)+CHR$(85)+" TEXTE" Couleur de fond magenta (espace avant texte)
PRINT #1,CHR$(27)+CHR$(84)+" TEXTE" Couleur de fond bleu (espace avant texte)
PRINT #1,CHR$(27)+CHR$(83)+" TEXTE" Couleur de fond jaune (espace avant texte)
PRINT #1,CHR$(27)+CHR$(82)+" TEXTE" Couleur de fond vert (espace avant texte)
PRINT #1,CHR$(27)+CHR$(81)+" TEXTE" Couleur de fond rouge (espace avant texte)
PRINT #1,CHR$(27)+CHR$(80)+" TEXTE" Couleur de fond noir (espace avant texte)
Les accents
PRINT #1,CHR$(25)+CHR$(67)+CHR$(101) E Accent circonflexe
PRINT #1,CHR$(25)+CHR$(72)+CHR$(101) E Trema
PRINT #1,CHR$(25)+CHR$(67)+CHR$(105) I Accent circonflexe
PRINT #1,CHR$(25)+CHR$(72)+CHR$(105) I Trema
PRINT #1,CHR$(25)+CHR$(66)+CHR$(101) E Accent aigu
PRINT #1,CHR$(25)+CHR$(65)+CHR$(101) E Accent grave
PRINT #1,CHR$(25)+CHR$(65)+CHR$(97) A Accent

Voici un fichier qui référence tous les codes possibles :

Codes_Minitel.txt

 

Pour les couleurs (Dégradé de gris en Monochrome), voici un programme qui affiche tous les cas possibles sur l'acran du Minitel : couleurs.bas

Site minitel 1

 

Maintenant pour les affichages Graphiques (Mode Vidéotex), voici un programme qui affiche tous les cas possibles sur l'écran du Minitel : videotex.bas

 

Pour le mode Vidéotex, le code commence par : PRINT#1,CHR$(14)+"caractère du tableau ci-dessous"

Videotxt minitel

Pour revenir au mode texte standard, il faut envoyer un PRINT#1,CHR$(15) au Minitel

 

Voici quelques exemples pour faire des tableaux :

PRINT #1,CHR$(31)+CHR$(1+64)+CHR$(1+64)+CHR$(14)+"7#####k"
PRINT #1,CHR$(31)+CHR$(2+64)+CHR$(1+64)+CHR$(14)+"5     j"
PRINT #1,CHR$(31)+CHR$(3+64)+CHR$(1+64)+CHR$(14)+"5     j"
PRINT #1,CHR$(31)+CHR$(4+64)+CHR$(1+64)+CHR$(14)+"5     j"
PRINT #1,CHR$(31)+CHR$(5+64)+CHR$(1+64)+CHR$(14)+"5     j"
PRINT #1,CHR$(31)+CHR$(6+64)+CHR$(1+64)+CHR$(14)+"5     j"
PRINT #1,CHR$(31)+CHR$(7+64)+CHR$(1+64)+CHR$(14)+"-,,,,,."

Affiche un carré
PRINT #1,CHR$(31)+CHR$(1+64)+CHR$(1+64)+CHR$(14)+"7#####k"
PRINT #1,CHR$(31)+CHR$(2+64)+CHR$(1+64)+CHR$(14)+"5     j"
PRINT #1,CHR$(31)+CHR$(3+64)+CHR$(1+64)+CHR$(14)+"5     j"
PRINT #1,CHR$(31)+CHR$(4+64)+CHR$(1+64)+CHR$(14)+"=,,,,,n"
PRINT #1,CHR$(31)+CHR$(5+64)+CHR$(1+64)+CHR$(14)+"5     j"
PRINT #1,CHR$(31)+CHR$(6+64)+CHR$(1+64)+CHR$(14)+"5     j"
PRINT #1,CHR$(31)+CHR$(7+64)+CHR$(1+64)+CHR$(14)+"-,,,,,."

Affiche un carré avec

une barre au horizontale

PRINT #1,CHR$(31)+CHR$(1+64)+CHR$(1+64)+CHR$(14)+"7###7###k"
PRINT #1,CHR$(31)+CHR$(2+64)+CHR$(1+64)+CHR$(14)+"5   5   j"
PRINT #1,CHR$(31)+CHR$(3+64)+CHR$(1+64)+CHR$(14)+"5   5   j"
PRINT #1,CHR$(31)+CHR$(4+64)+CHR$(1+64)+CHR$(14)+"5   5   j"
PRINT #1,CHR$(31)+CHR$(5+64)+CHR$(1+64)+CHR$(14)+"5   5   j"
PRINT #1,CHR$(31)+CHR$(6+64)+CHR$(1+64)+CHR$(14)+"5   5   j"
PRINT #1,CHR$(31)+CHR$(7+64)+CHR$(1+64)+CHR$(14)+"-,,,-,,,."

Affiche un carré avec

une barre au verticale

 

 


Haut

5) Recherche d'informations et utilisation du format de fichier vidéotex (.VDT) :

Une autre chose que j'ai pu trouver sur Internet et la sauvegarde d'écran Minitel dans des fichiers aux formats "Vidéotex".

Apparemment ce format était utilisé par des programmes de capture d’écrans Minitel ainsi que pour les émulateurs Minitel sur PC.

J'ai pu retrouver sur Internet quelques captures au format VDT, mon idée et d'essayer de réinjecter ce fichier, directement sur le Minitel.

Ce qui me permettra de ne pas avoir à recréer des pages caractère par caractère, en code GW-BASIC.

 

Voici quelques captures au format ".VDT" trouvées sur Internet (J'utilise VTEX pour afficher les pages sur un ordinateur récent via l'émulateur DOS DOSBOX) :

Ttl 40

Ttl 42

Ttl 43

J'ai regroupé tous les VDT disponibles sur Internet dans ce pack : Pack vdtPack vdt (1.01 Mo)

 

J'ai donc écris la routine GW-BASIC suivante, qui va lire ce fichier .VDT ligne par ligne et l'envoyer sur le Minitel :

Ttl 31

2001 : Ouverture du fichier défini dans la variable "VDT"

2010 : Tant que ce n'est pas la fin du fichier > Début de la boucle

2015 : Lit la ligne courante du fichier

2030 : Affiche la ligne courante du fichier sur le Minitel

2040 : Fin de la boucle

2045 : Si fin du fichier alors fermeture du fichier

 

Il suffira à chaque fois de donner le nom du fichier à lire et appeler cette routine :

Ttl 38

Pour modeler les fichiers .VDT à ma façon, je les ouvres via un éditeur texte et change ou efface les textes d'origines :

Ttl 50

 

Voici mon premier menu avec à gauche le VDT d'origine et à droite, le résultat après modification :

Menu m6 org Menu m6

 

Maintenant le plus intéressant avec ce format VDT est l'utilitaire DOS "PCX2VDT", il permet comme son nom l'indique, de convertir des photos au format PCX, directement en format vidéotex !

Le site du développeur : http://logicos.free.fr/oeuvres.html#pcx2vdt

 

Pour une conversion, il faut trouver une image au format GIF sur Internet et la convertir au format PCX.

Pour cela, j'utilise IRFANVIEW. (Si l'image n'est pas au format GIF, il faudra la convertir avant en ce format puis faire une converssion en PCX, sinon le programme PCX2VDT ne fonctionne pas.)

Aussi, il faudra passer des paramètres d'emplacements dans la commande de conversion, pour un affichage parfait sur le Minitel.

 

Extrait de la documentation :

  /M=      Destination sur minitel:
           ------------------------
           Cette option permet de définir la zone d'écriture sur
           minitel.

           Syntaxe complète:
             /M=colonne,ligne,nombre_colonnes,nombre_lignes

                     colonne
                     |
               ligne-+-----------------+ <-+
                     |                 |   |
                     |   destination   |   |
                     |       sur       |   |-nombre_lignes
                     |     minitel     |   |
                     |                 |   |
                     +-----------------+ <-+
                     ^                 ^
                     |                 |
                     +-----------------+
                       nombre_colonnes

           "colonne" : le numéro de colonne entre 0 et 39
                       (par défaut: 0)
           "ligne"   : le numéro de la ligne entre 0 et 24.
                       (par défaut: 1, la ligne 0 etant spéciale)
           "nombre_colonnes" : entre "1" et "40"
                               (par défaut, c'est le maximum possible)
           "nombre_ligne" : a partir de "1" ...
                            (par défaut: "24")

           La ligne 0 est spéciale, car elle est en marge du reste de
           l'écran. Mais elle peut être utilisée.

           Le nombre de lignes n'est pas limité à la place disponible
           sur l'écran: lorsque le nombre de lignes demandées depasse
           la capacité de l'écran, les mécanismes de "rouleau" sont mis
           en œuvre.  (voir aussi l'option "/R").

 

Exemple pour un affichage de l'image sur l'écran complet du Minitel (40 colonnes / 24 lignes):

PCX2VDT IMAGE.PCX /M=1,1,39,23

 

Le problème est qu'il faut trouver les bonnes valeurs suivant la taille de l'image PCX, pour ne pas avoir une déformation sur l'écran du Minitel (Parfois il faut faire beaucoup d'essais).

 

Côté Gw-basic, voici mon code de test pour afficher sur le Minitel, l'image .VDT présente sur une disquette (A:\) :

Vdt2min

 

Voici un premier essai avec une image venant d'Internet, sa conversion puis son affichage :

 

 


Haut

6) Création d'un CHAT BOT et CHAT PC/MINITEL :

Pour alimenter ce site, je vais mettre en place un robot qui va pouvoir discuter avec l'utilisateur côté Minitel.

Pour cela, je suis parti d'un code GWBASIC trouvé sur Internet : ELIZA CHATBOT.

 

Explications des scripts :

Pour faire interagir le programme Eliza avec le Minitel, je suis passé par un système de fichier :

Sans titre 1

J'ai mis le script Eliza trouvé sur Internet dans "Eliza.bas", il va servir de "base de donnée" (Le cerveau d'Eliza).

Je vais l'alimenter plus tard car ce programme source est très basique, il ne fait que répondre aux questions par d'autres questions.

 

Le programme "chatbot.bas" va servir au formatage de la question venant du Minitel et son envoi à "Eliza.bas".

La question qui vient donc de l'utilisateur du Minitel, sera écrite dans le fichier "chat_min.dat", le retour d'Eliza dans le fichier "chat_eli.dat"

Je vais utiliser une boucle qui va enregistrer chaque lettres tapées sur le Minitel, jusqu'au moment ou la touche ENVOI est appuyée.

Chatbot 1

1010 : Ouverture du fichier question à Eliza : chat_min.dat

1030-1040 : Tant que la variable ARRET est égal à 0 > Boucle sur le sous-programme 2000

1050-1070 : fin de la boucle et sort du programme vers la ligne 500

===Sous Programme

2000 : Lecture des touches appuyées sur le Minitel et met dans la variable MIN$

2007 : Si la touche Minitel n'est pas égal à 19 > Va à la ligne 2010 (Toute les touches qui commencent à la valeur 19 sont des touches du type : "sommaire / envoi / retour / ..." voir tableau SVM)

2008 : Si la touche à la valeur 19+65 (=ENVOI) > Va au programme en ligne 6500 (formatage du texte sur une ligne pour Eliza).

2009 : Si la touche à la valeur 19+70 (=SOMMAIRE) > Va à la ligne 7000 (sortie du programme).

2020-2030 : Écriture dans le fichier chat_eli.dat et retourne au début de la boucle.

===Affichage Minitel

1045 et 2001 : La ligne 1045 permet d'afficher sur l'écran du Minitel la touche appuyée par l'utilisateur.

La ligne 2001, augmente la valeur de la colonne pour écrire ce que tape l'utilisateur sur l'écran du Minitel, sinon les lettres sont écrites les unes sur les autres.

 

Une fois la touche "ENVOI" appuyée, le programme continue et va transformer le fichier "chat_min.dat" de façons à recoller toutes les lettres, ce qui va reconstruire la phrase.

Exemple :

B

O

N

J

O

U

R

ENVOI

BONJOUR

 

Chatbot 2

6500-6504 : Ouverture du fichier question à Eliza : chat_min.dat, lecture ligne par ligne, tant que ce n'est pas la fin du fichier > écrit chaque ligne dans la variable TEXT$

6505-6507 : Écriture de la variable TEXT$ (Tout les caractères tapés sur le Minitel) dans le fichier question à Eliza : chat_min.dat

6510 : Lance le programme : ELIZA.BAS

 

Le programme "eliza.bas" ayant pris maintenant le relais, il va lire le fichier question "chat_min.dat"trouver la réponse adéquate, l'écrire dans le fichier "chat_eli.dat" et pour finir, relire ce fichier pour afficher la réponse sur le Minitel.

Eliza 10

191-194 : Ouverture du fichier question à Eliza : chat_min.dat, lecture ligne par ligne, tant que ce n'est pas la fin du fichier écrit chaque ligne dans la variable I$

195 : Affichage à l'écran de la variable I$ (Question posée à Eliza)

Eliza 12

3031-3034 : Ouverture du fichier contenant la réponse d'Eliza : chat_eli.dat, le contenu est mis dans la variable CURLINES$

3035-3027 : Ouverture d'une connexion sur le Minitel pour afficher la réponse présente dans la variable CURLINES$

3038 : Sortie vers le menu sommaire en cas de question non appropriées (Insultes, gros mots) > Variable PASOK=1

3040 : Retour au programme de gestion entrées/sorties chatbot.bas pour la prochaine question.

 

Le système de correspondance entre la question et l'écriture de la réponse dans le fichier "chat_eli.dat" :

Si la réponse vient de la première partie du programme que je n'ai pas touché (variable "F$"), elle est directement écrite dans le fichier :

Eliza 13

Par contre j'ai ajouté un GOSUB très important à la ligne 231, qui va permettre d'ajouter des centaines d'autres cas possibles de questions-réponses :

Eliza 14

Donc à partir de la ligne 10000, les nouveaux cas fonctionnent de cette façons :

En rouge : La question sur X caractères, tout ce qui à avant et après n'est pas pris en compte.

En vert : Si la question n'est pas équivalente au cas possible sur X caractères, passage au cas suivant.

En Jaune : La réponse d'Eliza dans la variable "ELIZA$"

En bleu : Lancement du programme d'écriture de la réponse d'Eliza dans le fichier "chat_eli.dat" puis sortie

Eliza 16

Le sous-programme d'écriture de la variable "ELIZA$" dans le fichier "chat_eli.dat" :

Eliza 17

La vidéo du chat Elisa en fonctionnement :

 

 Ajout d'un chat humain :

Maintenant qu'Eliza fonctionne bien, j'aimerais aussi une communication entre deux humains via l'ordinateur et le Minitel.

Pour cela, j'ai ajouté au lancement de la page Eliza, un choix à faire sur le PC

Le code :

Chathum 1

Donc, quand la personne sur le Minitel va demander un chat, il faudra soit lancer le robot Eliza (choix 1 : chatbot.bas), soit lancer le chat humain (choix 2 : chathum.bas).

Le nouveau programme chathum.bas est une copie de celui pour Eliza.

Au lieu de passer par le fichier Eliza.bas qui donne une réponsse à la question, le texte tapé sur l'ordinateur est directement écrit dans le fichier retour à afficher sur le Minitel : Chat_eli.dat.

 

Le code ajouté à la place du passage vers Eliza.bas :

Chathum 2

La vidéo du chat Humain en fonctionnement :

 


Haut

7) Les premiers essais du site :

A ce niveau après 3 semaines de développement, j'ai créé :

- Une page de garde au lancement du site.

- Une page sur l'annimateur "Nagui" avec un système d'écriture / lecture des messages.

- Une page d'info sur le clip de la semaine.

- Un premier jeu

- Un chat Bot

 

Voici la vidéo de tout ça en fonctionnement :

 

 


Haut

8) MAJ : Etat d'avancement après 1 mois de développement :

A ce stade, j'ai pas mal avancé en codant une heure par jour pendant 2 semaines, j'ai pu finaliser la partie jeux avec 3 nouveaux programmes :

- Un Quizz sur la chaine avec des questions se situants dans l'année 1987.

Pour ce jeu, j'ai recupéré des informations sur les débuts de la chaine M6 en 1987, grace au livre "M6 Story : la saga de la chaîne en trop" : Disponible ici sur Google Books

 

- Un jeu de mines avec un système de déplacement à l'aveugle sur 3 tableaux.

(Je me suis basé sur rien pour ce jeu, j'ai tout codé à la volée un soir d'inspiration)

 

- Un jeu du style morpion, basé sur un code trouvé dans le magazine "Science & Vie junior N°20 & 21" :

Puce Spécial PC MINITEL (SCIENCE & VIE JUNIOR20) 1-3Puce Spécial PC MINITEL (SCIENCE & VIE JUNIOR20) 2-3Puce Spécial PC MINITEL (SCIENCE & VIE JUNIOR20) 3-3

Puce Spécial PC MINITEL (SCIENCE & VIE JUNIOR21) 1-3Puce Spécial PC MINITEL (SCIENCE & VIE JUNIOR21) 2-3Puce Spécial PC MINITEL (SCIENCE & VIE JUNIOR20) 3-3

 

Donc cette partie est terminée avec ses 4 jeux.

Aussi j'ai changé le menu principal pour y mettre le choix "Programmes de la chaine", il va pointer sur le code que je suis en train de développer pour afficher une grilles des programmes de 1987.

 


Haut

9) MAJ : Etat d'avancement après 1 mois et 2 semaines de développement :

J'ai passé beaucoup de temps pour la partie "Grilles des programmes", déjà car il à fallu faire quelques recherches sur des vielles émissions de la chaine.

Je me suis basé sur des copies d'anciens programmes TV de 1987 du site "Fan2TV" : http://www.fan2tv.com/france/news1153.php

Et Wikipedia ou Google pour retrouver à quoi correspondent ces vielles émissions, films ou séries.

 

Aussi le code était très difficile à faire, le GW-BASIC ne pouvant pas utiliser de bases de données, je suis passé par un gros fichier avec toutes les informations de la grille des progammes sur une semaine :

Progm6

En plus avec la limitation à 64K de mémoire du language, j'avais à chaque fois des "Out of Memory" après quelques consulations d'informations sur des émissions.

Pour contourner le problème, j'ai du passer par une écriture des variables dans un fichier tampon, une purge "CLEAR" mémoire, un "RUN" au lieu de "GOTO" vers des lignes qui recharges ensuite les variables écrites dans le fichier...

Sans compter le système de menu abécédaire, le retour vers la page 1 ou 2 de la grilles, le passage d'un jour à l'autre,....en fait pour aller très vite j'aurais du écrire en dur toutes les informations de la grilles directement dans le code.

Mais pour un programmeur.. cela n'est pas acceptable :)

 

Donc une vraie galère mais voici le résultat final :

 


Haut

10) MAJ : Etat d'avancement après 1 mois et 3 semaines de développement :

Le dernier choix du menu pour Nagui, j'y ai développé un système de vote pour une liste de 10 clips.

J'ai choisis quelques noms d'artistes sur ce site : http://www.chartsinfrance.net/charts/8712/singles.php

 

- La première partie du programme permet de calculer et afficher un pourcentage de votes via un fichier texte.

- La deuxième partie permet d'afficher la liste des clips et d'incrémenter un compteur (Nombres de votes) via ce même fichier.

 

 


Haut

11) MAJ : Etat d'avancement après 2 mois de développement :

Un nouveau menu terminé pour un autre animateur des débuts de la chaine : Dominique Chapatte.

Pour cet animateur et son émission TURBO, j'ai pris comme sujet un événement automobile important de l'année 1987 : Les 24 Heures du Mans

 

Voila, j'ai terminé mon objectif d'avoir un site complêt, une dernière étape est la correction orthographique, la recherche des derniers "bugs" et la mise en place des accents.

Pour ce dernier point, j'ai refais un tour dans chacuns des mes scrips en remplaçant les endroits où il fallait un "é", "è" ou "à" par les lignes de codes données dans le tableau ci-dessus.

 

Exemple :

Chathum 3

En rouge : Des "é".

En vert : Un "à".

 

 


Haut

12) Télécharger les codes sources et les réutiliser :

Maintenant si vous voulez aussi faire revivre votre Minitel et montrer aux plus jeunes ce qu'on pouvait trouver sur les pages 3615, voici mon développement en téléchargement :

3615m63615m6 (132.5 Ko) Password de décompression : legrenierinformatique

 

Pour installer et lancer le site :

  • Créer un dossier "C:\MINITEL" sur votre ordinateur.
  • Décompacter le fichier ZIP du site dans ce dossier.
  • Brancher le Minitel sur le port série de l'ordinateur.
  • Désactiver l'écho local sur le Minitel avec la combinaison de touche "Fnct" + "T", lacher puis appuyer sur la touche "E"
  • Sous MS-DOS, à partir du dossier C:\MINITEL, lancer la commande 3615M6.

 


Haut

13) Les liens d'autres projets Minitel :

Voici quelques projets trouvés sur Internet qui me semble intéréssants pour réutiliser un Minitel :

 

Un Minitel sous Android :

http://www.nextinpact.com/news/76169-insolite-un-minitel-reprend-vie-sous-ice-cream-sandwich-android-4-0.htm

 

Transformer un Minitel en TV :

http://www.cfp-radio.com/realisations/rea48/minitel-01.html


http://jla.1313-blog.overblog.com/recyclage-d-un-minitel-9-en-moniteur-b/w

 

Minitel en terminal Linux :

http://furrtek.free.fr/?a=telinux

 

Webcam sur Minitel :

http://wiki.labomedia.org/index.php/Processing_vs_Arduino_vs_Minitel

Commentaires (2)

1. Alexandre Branlard 21/11/2018

j'ai un problème d'affichage sur le minitel, le flux n'apparait pas correctement
que désignent les valeurs soulignées dans "CLOSE:OPEN "com1:9600,e,7,1,cs,ds,cd" AS #1"

merci d'avance.

2. Lemaire 15/01/2018

Bonjour
Merci pour ce beau travail.Et pour votre site très intéressant (cela me rappelle bien des souvenirs heureux...)
Je vais essayer ce montage pour montrer à mes petits enfants ce dont nous disposions comme outil dans les années 1980.
Mais je suis(quasiment) ignare en électronique.
D'ou ma question (bien que le site pif gadget semble indiquer la piste) :
Sur quels "pins" de la prise Din ( male) et branche t on les fils et ensuite sur quels pins de la carte max232 fait on la jonction ?
D'avance merci pour la réponse.

Ajouter un commentaire