dimanche 22 octobre 2023

Eddystone 6200: Ajout de filtres

Le récepteur HF Eddystone 6200 pouvait être commandé avec de multiples options nécessitant l'ajout de cartes supplémentaires (ISB, FSK, ...) ou de filtres 1.4Mhz. Livré avec un filtre 6KHz pour l'AM (en fait, le filtre d'entrée dit de 'roofing') et un filtre 2.4Khz pour la SSB, deux slots supplémentaires peuvent être équipés pour tous les modes hors la SSB.


Le simple ajout de filtres ad'hoc dans ces emplacements ne suffit cependant pas à modifier la configuration contrairement à certains récepteurs qui détectent la configuration lors de leur auto-test. Aucun cavalier n'est présent, aucune option n'est accessible depuis le panneau avant. Tout semble indiquer que la configuration se trouve dans le firmware installé sur une EPROM 27C256.

Quelques dizaines d'heures plus tard, avec l'aide de Ghidra, et d'un émulateur 6809 modifié, la structure générale du firmware est comprise en notant que celui-ci ne fonctionne pas sous interruption, les vecteurs associés étant utilisés pour stocker la version du firmware ! 

Le mécanisme de gestion des options est très rapidement identifié: la présence d'une option est indiquée par le passage à 0 d'un octet située en fin de mémoire, ici 0x7F01 pour l'option filtre #1, 0x7F02 pour l'option filtre #2.


        
          
Le codage de la bande passante est effectué sur les octets 0x7F10 et 0x7F11 en décimal.
Dans le cas présent: 15 pour 1.5KHz et 02 pour 200Hz. L'identifiant de la configuration du matériel est codé dans le LSB de l'octet 7FFD avec 0 pour l'option A, 1 pour l'option B, et ainsi de suite.

Aucune vérification de la checksum n'est effectuée sur le firmware, celui-ci étant sans grande optimisation, et comme indiqué précédemment sans aucune utilisation d'interruptions matérielles ou logiciels, facilitée pourtant gérée par la CPU 6309.

Une très grosse déception pour un équipement en provenance d'un fournisseur réputé des années 90.

L'utilisation d'un émulateur a été nécessaire au regard de la complexité de l'écriture du code. 
Développé en RUST, l'émulateur disponible ici a dû être modifié pour y intégrer la possibilité de modifier les registres en mode 'debug'.

Aucun commentaire: