|
|||||||||||||||
|
Le but de cette page est de présenter les résultats de l'étude technique du Minitel que j'ai réalisé il y a quelques années.
Mais pourquoi faire le reverse engineering du Minitel, objet complètement démodé, aux capacités apparemment très limitées ?
En fait cela vient d'un pari technique : Remplacer le logiciel interne du Minitel pour en démontrer les réelles capacités graphiques.
Beaucoup d'objets informatiques des années 80/90 ont leurs démos, mais sur Minitel cela n'a jamais été fait auparavant.
La grande diffusion de ce terminal en France mérite que l'on s'intéresse un peu à lui ;-)
Le sujet d'étude est un Minitel 2, appareil à l'origine destiné à la déchetterie.
En retirant le capot arrière du Minitel voici ce qu'il y a en interne :
Il y a principalement 2 cartes : La carte latérale est la carte du moniteur CRT du Minitel.
Cette dernière contient également la partie alimentation de l'ensemble.
Attention : La ventouse blanche à droite sur le tube cathodique est la connexion haute tension. J'ai mesurée la tension délivrée à via cette connexion avec une sonde haute tension prévue pour. Le voltage est ici de 12000 Volts !
La carte d'alimentation présente également des tensions de plusieurs centaines de volts... Donc Attention - c'est à manipuler avec précautions !
Commençons par une mesure de sa consommation au wattmètre, en comparant d'autres Minitels :
Mesures faites avec une tension secteur de 238,5 Volts
Modèle | Veille (En watts) | Fonctionnement (En watts) | Facteur de puissance |
---|---|---|---|
Minitel 2 RTIC NFZ 400 | 7 Watts | 20 Watts | 0,59 |
Minitel 1 RTIC NFZ 330 | - | 18 Watts | 0,59 |
Minitel 1 "R 722 680 C" TELIC ALCATEL | - | 19 Watts | 0,61 |
Minitel Magis Philips | 5 Watts | 11 Watts | 0,57 |
La carte en position horizontale est la carte processeur du Minitel qui est en fait le "cerveau" du Minitel.
Ci-dessus la carte mère du Minitel 2. On peut y repérer les composants principaux :
L'unité centrale du Minitel 2 : Un microcontrôleur 80C32. Il s'agit en fait de la version ROMless du microcontrôleur 80C51. Ce microcontrôleur est cadencé par la partie vidéo à 14,31818 MHz. En termes de puissance de calcul sachant qu'il faut au minimum 12 cycles d'horloges pour une instruction, cela tourne autour de 1 MIPS.
Ce microcontrôleur contient 256 octets de RAM en interne.
Le petit circuit en dessous est une EEPROM I2C de 256 octets (24C02) contenant l'annuaire de l'utilisateur ainsi que le mot de passe de protection du Minitel.
L'EPROM contenant le logiciel du Minitel. Ce chip est sur support pour une éventuelle mise à jour.
Il s'agit d'une 87C257, une EPROM de 256 Kbits (32 Ko).
La différence majeure avec une classique 27C256 est qu'elle est capable de se connecter directement au bus multiplexé du 80C32 sans latch externe (le latch LS373 est intégré).
Note : Vous avez remarqué que le socket est plus grand que l'EPROM. Il s'agit en fait d'un port d'extension ! En effet le hardware du Minitel 2 a été utilisé comme base pour d'autres terminaux à l'international pour des usages différents.
On peut citer entre autres le "Philips NMS 6302 00B Viewdata Banking Terminal" qui possède à la place de cette EPROM une petite carte d'extension avec une EPROM classique de 32 Ko (27C256), une RAM de 8 Ko et un latch utilisé comme démultiplexeur.
Voici quelques photos des cartes de ce variant du Minitel 2 RTIC :
Philips_NMS_6302_main_board.jpg
Philips_NMS_6302_memory_board_top.jpg
Philips_NMS_6302_memory_board_bottom.jpg
La partie vidéo du Minitel est la partie la plus intéressante.
Le TS9347 est un composant vidéo capable d'afficher du texte Alpha-Numérique.
Le composant en question gère directement 8 Ko de DRAM (théoriquement extensible jusqu'à 32 Ko).
Il est possible de définir ses propres tables de caractères, d'où le nom "Semi-Graphic Display Processor".
Le microcontrôleur n'a pas d'accès direct à cette mémoire, mais il peut envoyer des commandes de lectures/écriture via le processeur graphique.
L'horloge issue de l'oscillateur du processeur graphique cadencée à 14,31818 MHz est également utilisée par le microcontrôleur 80C32.
Datasheet du TS9347CP
Datasheet de la uPD4168C
La partie modem, composée d'un TS7514CP, un
modem V.23 (modulation/démodulation en FSK à 1200/75 baud ou 75/1200
baud) .
Ce dernier est également connecté à un haut parleur interne
au Minitel et est capable de générer les fréquences
DTMF 697 Hz, 770 Hz, 852 Hz, 941 Hz, 1209 Hz, 1336 Hz, 1477 Hz, 1633 Hz ainsi que
les fréquences de modulation 390 Hz, 450 Hz, 1300 Hz et 2100 Hz.
Il ne reste plus qu'à composer quelque chose avec ça ;).
Datasheet du TS7514CP
Note d'appplication du TS7514CP
Le clavier est une classique matrice de contacts. Voici l'interconnexion interne :
Et voici la matrice du clavier :
Le CRT utilisé dans cette unité est un tube de 9 pouces Samsung 240AG4. Voici quelques caractéristiques électriques que j'ai pu mesurer :
Bobine de déflexion horizontale : Résistance : 0,87 Ohms, Valeur : 476 uH, courant min-max : -1,5 Ampère - +1,5 Ampère (Image du courant ci-dessous : 1 Volt = 1 Ampère)
Bobine de déflexion verticale : Résistance : 39,5 Ohms, Valeur : 72000 uH, courant min-max : -0,125 Ampère - +0,125 Ampère (Image du courant ci-dessous : 1 Volt = 1 Ampère)
Filament (Broche 3 + 4) : Résistance (à froid) 20,5 Ohms, Tension efficace : 10,5 Volts
grille k, Vidéo/Contrôle (Broche 2) : Noir : 46 Volts, Blanc 17,6 Volts, Premier gris 36,4 Volts.
grille g1 (Broche 1 + 5), Luminance : -74 Volts (Tension stable/continue)
grille g2 (Broche 6), "Screen voltage" : 246 Volts (Tension stable/continue)
grille g4 (Broche 7), Focus : 144 Volts
grilles g5, g3 (connexion "Ventouse") : Tension THT du tube : 12000 Volts.
Note : Les tensions mesurées ci-dessus peuvent varier selon les réglages et le type de carte CRT.
Ce tube est compatible électriquement et mécaniquement avec le Philips M24-514W, que l'on retrouve également dans certains Minitels.
Ci-dessous un brouillon du schéma du Minitel 2. À noter qu'il y a uniquement les interconnexions "numériques". Les parties vidéo et modem sont, à ce jour, manquantes.
Et voici les définitions du plan mémoire et des interconnexions du 80C32 :
0x2000 : Registre de contrôle modem / CRT / Relais :
#define HW_CTRL_MCBC 0x01
#define HW_CTRL_MODDTMF 0x02
#define HW_CTRL_CTRON 0x08
#define HW_CTRL_OPTO 0x10
#define HW_CTRL_LINERELAY 0x20
0x4000 : Chip video TS9347.
Connexion modem :
#define RXD_MODEM P3_3 // Modem -> CPU
#define RTS_MODEM P1_4 // CPU -> Modem
#define TXD_MODEM P1_3 // CPU -> Modem
#define PRD_MODEM P1_2 // CPU -> Modem
#define DCD_MODEM P1_1 // Modem -> CPU
#define ZCO_MODEM P3_2 // Modem -> CPU
Connexion clavier :
#define SERIN_KEYB P1_0 // Shifter clavier -> CPU
#define LOAD_KEYB P1_5 // CPU -> Shifter clavier
Connexion EPROM :
#define EPROM_SCL P1_6 // 24C02 EPROM SCL
#define EPROM_SDA P1_7 // 24C02 EPROM SDA
Connexion prise péri-informatique :
#define SER_RXD P3_0 // RX
#define SER_RXD P3_1 // TX
#define SER_RDY P3_5 // Ready
Bon et après ? Que peut-on faire avec cela ?
Une fois que les composants sont identifiés et que l'architecture générale du Minitel est bien comprise, il est maintenant possible de le programmer.
Le microprocesseur étant basé sur un cœur de 80C51, j'ai simplement utilisé SDCC :
À l'aide de ce compilateur, j'ai pu réaliser différents tests de différentes routines d'affichage (2D et 3D) afin de déterminer les capacités de la machine. En voici quelques exemples en images :
Pas mal pour un Minitel ;)
Au passage voici le dump de l'EPROM d'origine contenant le firmware de cette machine : Minitel_ROMs.zip
(L'archive contient les versions BV4 et BV9 du Minitel 2/NFZ400 ainsi que la version BU3 du Minitel 1/NFZ330)
Bientôt plus de détails !
30 Avril 2017 :
J'ai ajouté le support de l'émulation hardware du Minitel 2 dans MAME :
MAME avec le support de l'émulation hardware du Minitel
L'archive contient MAME ainsi que la ROM d'origine et celle de la démo avec différents effets graphiques 2D et 3D.
Donc maintenant les ROMs alternatives peuvent être écrites et testées sans forcement avoir le matériel.
À noter que les sources de la démo sont disponibles sur GitHub :
https://github.com/jfdelnero/minitel/tree/master/minitel2/the_minitel_demo
L'ensemble se compile avec SDCC.
Présentation faite à la Classic Computing 2015 à Thionville le 3/10/2015 : Presentation_Etude_Minitel_2_FR_DE.pdf
15/04/2011
Ci-dessous quelques autres dossiers :
Le Philips Telematico NMS3000
Matra Télétel 3V
RTIC Minitel9 NFZ330
TELIC Alcatel R 722 680 C
Minitel Magis (Philips)
Minitel Magis Club (Alcatel)
Voici une étude faite sur un aspect très différent du précédent. Ici, nous allons plutôt nous intéresser à la voie de communication principale du Minitel, à savoir comment il communique avec un serveur via la ligne téléphonique.
Le développement des outils et analyses présentés ici ont été motivés par les besoins techniques nécessaires des projets de préservations et d'expositions des associations La Ludothèque Française et MO5.COM courant des années 2020..
Le Minitel utilise un modem V.23 capable de communiquer via la ligne téléphonique à 1200 baud en réception et 75 baud en transmission.
Le standard V.23 définis une simple liaison série modulée en fréquence (FSK). Pour la réception à 1200 Baud, l'état haut de la liaison série est modulée par sinus à 1300 Hz et l'état bas à 2100 Hz.
Le format série utilisé est compatible RS-232. Un mot est composé d'un bit de Start, 7 bits de données, d'un bit de parité paire un bit de stop.
Ci-dessous vous pouvez voir comment l'information est encodée puis modulée.
On peut y voir la relation entre l'état de la ligne série et la fréquence émise sur la ligne téléphonique.
Ci-dessous, vous pouvez voir à quoi ressemble cette modulation à l'oscilloscope et à l'analyseur de spectre :
Pour la transmission vers le serveur, c'est exactement le même principe, avec des fréquences de modulation différentes : état haut à 390 Hz et état bas à 450 Hz.
Les liaisons montante et descendante utilisent ainsi des plages de fréquences différentes. Cela permet ainsi une communication bidirectionnelle en "full duplex".
On peut voir à l'analyser de spectre les liaisons montante et descendante, chacune utilisant une plage différente du spectre disponible sur la ligne téléphonique (300 Hz - 3,4 kHz).
Vous pouvez écouter ce que ça donne au niveau sonore avec les 2 pages Minitel ci-dessous sous forme d'un fichier audio :
Au repos, la ligne téléphonique présente une tension continue autour de 48 V (44 V - 55 V) et possède normalement une impédance de ligne autour de 600 ohms.
Lorsqu'un appareil prend la ligne (téléphone, modem, Minitel...), il tire un courant de quelques dizaines de milliampères pour s'alimenter. Les spécifications imposent un courant entre 30 mA et 50 mA en France.
La tension chute alors autour des 15 V / 20 V et cela permet au commutateur téléphonique de détecter la prise de ligne.
Une fois la ligne décrochée, la conversation des interlocuteurs est modulée en amplitude en superposition de la tension continue d'alimentation. L'amplitude maximum de cette modulation se situe entre 1,5 V et 5 V.
Pour la numérotation il y a 2 générations :
- La numérotation par impulsions, datant de l'époque des téléphones à cadran.
Il s'agit d'un train d'impulsions composé d'interruptions et de reprises de courant : Circuit fermé pendant 33.3 ms et 66.6 ms en circuit ouvert pour chaque impulsion, avec une pause de 100 ms entre chaque numéro/digit.
- La numérotation DTMF
Il s'agit d'une émission simultanée de 2 fréquences, chacune indiquant la ligne et la colonne du bouton/digit envoyé. La durée minimale d'émission de chaque digit est de 40 ms.
Exemple : Pour composer le chiffre 6, l'appelant doit émettre les fréquences 1477 Hz et 770 Hz simultanément.
1 |
2 |
3 |
A |
4 |
5 |
6 |
B |
7 |
8 |
9 |
C |
* |
0 |
# |
D |
Autre point concernant la sonnerie du téléphone, même si le Minitel n'est pas concerné : Le commutateur doit envoyer une tension alternative à 50Hz d'une amplitude +/- 96 V centrée sur la tension 48 V de repos.
Une telle amplitude était nécessaire, car les anciens postes téléphoniques avec une sonnerie électromécanique demandent plus d'énergie que les postes à sonnerie électronique.
Le Minitel possède un circuit intégré spécifique pour réaliser les fonctions de modulation/démodulation des signaux présentés plus haut.
Pour le Minitel 2, il s'agit d'un TS7514
Il est aujourd'hui possible d'émuler un serveur Minitel en passant le modem sans utiliser de ligne téléphonique notamment grâce à des solutions de modulation/démodulation logicielles.
L'une d'elles est un logiciel que j'ai développé à l'origine pour convertir des pages vdt en bitmap est maintenant capable, entre autres, d'envoyer des fichiers vdt vers le Minitel en audio, et même de fonctionner comme un serveur complet, en mode émission et réception.
Le logiciel en question, VDT2BMP, est disponible sur github
Le diagramme ci-dessus montre en partie ce qui est implémenté dans VDT2BMP.
On peut y voir les étages des UARTs à droite, les étages de modulation et de démodulation FSK
au centre et la partie entrée/sortie avec un filtre FIR passe-bas pour l'entrée du démodulateur
pour ne garder que la bande de fréquence correspondant à celle transmise par le Minitel et éliminer les hautes fréquences.
La modulation est simple : il s'agit d'un simple oscillateur changeant d'une fréquence à l'autre selon l'état 1 ou 0 de la sortie série.
À noter que lors des changements de fréquence, il ne doit pas y avoir de saut de phase pour garder une continuité sur le signal généré et ne pas générer des fréquences parasites.
Comme vous pouvez le voir, la complexité se trouve coté démodulation. Il s'agit ici d'un démodulateur "non-cohérent". "Non-cohérent", car il n'est pas sensible à la phase du signal entrant.
Pour résumer le démodulateur mesure en temps réel les niveaux d'énergie pour les fréquences correspondantes au "1" et au "0" et sélectionne l'état ayant un niveau supérieur à l'autre.
Serveur Minitel Audio VDT2BMP fonctionnant sur smartphone !
Pour le branchement voici les différentes possibilités :
Si vous avez un Minitel ne nécessitant pas de présence de tension sur la ligne téléphonique voici le branchement à faire pour avoir une communication unidirectionnelle,
c'est-à-dire juste envoyer des pages vers le Minitel, le branchement est alors d'une extrême simplicité ! Il suffit alors de brancher directement une source audio directement sur la prise téléphonique du Minitel.
Note : La polarité du branchement coté prise téléphone du Minitel n'a aucune importance.
Vous pouvez utiliser n'importe quelle source audio avec une sortie casque : Un ordinateur, un téléphone, un lecteur MP3 et même un lecteur de cassette ;)...
Si vous avez un Minitel ne nécessitant pas de présence de tension sur la ligne téléphonique voici le branchement à faire pour avoir une communication bidirectionnelle :
Vous pouvez tester la compatibilité de votre Minitel simplement en jouant l'un des wav ci-dessous.
Connectez le Minitel au PC avec l'un des branchements présenté plus haut (le premier étant suffisant pour ce test), mettez en fonctionnement le Minitel, lancez la lecture de l'un des fichiers son ci-dessous et appuyez sur "Connexion/Fin".
Vous devriez alors voir apparaître ces écrans sur votre Minitel :
Si le minitel ne se connecte pas, il est probable qu'il nécessite une tension d'alimentation sur la ligne téléphonique. Le circuit ci-dessous permet de créer une alimentation de ligne téléphonique.
Ci-dessous un prototype de cette alimentation, avec un circuit élévateur générant 42 Volts à partir d'une source 12 Volts.
Cette interface offre une compatibilité complète avec l'ensemble des Minitels. Elle peut même être utilisée avec d'autres appareils : Téléphones, Modems, etc.
Le serveur "audio" VDT2BMP présenté plus haut a été testé sur différents modèles de Minitel et de terminaux.
Il a également été utilisé dans le cadre de différentes expositions par l'association MO5.COM comme serveur.
Ci-dessous la liste des Minitels testés et leurs photos.
Modèle | Compatibilité avec la connexion simple/directe | Compatibilité avec la connexion alimentée | Remarque(s) |
---|---|---|---|
Minitel 1 Telic Alcatel à clavier ABCD. | Oui ! | Oui ! | - |
Minitel 1 (NFZ 300 La Radiotechnique) | Oui ! | Oui ! | - |
Minitel 1 (NFZ 330 La Radiotechnique) | Oui ! | Oui ! | - |
Minitel 1 "R 722 680 C" TELIC ALCATEL | Oui ! | Oui ! | - |
Minitel 1B TELIC ALCATEL | Oui ! | Oui ! | - |
Minitel 2 TELIC ALCATEL | Oui ! | Oui ! | - |
Minitel 1 Matra | Oui ! | Oui ! | - |
Minitel Matra TEMAT | Oui ! | Oui ! | - |
Matra Télétel 3V | Oui ! | Oui ! | - |
Valise Minitel FIET | Oui ! (*) | Non (*) | (*) En acoustique |
Minitel 2 Philips | Certaines unités (Voir Remarque) | Oui ! | Problème avec certaines révisions ? A investiguer. |
Minitel 12 Telic Alcatel | Non | Oui ! | - |
Minitel 5 Matra | Non | Oui ! | - |
Alcatel Web Touch | Non | Oui ! | - |
Philips NMS 3000 a.k.a. "Telematico" | Non | Oui (voir Remarque) | Terminal Italien Teletext Videotel ! Préfère 2 bits de stop au lieu d'un seul ! |
LOEWE MULTICOM E | Non | Oui mais voir Remarque | Terminal Espagnol -> Beaucoup de garbage : Différence de standard ? A investiguer. |
Minitel 10 Telic Alcatel | Non testé | Non testé | Alimentation ligne probablement nécessaire |
Minitel Magis ALCATEL | Non testé | Non testé | - |
Minitel Magis Philips | Oui ! | Oui ! | - |
Minitel Magis Club ALCATEL | Oui ! | Oui ! | - |
Sillages 1000 et 2000 ALCATEL | Non | Oui ! | - |
Sillages 1000 VR, 2000 VR et 3000 ALCATEL | Non testé | Non testé | - |
Terminal Annuaire Electronique (T.E.A) ALCATEL | Non testé | Non testé | - |
Thomson CSF Téléphone Télétel | Non testé | Non testé | - |
Minitel 1 Couleur "La Radiotechnique TRT" modèle 11 CFZ 201 | Non testé | Non testé | - |
(C) HxC2001 / Jean-François DEL NERO