REHome escribió:Me haz dejado en el aire el Z80A que ahora son de 20 MHz frente a los 3.5 de antes (creo recordar).
El Z80 NMOS original iba como máximo a 2MHz. El Z80A NMOS original (el de los Spectrum's) iba como máximo a 4MHz. Este, que es CMOS, puede ir como máximo a 20MHz.
REHome escribió:Si le pongo 20 MHz y no hay ningún problema, ¿qué diferencia hay frente al viejo Z80 de su día? A parte de la velocidad claro. Si el Z80 es de 20 MHz y los demás componentes no se cambia, lo pregunto por eso.
Es CMOS, lo que significa que consume mucho menos que el viejo NMOS. Por otra parte, el NMOS usa para generar el '1' un transistor NMOS de deplexión funcionando como pullup, con lo que los 0's son fuertes, pero los 1's son débiles. En CMOS, los drivers son totem-pole con lo que tanto los 1's como los 0's son fuertes.
REHome escribió:Frente al problema indicado arriba, ¿hay solución? ¿Es por hardware?
No hay solución sencilla. Es mucho más fácil parchear el programa que use OUT (C),0 para que use la combinación estándar. Por otra parte, al ser una instrucción no documentada, es muy improbable que te encuentres software (aunque haberlo lo hay) que usen esta instrucción.
Para la ULAplus que tengo medio diseñada (para el +2A/+3) sí que tengo un pequeño "hack" en la propia ULA para detectar cuándo se está ejecutando esta instrucción, de forma que cuando ocurre, el dato que la ULA "ve" es un 0 siempre.