dimanche 12 juillet 2015

TRC294A: Affichage - suite

L'affichage de caractères inattendus à la suite du changement des afficheurs du TRC294A est assez désagréable. J'ai donc décidé de modifier le firmware du récepteur pour résoudre le problème. 

La lecture du contenu des deux EPROM 2764 et l'analyse du code 6802 embarqué à l'aide du fabuleux logiciel IDA permet de retrouver assez rapidement la routine d'affichage. Il faut ensuite déterminer la meilleure approche: modifier le code de l'initialisation du tampon d'affichage ou modifier ce même tampon juste avant qu'il ne soit exploité. La première approche s'avère compliquée car imposant de nombreuses modifications, toutes différentes.
La seconde en revanche est simple puisqu'elle consistera en l'écriture d'une routine chargée de modifier toutes les occurrences du caractère NUL (0x00) dans le tampon par le code du caractère espace (0x20).

Cette routine sera stockée en fin de mémoire dans une zone libre (ici 0xDA10) de la seconde EPROM et appelée dans la fonction chargé de l'affichage, fonction localisée dans la première EPROM. Quelques instructions remplacées par l'appel à cette routine seront déplacées dans la nouvelle fonction juste avant l'instruction de retour.

Quelques essais plus tard, le code est fonctionnel. Le résultat est absolument parfait et permet d'employer sans plus aucun désagréments visuels les nouveaux afficheurs en lieu et place des originaux. Une affaire rondement menée en une petite matinée.

Deux améliorations pourraient être apportées à la routine de transcodage: 
1- le remplacement de tous les caractères non imprimables par un espace afin de coller à la table de décodage des anciens afficheurs mais je n'ai pas encore trouvé de cas imposant un tel transcodage,
2- le remplacement de la virgule par un point, la virgule des nouveaux afficheurs étant assez disgracieuse.

Aucun commentaire: