Clone da Interface Paralela Microdigital para TK3000//e MA163

17/04/2024

Mais um projeto de Fábio Belavenuto. Ele realizou engenharia reversa tendo em mãos uma placa original da Microdigital, modelo MA163, que implementa porta paralela no TK3000//e. Vamos replicar abaixo o texto encontrado no github do projeto.

Placa original, ainda montada
Placa já sem os componentes, para realizar a engenharia reversa

Placa já clonada


Mais detalhes: https://github.com/fbelavenuto/MA163

MA163

Interface Paralela Microdigital para TK3000//e
Foi realizado uma engenharia reversa na interface paralela da Microdigital (MA163) para TK3000//e. O esquema da interface foi recriado junto com o roteamento da placa original, podendo assim ser produzido placas que funcionam como a original.
O manual original da interface digitalizado foi encontrado neste link e neste link, uma cópia do arquivo está neste repositório.

Pastas

Common possui os binários das ROMs, seus disassemblys e uma cópia do manual original digitalizado.
Dentro da pasta Rev1 há três subpastas com os nomes DocsEagle e Gerber. O esquema elétrico em PDF, imagens, lista de materiais, etc, estão em Docs. Na subpasta Eagle há os arquivos originais para a versão 9 do software Autodesk Eagle. Para a confecção das placas há os arquivos em formato gerber na pasta Gerber que podem ser enviados para uma empresa de fabricação de PCBs.

Montagem

A lista de material pode ser encontrada aqui.
Para facilitar a montagem abra o arquivo ibom.html localmente ou acesse este link para visualizar os componentes e seus lugares na placa. Criado com o projeto InteractiveHtmlBom, linha de comando: generate_interactive_bom --highlight-pin1 all --blacklist-empty-val MA163.brd
Soquetes para os CIs não estão na lista de material mas são altamente recomendados para facilitar futuras manutenções.
Há a opção de usar uma rede resistiva RN1 ou usar os resistores R8 a R17 no seu lugar.
A montagem das memórias dinâmicas são opcionais. Elas são utilizadas como buffer para liberar o micro antes de terminar a impressão. Sem as memórias o micro fica “travado” até terminar a impressão. Podem ser usadas memórias 4464 para ter um buffer maior de 64KB.

Disassembly

Foi efetuado o disassembly nas duas ROMs da interface, uma ROM é para o Apple-2 e outra ROM é para o Z80. Por enquanto não foi entendido totalmente as funções mas a maioria das coisas principais foram entendidas e comentadas. Para estes trabalhos foi utilizado a versão 6.1 Pro do software IDA da Hex-Rays.

Observações

É recomendado a fabricação com finalização ENIG ou ouro no conector Edge para mais durabilidade.
O jumper de solda da placa não precisa ser soldado, este jumper não tem utilidade pois se mudado desabilita a saída de dados para a impressora, tornando a interface inútil!

Curiosidades

A ROM do Apple-2 não é linear! O pino A6 desta ROM é invertido e controlado pelo Z80 e /DEVSEL, sendo assim o código que aparece para o Apple-2 muda dinamicamente. O Z80 quando escreve no endereço $5000 define o sinal FLAG_FW em 1. Quando o firmware do Apple-2 escreve em $C0xx (ativando /DEVSEL) o sinal FLAG_FW vai para 0.
O sinal FLAG_FW se em 1 faz A6 ficar invertido quando o Apple-2 acessa de $Cx00 a $Cx7F e ao acessar $Cx80 a $CxFF o sinal A6 é mantido sempre em 1. Se FLAG_FW for 0 o sinal A6 fica invertido sempre.
No TK3000//e o status da tecla MODE aparece no pino INTIN do slot 1. Se MODE estiver desabilitado o pino INTIN fica em 1.
Para a leitura de flags o Z80 utiliza o opcode IN A,(0), porém a operação de I/O não é decodificada! O truque é que os sinais são forçados no barramento de dados com resistores, assim ao executar o IN o Z80 deixa o barramento livre e os resistores forçam o sinal que é lido corretamente. O status da tecla MODE vai no pino D5, o sinal BUSY vai no pino D6 via resistor R2 e o sinal !FLAG_FW vai no pino D7 via resistor R4.