domingo, 17 de maio de 2015

Ressuscitando um TK-85 (4)

Continuando o post anterior...


Hoje eu peguei o TK-85 que está funcionando corretamente e capturei várias formas de onda, a fim de comparar com a placa que estou tentando restabelecer seu funcionamento.

Eu usei como trigger o sinal de base de tempo vertical presente no anodo de D22 e escorreguei a base de tempo para aproximadamente 2,5ms além. A razão disso é que intervalo vertical não há vídeo sendo gerado. Eu ajustei a posição vertical de forma que a borda de descida do ciclo M1 batesse com o centro da tela do osciloscópio, ou seja sobre o eixo vertical.

A razão de usar o ciclo M1 como referência é que o TK85 (ZX81) literalmente executa a memória para desenhar a tela, e o ciclo M1 vai a nível baixo no início do ciclo de busca (fetch) das instruções.
Quando o ZX81 executa instruções na região correspondente ao D-FILE, existe um circuito que gera 'NOPS' para o Z80 para cada caractere na tela. Sendo assim, este sinal é uma boa referência de tempo para se checar os outros sinais.

Com uma referência fixa foi possível combinar várias formas de onda e combina-las numa figura única de forma a facilitar o entendimento (ou futuras pesquisas de pane).

Formas de onda do TK85

Olhando a figura acima vemos de cara uma coisa estranha. O sinal presente no pino 9 de IC5 (LS373) varia entre 0 e 1,2Volts. Isso estava assim também na placa defeituosa e foi exatamente esse comportamento que ontem me fez suspeitar de IC17 (LS04) e de IC5 (LS373). Acabei trocando IC5 porque apesar de tudo a saída da porta E de  IC17 invertia o sinal. Depois de trocado IC5 o comportamento do circuito não havia se alterado.

Geração do sinal SHIFT/LOAD
Como última e desesperador medida acabei trocando também IC17, pois sua porta C estava ligada diretamente em DD6 que quando tocada com o dedo ou a ponta de prova mudava o sinal produzido na tela (vide post anterior).
A conclusão é que embora bizarro esse circuito funciona assim mesmo. O que acontece é que na fase alta do sinal de REFRESH, as saídas de IC5 estão em tristate, e isso equivale a deixar o pino 11 de IC17 em aberto. Com isso, os 1,25 Volts são enxergados como nível alto e a saída representa o inverso do sinal de entrada com um pequeno detalhe: Na falta de algo para puxar a entrada do inversor (IC17-11) para cima, o sinal sobe relativamente devagar, formando uma rampa que causa um delay de aproximadamente 200ns na borda de descida do sinal no pino 10 de IC17. Não sei dizer se este atraso é proposital, teria que analisar mais ou fazer mais experimentos.

Continuando, o sinal de NOP 'atrasado' junto com o sinal MREQ (também atrasado por uma rede RC) e mais o sinal de 3.25MHz são combinados numa porta NAND de forma que um pulso baixo só aparecerá no momento em que os três sinais estiverem em nível lógico alto. Isso acontece entre na fase alta de clock, no final do ciclo de 'refresh', logo antes do início do ciclo de 'fetch' seguinte (o sinal nop segue mais ou menos o inverso do sinal de refresh)

Formas de onda em IC18C (LS10, TK85 funcionando)
Na placa defeitosa, os sinais estavam um pouco diferentes: O sinal de clock era um pouco mais bem comportado, e o sinal de NOP 'atrasado' por IC5 (LS373) apresentava uns glitches que desapareciam quando tocava-se o dedo ou a ponta de prova na linha DD6. O sinal MREQ' era igual.

Já a saída era muito estranha, em vez dos pulsos curtos apareciam dois pulsos de SHIFT/LOAD e era isso que fazia o registrador de deslocamento apresentar aquele monte de lixo na tela.

Formas de onda em IC18C (LS10, TK85 defeituoso)

Abrindo-se a varredura da tela para conferir os estados lógicos apareceu um suspeito: IC18. Aparentemente a saída estava simplesmente invertendo o sinal MREQ'.

Forma de onda 'esperada' em IC18 (vermelho) versus sinal atual (azul)
Comparando o sinal observado com o sinal desejado tinha-se a impressão de que a porta NAND não estava funcionando corretamente. Daí, dá-lhe trocar o LS10, Aproveitei para colocar um soquete.

IC18 (LS10) removido

Soquete instalado para IC18 (LS10)
Estava fácil demais.... não precisa nem dizer que não funcionou...

Então, pausa pra tomar um café e brincar com o cachorro enquanto pensa no problema...
Brincando com o Otto para refrescar as idéias.

Alguns biscoitos depois comecei a investigar outra a diferença que observei nos sinais: O clock. Como eu ainda tinha na memória do osciloscópio o clock do TK funcionando, fiz uma nova captura e sobrepus os dois sinais:

Clock 3.25MHz'. Branco: TK funcionando / Azul: TK com defeito


 Daí apareceu uma coisa que não tinha notado de início. O Clock do TK com defeito estava sobreposto a um sinal de aproximadamente 1,2Volts. Isso me fez lembrar da saída do LS367 que era reconhecida como nível alto daí refiz a análise dos sinais na entrada de IC18 considerando que o clock estivesse sendo enxergado pelo CI como em nível alto o tempo inteiro:
Considerando o Clock em nível alto, explicava-se o comportamento da saída.

Bingo!!! Considerando-se o Clock em nível alto o tempo inteiro, o comportamento estranho do sinal SHIFT/LOAD estava explicado!

O problema agora havia se transformado em estudar porque o clock estava diferente do que deveria. Analisando o circuito do TK novamente, vemos que o sinal de clock/2 (3.25MHz) saindo do pino 9 de IC4 (LS74) passa por uma rede diferenciadora (C3-R5) e vai para o pino 9 de IC18. Como o sinal estava passando, o capacitor poderia estar em curto ou o resistor poderia estar aberto.
Derivador de clock.
Deu um pouco de trabalho encontrar estes dois componentes (C3, R5) que estavam ao lado do jack de 'EAR'. Quando os encontrei verifiquei que a conexão de GND do resistor estava aberta.  Observando do lado de baixo da placa vi o problema:
Trilha danificada quando a placa foi canibalizada.
A conexão entre o terminal negativo do resistor R5 (e sabe-se lá o que mais, já que a trilha é grossa) e a ilha do jack de EAR que vai ao GND estava aberta! Esta trilha deve ter-se rompido quando a placa foi canibalizada e passou batido quando eu soldei o Jack para substituir o que estava faltando.

Consertei a placa usando fio rígido. Cortes, trincas e demais interrupções sempre devem ser reparadas soldando fio entre ilhas, pois quando o fio é soldado nas trilhas elas aquecem e tendem a descolar e depois de algum tempo o reparo pode romper-se novamente.

Trilha reparada.

 Depois do conserto, verifiquei a forma de onda dos sinais de CLOCK e SHIFT/LOAD. Desta vez estava tudo certo!  Até os picos que apareciam no sinal de "NOP" e a sensibilidade quando se tocava a linha DD6 desapareceram.
Formas de onda como esperado agora!
Formas de onda boas, o próximo passo foi ligar o monitor. Agora sim... SUCESSO!!!



 

O próximo passo vai ser soldar os pinos para os conectores do teclado e testar se a leitura e escrita no cassete estão funcionando.





















Um comentário:

Jomesquita disse...

Bom dia Danjovic!
Encontrei depois de décadas o meu velho TK85. Gostaria de fazê-lo funcionar novamente porem estou encontrando enormes dificuldades. Gostaria de saber se poderia me ajudar com algumas dicas e passo a passo. Caso seja possível segue meu email: juliano.o.mesquita@hotmail.com
Obrigado,
JM