Al principio diagnostiqué esto, pero al hacer más pruebas, parecía que la ULA no estaba mal... tanto es así que una vez que cambié las memorias (¡¡tenía las 4 mal!!) llegué incluso a poder ejecutar la ROM original de 48K a través del Interface II (sí, si alguien no lo sabía, es posible usar el Interface II y sus cartuchos en un +2A/+3... quitando antes las dos ROM s internas del ordenador

Con la ROM de un 48K ejecutándose a través de un cartucho de Interface II, pude cargar (a través del conector CINTA/SONIDO) el King s Valley, que se ejecutó perfectamente, incluso con sonido de 128K.
Pero al quitar el interface II y volver a poner las ROM s originales, nada de nada. Pensé entonces que eran las ROM s las que estaban mal, pero no. El Z80 tampoco, así que vuelta a la ULA: con una ROM externa (la del Interface II) funciona, con la suya, no. ¿Qué pasa con las ROM s?
Pues pasa que quien las selecciona es la ULA. Vuelta a la ULA pues.
El fallo de esta ULA, más concretamente, es que uno de sus pines, ROMOE2, aparece como conectado permanentemente a 0 voltios, es decir, cortocircuitado a masa. El chip se calienta mucho, supongo que debido a ese cortocircuito.
Si ese pin está permanentemente a 0 voltios, significa que la ROM B (que contiene las páginas 3 y 4 de la ROM) está permanentemente seleccionada. Cuando se arranca la máquina, ésta intenta paginar la ROM 0, pero entra en conflicto con la ROM 3 que también "aparece" en el bus.
Afortunadamente, he podido encontrar una solución, al menos de compromiso, que permite enseñar este ordenador en Retromallorca, funcionando "con lo mínimo".
Para empezar, tenía que comprobar que el cortocircuito estaba dentro de la propia ULA y que sólo afectaba a ese pin. Para ello, no hubo más remedio que... ¡desoldarlo!
El fallo sólo afectaba al pin indicado... Podía probar mi solución. Volví a soldar la ULA usando un binocular de 10 aumentos, hilo fino de estaño, flux, y mucho pulso. Eso sí, me cuidé de aislar el pin "conflictivo":
Mi idea es la siguiente: en un Spectrum 128K y +2 gris hay un registro situado en 7FFD que indica, entre otras cosas, cuál de las dos ROM s se va a usar: la ROM 0 o la 1. Esto lo hace con un bit. Si está a 0, se selecciona la ROM 0, y si está a 1, pues la 1. En estas máquinas hay un único chip de ROM de 32KB. Los 16KB primeros son la ROM 0, y los 16KB altos, ROM 1.
En los +2A/+3 hay otro registro, en 1FFD, que proporciona otro bit de selección de la ROM. Con éste y el anterior, tenemos dos bits para seleccionar una de cuatro posibles ROM s.
Para mantener la compatibilidad hardware con el 128K/+2 gris, este bit adicional es el bit de mayor peso de los dos que seleccionan la ROM. El de menor peso sigue estándo en el registro 7FFD.
Es decir, que si el bit de mayor peso vale 0, con el bit que tengo en 7FFD selecciono la ROM 0 o la 1, que están en el chip ROM A.
Si ese bit de mayor peso vale 1, entonces selecciono la ROM 3 ó la 4, ambas en ROM B.
Cuando la máquina se resetea, el bit en 1FFD siempre vale 0, así que si nadie lo toca, con el bit que hay en 7FFD seleccionamos una de las dos ROM s en ROM A. Este comportamiento es el que es común para todas las máquinas de 128K s.
Lo que pasa, y esto es fuente de algunas incompatibilidades, es que el software que hace este tipo de cosas "espera" encontrar la ROM del BASIC en ROM 1, cuando en el +2A/+3, la ROM 1 contiene el chequeador de sintáxis del 128K.
Pero... ¿qué pasaría si en el lugar del chip que ocupa ROM A pongo la ROM de un 128K o un +2 gris? El código en esa ROM no sabe nada del puerto 1FFD, así que sólamente tocaría el puerto 7FFD para seleccionar la ROM 0 ó la 1. Jamás intentaría acceder a la otra ROM... porque cuando se hicieron estas máquinas no existía tal ROM.
La idea es, por tanto, sustituir las dos ROM s originales del +3 por una ROM conteniendo una copia exacta de la ROM del +2 gris español. Esta ROM contiene la ROM 0 (128K) y ROM 1 (48K). Cuando el sistema arranque, lo hará de la ROM 0, y para pasar a la otra ROM, sólo tocará el registro 7FFD, con lo que pasaría a la ROM 1, en el mismo chip. El otro zócalo se quedaría vacío. ¿Funcionará?
Pues va a ser que sí

Claro que no todo es ideal. El +2 gris no sabe nada del +3DOS, ni del hardware de la disquetera, así que, a menos que se cargue algún programa en RAM que use a bajo nivel la disquetera, estará "de adorno".
Alguien se preguntará si sería posible en este entorno ejecutar el CP/M. Pues teóricamente es posible: si un programa se carga de cinta conteniendo el código de bootstrap de CP/M hasta el momento en que se pasa a modo all-RAM (desactivando todas las ROM s), el resto puede botar de la disquetera, ya que CP/M no usa para nada las ROM s de Amstrad. Y el modo all-RAM sigue siendo posible en esta máquina aunque le hayamos hecho un "downgrade" a +2 gris

Con la máquina ya más... operativa, probé más juegos. Ahora, un peso pesado: Rainbow Islands, en modo 128K. Para cargarlo he usado el ruido que genera el propio emulador Spectaculator cuando carga juegos, porque el intérprete de TZX de Spectaculator respeta los comandos "stop tape".
Y a modo de frikada, comprobar que en esta ULA "pocha" la temporización se sigue manteniendo incluso con la temperatura elevada: la Shock Megademo funciona, y las barritas de color coinciden en emulador y máquina real.
Contento con el resultado, y aprovechando que en la última visita al laboratorio, cuando soldé de nuevo la ULA, encontré una vieja placa madre de PC con un 80286 en zócalo, resolví aprovechar ese disipador para mejores empresas... (nótese que al principio, cuando terminé el diagnóstico, marqué la ULA como "muerta", con su calavera y sus dos tibias)

Parece que lo han hecho para esta ULA. ¡Encaja perfectamente! No soluciona el problema del calentamiento, pero lo mitiga, permitiendo que así esta ULA pueda durar un poquito más de lo que se espera...