Foi anunciado há um tempo atrás, mas eu tinha esquecido de divulgar aqui. O bug detectado no clone da ULA do TK90X foi finalmente consertado.
Fonte: victortrucco.com |
Passo a palavra ao Fabio Belavenuto, o autor:
...
Eu mexi no decodificador para carregar o latch assim que os sinais /CS e /WR baixassem, mas não adiantou.
Ai lembrei que no circuito original do Chris, ele usa o sinal /VidBusEn para limitar a leitura da porta 254 (sinal de saída KEYBOARD) para acontecer somente no momento da CPU.
A ULA divide o tempo em 2 partes, cada parte com 8 ciclos-T, um deles é o tempo da ULA que lê 4 bytes da DRAM (2 atributos e 2 bytes de pixels) e o outro tempo a CPU fica livre. A Contenção ocorre quando é o tempo da ULA e ela tenta acessar a DRAM.
Por algum motivo que não descobri, a porta 254 tava sendo ativada no tempo da ULA, então coloquei o sinal /VidBusEn para limitar o acesso da porta 254 somente no tempo da CPU.
Talvez o latch seja ativado no começo do ciclo de escrita de I/O e a contenção segura o clock da CPU, e com essa memória diferente em temporizações ocorria o conflito. Com esse sinal limitamos mais ainda o momento de carga do latch. Isso estou supondo, não confirmei!!
Mas posso dizer que efetuei vários testes com vários jogos/aplicativos e funcionou, com 4116 e 4164.
Meus parabéns, espero que a ULA tenha ficado o mais fiel possível ao original.
Nenhum comentário:
Postar um comentário
Seu comentário é bem vindo, mas peço que use este espaço adequadamente.