Estoy siguiendo las instrucciones en enlace para crear una "prueba de concepto" basada en Z80 computadora. He cableado todo en mi placa y programé la EEPROM con el siguiente programa (la primera instrucción es en la dirección 0):
LD A,#FF
OUT (#02),A
OUT (#03),A
LD A,#01
OUT (#00),A
JP #000A
Este programa solo debe encender un LED conectado al chip de E / S (un 6522 VIA) estableciendo un pin de salida de puerto alto; Sin embargo, nada está sucediendo. Verifiqué que el programa en la EEPROM es el que se publicó aquí y que usé los valores de código de operación correctos. Tengo una señal de reloj de 1 Hz y puedo "ver" la actividad en la dirección Z80 y los pines de datos con mi probador lógico. También verifiqué el cableado, pero todavía nada.
Trabajando hacia atrás, noté que el pin de salida de E / S conectado al LED nunca cambia a alto. También noté que el reloj de fase 2 en el chip de E / S siempre es bajo (es decir, no oscila); esto explica que el LED no se encienda, ya que el chip de E / S solo se lee en el flanco ascendente. Según las instrucciones, he conectado este reloj al pin IORQ del Z80 a través de un inversor; sin embargo, en mi proyecto, el pin IORQ siempre es alto. Desde la hoja de datos del Z80, este pin debe bajar cuando se direcciona un puerto, pero esto no está sucediendo. Así que estoy atascado, y no estoy seguro de cómo proceder desde aquí.
¿Tengo razón al pensar que el pin IORQ debería bajar durante la instrucción OUT? Si es así, ¿qué pasos debo tomar para averiguar por qué esto no está sucediendo? Otras teorías sobre lo que puede estar mal también son bienvenidas.
Gracias de antemano!