sexta-feira, 1 de fevereiro de 2013

Bug do clone da ULA do TK90X consertado

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.