Bonsoir.
Voici une mise à jour de plus concernant le dépannage de ma borne SEGA Space Ship.
Ce matin, sur le chemin du boulot, je me suis arrêté chez le crémier pour acheter un composant 74LS194.
J'ai dessoudé celui en place :
Le voici (en bas) à coté de son remplacant (en haut).
Le hasard a fait qu'ils soient du même constructeur (je pense que c'est Motorola) :
Je ne suis pas sûr, mais si "8211" signie que le composant neuf a été fabriqué durant la 11e semaine de 1982, alors ce composant neuf n'est pas tout jeune : il aurait 28 ans !
Voici le nouveau composant installé sur le PCB :
Là, j'ai à nouveau recommencé l'exécution pas à pas.
J'ai pu constater que le composant conserve maintenant correctement la valeur écrite.
Quand le "JMP" de la dernière fois est atteint, c'est bien la bonne adresse qui est utilisée, le CCPU cotinue l'exécution en 0x7E9 comme prévu.
Le changement de ce composant a donc corrigé une panne majeure du PCB.Bien sûr, j'ignore s'il en reste d'autres....
J'ai continué l'exécution pas à pas du code présent dans les PROMs du jeu.
Tout semble fonctionner correctement. Le jeu initialise plusieurs variables en RAM.
C'est très logique de trouver ça, je pense que c'est la partie initialisation du jeu qui est comme ça.
Il reste de nombreuses instructions dont je n'ai pas pu vérifier le bon fonctionnement :
- tout ce qui touche au 2e accumulateur
- les comparaisons
- les soustractions, les multiplications
- ...
Je me suis penché sur la PROM "PR-10" que j'avais temporairement retirée car elle imposait un niveau logique sur le bus de données (au moins pour 1 bit) alors qu'elle n'était pas sélectionnée.
C'est en soit la preuve d'une panne sur ce composant.
Vu que c'est un composant programmé par SEGA et difficile à remplacer, je me suis dit que ça valait le coup de regarder de près son problème...
Ce composant est une PROM à fusibles de 1024 × 4 bits, référence HM-7643-5 du constructeur
Harris.
Le temps d'accès est de 50 ns maxi, ce qui est très rapide.
Il dispose de 2 entrées de sélection, nommées "/CE1" (broche 8 ) et "/CE2" (broche 10).
Il faut que toutes les deux soient
simultanément à l'état bas pour que le bus de donnée soit "
actif". Sinon, il est dans un état "haute impédance", l'équivalent de "déconnecté".
SEGA, qui n'avait besoin que d'une unique broche de sélection a donc relié "/CE1" en permanence à la masse et n'utilise que "/CE2".
L'hypothèse que je veux vérifier est la suivante :
- la broche "/CE2" utilisée par SEGA est morte et ne contrôle plus rien
- la broche "/CE1" qui n'a jamais servi est peut-être encore opérationnelle et pourrait travailler à la place de "/CE2"
Je réalise donc un petit montage de test de la PROM sur ma plaque d'essais "à trous"...
Mise en place du composant, câblage alim et bus d'adresse
Câblage du bus de données, commande des transistors
Ajout des LEDs, mise en place d'interrupteurs sur les 4 bits de poids faible du bus d'adresse
Bon, maintenant ça ce complique...
Cas n°1.Je sélectionne le composant. Les petits cavaliers en 1 et 2 sont présents. Ils forcent /CE1 et /CE2 à l'état bas.
Le composant est sélectionné, son bus de données est actif.
J'ai réussi à trouver une adresse où les 4 bits de données sont à l'état haut, ce qui me fait allumer les 4 LEDs.
Cas n°1 : /CE1 et /CE2 tous les deux à l'état bas ; le composant est sélectionné
Cas n°2.J'ai retiré le cavalier n°2, donc /CE2 est à l'état haut grâce à une résistance de pull-up. Le cavalier en 1 est toujours en place.
Cette situation devrait suffire à désélectionner le composant et son bus de données devrait passer en haute impédance.
Vu que les LEDs restent allumées, j'ai bien la preuve que l'entrée /CE2 est morte et ne permet plus de désélectionner le composant.
Cas n°2 : /CE1 est à l'état bas, /CE2 est à l'état haut ; le composant reste anormalement sélectionné
Cas n°3.J'ai remis le cavalier en 2 (même si en fait il ne sert plus à rien du tout vu que l'entrée est morte), et j'ai retiré le cavalier en 1.
Cette fois, j'ai /CE1 qui est à l'état haut.
Je constate que les LEDs sont maintenant éteintes.
- soit le composant est réellement déselectionné
- soit le composant est anormalement resté sélectionné et impose un état bas sur le bus de données
Cas n°3 : /CE1 est à l'état haut, /CE2 est à l'état bas ; le composant semble enfin désélectionné
Pour lever l'ambiguïté, il me suffit de faire un 4e test.
Avec une résistance de pull-up, je viens "tirer vers le haut" chacun des bits du bus de données.
Si la LED s'allume, c'est que le composant est bien désélectionné et n'impose plus aucun état sur le bus.
Bingo, le composant a bien libéré le bus de données (vérifié pour les 4 bits) :
Vérification que le bus de données est bien en haute impédance
C'est une très bonne nouvelle.
Ca veut dire que mon composant SEGA est toujours utilisable, mais je dois échanger les broches 8 et 10.
Pour échanger ces 2 broches, j'ai besoin de souder 2 petits bouts de fils.
Vu que je veux conserver la possibilité de retirer le composant sans fer à souder, je place le composant sur un support, en ayant pris soin de plier les 2 broches que je veux permuter.
Broche 8 isolée
Broche 10 isolée
Ensuite, il me suffit de souder 2 petits bouts de fil à
wrapper pour réaliser la permutation.
Je soude les fils sous le support, au plus haut sur la patte métallique pour ne pas gêner lors de l'insertion de l'ensemble sur le support soudé sur le PCB.
Repiquage
Repiquage
Et voilà :
J'ai testé en mode pas à pas la 1ère donnée lue en ROM.
PR-10 est bien désélectionnée et la donnée lue est bien celle de PR-8 !
À suivre :
- ça vaut le coup maintenant de rester le PCB avec l'oscillateur d'origine ;
la seule inconnue est la PROM PR-18 pour laquelle le doute m'habite quand à son contenu, différent de la référence Cinematronics - je ne sais toujours pas si les composants de RAM sont bons, j'ai tracé 2 instructions d'écriture qui se sont correctement déroulées, mais ce n'étaient que 2 adresses parmi les 256 possibles...