domingo, 8 de março de 2015

Engenharia reversa numa interface MID 95 para o TK

Depois de algumas horas de trabalho, consegui levantar o esquema da interface MID 95 para os TKs.

O primeiro passo foi fazer uma limpeza da placa e remover os 'jumpers' de fio que estavam sobre as trilhas, a fim de facilitar a visualização. Em seguida, com a placa já limpa (que inclusive desbotou um pouco) eu tirei fotos da frente e do verso da placa, com boa iluminação e máquina ajustada para tirar foto macro.


 Com as fotos em mãos, o próximo passo é sobrepor duas fotos, uma de frente e outra de verso utilizando transparências. Para auxiliar mais ainda, é possível criar uma outra camada com a pinagem dos componentes. A ferramenta utilizada para fazer isso foi o Inkscape


Com esse arranjo em mãos o próximo foi criar o diagrama no Eagle com todos os componentes da placa, e ir seguindo as ligações, uma a uma, marcando as ligações no esquemático. Também é bom conferir com o multímetro diretamente nos pinos da placa, em caso de dúvida.

A fim de conferir se o diagrama bate com o levantado, eu reconstruí o layout da placa. Para isso precisei editar alguns componentes (Eprom, os 74LSs, os transistores e alguns diodos) a fim de casar o 'footprint' com os utilizados na placa real. Se todas as ligações estiverem em ordem, vai ser possível criar um 'layout' muito semelhante ao da placa real.





A partir do circuito (link) é possível saber alguns detalhes a respeito do funcionamento da interface:

- A Interface MID nada mais é do que uma porta serial 'bitbang'. Os bits são escritos/lidos na porta 191 (0xbf, linha A6 em zero). A porta IC4B funciona como inversor do sinal /M1. Os diodos D2/D4 e D3/D6 formam uma porta OR. Interessante é que dois diodos e um resistor poderiam ter sido substituídos pela porta IC1C, que fica ociosa


- A conversão de nível de sinal TTL para RS232 é feita com o auxílio de transistores bipolares comuns. Os dados saem a partir do bit D0 e entram pelo bit D7. O conector de saída vai a um jack P2 estéreo.




- A cada 64us a interface gera uma NMI (clock de 4MHz dividido por 256). Como a velocidade de operação é de 1200bps para recepção, isso significa 13 interrupções (ou 13 amostras) para cada tempo de bit. No caso da transmissão, a 75bps, o tempo entre o início de dois bits consecutivos equivale a 208 interrupções.  Detalhe interessante  é o oscilador que é baseado num buffer (LS125). Esse foi um hack bem bacana no projetista para economizar um CI (na época eles não eram muito baratos).

A cada interrupção o circuito faz uma amostragem (leitura na porta 191) o que também limpa o flip flop que gera a NMI.


 
- O pino /ROMCS está ligado ao VCC. Isso significa que a interface não usa nenhum recurso da ROM (BIOS) do TK.



Meu agradecimento ao Augusto e ao Marcelo que meio que interromperam a negociação que estavam fazendo da interface a fim de que eu a adquirisse para fazer a engenharia reversa.

Segue link para um arquivo .zip contendo:

- Diagrama e PCB no formato Eagle 5
- Diagrama e imagem da PCB em PDF
- ROM da interface (e listagem 'desassemblada' pelo DZ-80).



Nenhum comentário: