Alcatel ATR 420 / 9210 – Firmware alternatif

Quelques lignes pour aider à compiler et tester le firmware alternatif développé par Alexey : https://github.com/AmLeh/alcatel_atr420_resurrection.
Cet article fait suite à l’analyse de rétro-ingénierie effectuée ici : https://blog.shibby.fr/2017/10/alcatel-atr42x-la-resurrection.

Prérequis

Procédure

Après avoir installé les logiciels mentionnés dans le paragraphe Prérequis, ouvrir l’Invite de commandes Windows et se placer dans un répertoire où sera téléchargé le projet Github, comme c:\Workspace par exemple ou tout autre dossier présent sur votre disque dur.
Saisir la commande suivante puis valider avec la touche Entrée :


git clone https://github.com/AmLeh/alcatel_atr420_resurrection.git

Depuis l’Explorateur de fichiers de Windows, aller dans le répertoire C:\Program Files\SDCC puis copier l’ensemble des fichiers et répertoires.
Se déplacer dans le répertoire dans lequel le projet Github a été cloné (C:\WorkSpace\alcatel_atr420_resurrection dans mon cas), créer un répertoire nommé compilers et accéder à ce répertoire. Coller les fichiers copiés précédemment.
Redémarrer le PC pour que les variables d’environnement définies lors de l’installation de SDCC et Python soient prises en compte par Windows.
Ouvrir à nouveau l’Invite de commandes Windows et se placer dans le répertoire racine du projet Github cloné.
Exemple dans mon cas :

cd c:\WorkSpace\alcatel_atr420_resurrection

Exécuter le script Python de compilation du fichier source :

python .\firmware\build_current.py

Vous devez obtenir ce résultat :

Le fichier compilé est stocké, dans mon cas, à cet emplacement : C:\WorkSpace\alcatel_atr420_resurrection\firmware\build\ALCATEL3558_CURRENT.HEX
Il ne reste plus qu’à programmer l’EPROM 27C256 et l’insérer dans le support nommé MN03 sur la carte logique, en s’assurant de bien placer la broche 1 du composant du côté où est imprimé l’astérisque:

Utilisation

À date, ce firmware alternatif n’en est qu’à ses débuts. Les fonctions sont limitées mais ce projet donne déjà les bases pour réutiliser à des fins non professionnelles les postes de la gamme ATR 420/9210, sans modification matérielle.
Le poste démarre avec le squelch ouvert, sans gestion de détection de porteuse, et permet la saisie de fréquence au clavier. La saisie de la fréquence n’est pas encore visualisable en temps réel, donc attention aux erreurs de saisie. L’émission phonie n’est pas encore gérée. Seul l’appui sur le bouton d’appel permet d’émettre une porteuse.

L’approche sans modification matérielle

C’est certainement la meilleure façon d’agir, vu que le processeur est déjà en capacité d’effectuer les actions prévues par ALCATEL. J’avais dans l’idée de plutôt remplacer l’architecture processeur + ROM + RAM par un microcontrôleur, mais l’approche d’Alexey est bien plus élégante.

Étude du code source

La rétro-ingénierie du fonctionnement d’un applicatif officiel, couplée à l’intelligence artificielle, permet de voir plus clair dans le code d’ALCATEL.
J’ai entamé le même travail qu’Alexey en partant de la version la plus récente de l’applicatif DIGICOM dont je dispose : V3.6 (3P6). Il s’agit du fichier présent dans l’EPROM de gestion, donc du code déjà compilé.
Le microprocesseur 8031 (famille 8051) utilisé dans les postes ALCATEL ATR de la gamme 420 et 9210 est encore plus ancien qu’eux, on imagine donc aisément qu’avec l’évolution des technologies, celui-ci est pour ainsi dire devenu obsolète tout comme les logiciels qui permettent de travailler sur cette famille de microprocesseurs.
Si vous n’avez pas un ancien PC disposant encore du système d’exploitation Windows 98 (au mieux), vous devrez utiliser le logiciel DOSBox qui permet d’émuler le système d’exploitation DOS sur un PC récent.
DOSBox est à télécharger ici : https://www.dosbox.com/download.php?main=1.
Copie de l’EPROM de gestion DGC 3P6 (pour carte logique deuxième génération), utilisée comme référence pour l’analyse du code source : 27C256_DGC_3P6__PLL_MC145156P2__CS_5C5C.bin.

Désassemblage

Cette étape consiste à re-générer le code source assembleur à partir du contenu de l’EPROM de gestion.
Désassembleur pour la famille 8051 DIS8051 : d51v26.zip.

Après avoir installé ce logiciel, exécuter DOSBox et monter le disque où se trouvent le fichier issu de l’EPROM de gestion ainsi que le désassembleur DIS8051.
Exemple pour le disque C :


Se positionner sur le disque C et accéder au répertoire contenant DIS8051 ainsi que la copie de l’EPROM :


Exécuter la commande de désassemblage, en spécifiant le nom du fichier image de l’EPROM sans ajouter l’extension du fichier.
Exemple :

Le désassemblage est exécuté et se termine par l’écriture du fichier désassemblé dans le répertoire courant :

Ajustement du code désassemblé

Le code source obtenu n’a pas pu être assemblé correctement par les deux logiciels que j’ai utilisé : WRKit et ASEM51.
Avant d’aller plus loin, il faut procéder à quelques modifications du code généré par DIS8051 :

  • Dans la zone « Unresolved Address Reference list » générée par le désassembleur, supprimer les deux points qui suivent chaque label.
    Fichier brut désassemblé à gauche dans la capture ci-dessous, et fichier corrigé à droite :

    Si une erreur de ce type subsiste, DIS8051 indiquera « illegal statement syntax » en précisant la ligne de code concernée entre parenthèses.
  • La seconde modification est nettement plus complexe, car elle concerne une interprétation « bête et méchante » de l’image de l’EPROM. Cette erreur du désassembleur générait des pointages vers des adresses inexistantes. Je vous fournis le détail en copie d’écran et dans les deux fichiers ci-dessous comme référence, mais si vous n’êtes pas expert en assembleur 8051, privilégiez l’assistance de l’IA (Claude par exemple) :
  • Si une erreur de ce type subsiste, DIS8051 indiquera « address out of range » en précisant la ligne de code concernée entre parenthèses.

Fichiers, pour référence uniquement : 8031.a51 / 8031_fixed.a51

Identification des routines

Le code désassemblé est encore sous sa forme brute, sans la moindre interprétation du fonctionnement.

L’ajout de commentaires est obligatoire pour identifier les routines chargées des échanges de données de/vers les différents périphériques du microprocesseur 8031.
J’ai fourni à l’IA Claude une liste des connexions électriques entre le microprocesseur 8031 et les composants auxquels il est raccordé (extenseurs de ports, EPROM, RAM, latch, microprocesseur de gestion 5-tons, etc.), ainsi que le lien vers mon analyse de fonctionnement par rétro-ingénierie, disponible ici pour rappel : http://link.shibby.fr/atr42x.
Cette analyse avance lentement, car j’utilise un compte gratuit dont les sessions sont régulièrement mises en pause avec des délais d’attente importants, mais elle permet déjà d’identifier clairement une bonne partie des fonctions et interactions avec l’EPROM de personnalisation, la RAM, la PLL, les extenseurs de port, l’organe d’exploitation, etc.

Source désassemblée commentée par l’IA en se basant sur les informations fournies : DGC_3P6_userSRC_annotated.SRC.
Ce fichier est mis à jour au fur et à mesure des modifications, sans notification particulière sur cette page. Pensez à revenir télécharger périodiquement ce fichier afin de profiter des derniers ajouts.

Assemblage

Depuis le 18/07/2026, le code désassemblé a été corrigé afin de pouvoir être assemblé à nouveau, pour générer un fichier image à injecter dans l’EPROM de gestion.
Les modifications apportées au code source de référence peuvent alors être testées et validées sur la cible.

Le logiciel utilisé est ASEM-51, disponible à l’adresse suivante : https://plit.de/asem-51/download.htm.
Il s’agit ici encore d’un logiciel ancien qui n’est plus compatible avec les PC récents. Cette limitation est levée en utilisant DOSBox, qui permet de disposer d’une interface DOS pour exécuter le programme chargé d’assembler le code.

Après avoir installé ce logiciel, exécuter DOSBox et monter le disque où se trouvent le fichier désassemblé ainsi que l’assembleur ASEM-51.
Exemple pour le disque C :


Se positionner sur le disque C et accéder au répertoire contenant ASEM-51 ainsi que le code assemblé commenté :


Exécuter la commande d’assemblage du code source.
Exemple avec le fichier de code source renommé 8031_3.a51 :

Sur mon PC, cette étape prend du temps et l’écran semble rester figé. Avec un peu de patience, on finit par obtenir un résultat sans erreur :

Enfin, pour s’assurer du bon fonctionnement, une comparaison entre l’image de l’EPROM source et le code qui vient d’être assemblé s’impose!
On peut soit se contenter d’un calcul de somme de contrôle type MD5, soit préférer une comparaison plus sûre avec WinMerge par exemple : https://winmerge.org/downloads/

Puisque l’image est au format binaire (extension BIN) et le code assemblé au format Intel HEX (hexadécimal), il faut effectuer une conversion préalable avec un outil tel qu’HEXBIN disponible ici : https://www.keil.com/download/docs/7.asp
À décompresser dans le répertoire où se trouve le fichier qui vient d’être assemblé. Exécuter ensuite la commande de conversion :

Enfin, depuis l’explorateur Windows, sélectionner le fichier binaire source et celui qui vient d’être obtenu par le convertisseur HEXBIN, cliquer avec le bouton de droite de la souris puis sur WinMerge avec le bouton de gauche :

Le résultat est identique. Il ne reste donc plus qu’à procéder aux modifications

À suivre…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *


La période de vérification reCAPTCHA a expiré. Veuillez recharger la page.