Eh ben finalement, ce n'était pas un souci de logique programmable, de 68000 ou de microcontrôleur!
Voilà pourquoi je n'arrivais pas systématiquement à récupérer la valeur du port de sortie du BricoNeo...
Pour support, une capture de l'oscillo au moment de la révélation:
La légende:
- En vert (en bas pour nos amis daltoniens): le signal /OE de l'EPROM, envoyé par la NeoGeo et récupéré via la nappe
- En rose (juste au-dessus), son inversion par le GAL, qui produit ainsi son propre signal d'horloge, qui va servir à compter les accès à l'EPROM pour récupérer le 3ème après la demande d'écriture dans le port. Le GAL marche avec des impulsions d'horloge positives, et l'EPROM négatives, pas de bol

- En jaune (au-dessus), la détection d'une demande d'accès. Il faut regarder uniquement la première impulsion, les autres alternent (en fait, il s'agit du bit e poids faible d'un compteur 3 bits qui compte les accès à l'EPROM)
- En bleu (tout en haut), la commande du registre à décalage qui enregistre l'adresse demandée et s'en sert de données pour le port de sortie (c'est là toute la feinte pour écrire sur un truc qui fait des lectures, on en reparlera plus tard sans doute!)
Et ce qui saute aux yeux, et que je n'avais pas regardé, ce sont:
- la mini impulsion positive jaune à gauche, et la mini impulsion négative qui suit
- les indentations dans la courbe rose, qui est censée correspondre à la négation des signaux /OE de l'EPROM
- les petits pics au niveau du 0V sur la courbe verte, qui est le signal venu de la NeoGeo.
Alors maintenant, la cascade de problèmes:
- Le signal qui sort de la NeoGeo est nickel
- Il traverse la nappe, et se fait perturber, c'est le signal vert.
- Les petits pics sur le signal vert sont au-dessus de la barre de détection du GAL, qui en plus est très rapide
- Le GAL amplifie joyeusement les pics, et les transforme en impulsions TTL légitimes, pour les faire rentrer dans l'horloge du GAL
- Le compte n'est pas bon, les instructions sont comptées n'importe comment
- L'impulsion bleue, qui fait la lecture effective de la valeur du port, n'est pas du tout au bon endroit.
Bon, par contre, la plupart du temps, ça marche.
Mais quand on fait un dump ou quand on turbine un peu trop, les interférences s'accentuent et les lectures deviennent chaotiques.
Maintenant, comme solutions, ce que je vois:
- Un condo de très faible valeur à l'arrivée du signal OE sur la plaque
- Une bobine de filtrage, mais je ne suis pas équipé pour tester ça
- Une ferrite, mais pareil, je n'en ai pas sous la main (ou alors je les pique à un vieux MVS HS?)
Comme ça, je sais ce que je fais ce soir...
En tout cas, bien content d'avoir trouvé. Le facteur environnemental qui introduit des bugs aléatoires, ça me rendait dingue!