Ganhei um quebra-cabeça: Um 286 da Itautec todo desmontado

Ano passado um amigo me deu de presente um conjunto de placas de um computador da Itautec e me disse que se tratava de um computador 286. O problema é que além de serem várias placas, todos os chips haviam sido removidos por um dono anterior supostamente com o intuito de vender ou reutilizar os chips genéricos e jogar fora o resto das placas. Porém, tanto os chips quanto as placas ficaram guardados em caixas por décadas. Foram então doados ao meu amigo e uns 10 anos depois foram repassados para mim.

Para complicar, a caixa de CIs contém não apenas os chips que eram utilizados nesse computador, mas também chips provenientes de outros equipamentos. Ou seja, uma bela bagunça! Acredito que existe uma chance muito pequena de eu conseguir identificar qual chip vai em cada um dos soquetes das placas. Mas achei divertido ao menos tentar.

Vou começar a análise mostrando algumas fotos das placas individuais. Um fato curioso é que existe uma placa de conectores onde todas as outras placas se encaixam. Essa placa não contém nenhum componente eletrônico. Possui apenas os conectores:

FRENTE:

VERSO:

São 7 conectores, mas eu só recebi 4 placas. Espero que o conjunto de placas esteja completo e que alguns slots sejam apenas para expansão opcional…

Placa gráfica + Interface para impressora

FRENTE:

VERSO:

CONECTORES:

Das 4 placas, a mais simples de se desvendar foi a responsável pela saída de vídeo e interface com impressora. Em primeiro lugar, na própria placa temos um texto na camada de silk que identifica a sua função: “VIDEO GRAFICO + INTERFACE PARA IMPRESSORA PARALELA”.

Mas mesmo sem essa identificação, poderíamos identificar ao menos a função gráfica por conta da presença de um chip Motorola MC6845P. Esse é um famoso CRTC (controlador de CRT - tubo de raios catódicos). A função desse chip é gerar um sinal de vídeo a partir de um buffer de texto e de uma ROM que forneça bitmaps correspondentes à representação gráfica de cada um dos caracteres.

Chip controlador de vídeo (também conhecido como gerador de caracteres):

Como havia um único soquete nessa placa (identificado como CI12), ele só poderia ser o local onde uma EPROM deveria ser instalada contendo os desenhos dos caracteres. Busquei entre os chips avulsos quais eram EPROMs de 24 pinos. Colei adesivos nas janelinhas de todas as EPROMs pra evitar que os dados se corrompam com a exposição à luz ambiente. (dá pra notar que usei pedacinhos de adesivos do Garoa Hacker Clube, que era a única coisa que eu tinha disponível no momento)

Destaque da EPROM soquetada na posição CI12:

Após fazer o dump dessa EPROM, escrevi um pequeno script em python para interpretar os dados e visualizar os desenhos dos caracteres. Pronto! Agora não apenas sabemos que achamos o chip correto como também conhecemos o aspecto visual das fontes bitmap deste 286 da Itautec :-D. Vejam o resultado abaixo:

Por fim, vale mencionar que a placa contém uma etiqueta da Itautec com a data de 03/09/91 que deve corresponder à data do controle de qualidade ou de alguma manutenção:

Não consegui identificar nenhum CI dedicado ao interfaceamento com a impressora paralela por meio do conector DB25. Creio que toda a lógica digital para essa interface esteja implementada com as dezenas de chips TTL da família 74 que populam todo o resto da placa.

Uma tarefa um pouco mais trabalhosa e que vou deixar pra depois seria mapear os pinos do conector lateral que essa placa possui para ser encaixada em um dos slots daquela primeira placa discutida anteriormente. Seria interessante saber qual é a distribuição de sinais de controles nesse conector para acesso ao CRTC e à porta de impressora.

Outras 3 placas

Eu ainda não analisei em detalhe as outras 3 placas, mas vou fazer outras postagens aqui similares a essa assim que eu avançar na solução desse quebra-cabeças. Duvido que eu vá conseguir solucionar por completo, mas é de toda forma interessante tenter descobrir o quanto de informação ainda é acessível por meio das evidências que temos nos circuitos que ainda temos em mãos :slight_smile:

Happy Hacking,
Felipe “Juca” Sanches

1 curtida

O pessoal no Facebook pediu pra eu publicar mais fotos das outras placas:

Então lá vamos nós!

Placa de processador

FRENTE:

VERSO:

CONECTORES:

Placa de RAM

FRENTE:

VERSO:

CONECTORES:

Placa controladora da discos (Floppy e HDD)

FRENTE:

VERSO:

CONECTORES:

Happy Hacking!
Felipe “Juca” Sanches

Lindo, lindo, lindo!!! Tudo chipset original, sem ASIC nenhum!!! No máximo, alguns poucos PALs.

Estou curiosíssimo com os chips faltantes na placa da CPU. O DIP24 (CI28) seria o RTC 6818? O DIP40 (CI54) eu não faço ideia.

Minha surpresa foi a presença de um 74LS612 (CI22). Não imaginava que um 286 precisasse dele. Vou pesquisar pra entender qual a função num micro desses.

Na placa de memória, além dos 2 soquetes vazios de 20 pinos, tem os 4 soquetes de 28 pinos que, provavelmente são das EPROMs da BIOS. Vai dar trabalho saber qual é qual em cada soquete.

Outra curiosidade é o uso do soquete DB-25 fêmea na porta serial (geralmente é macho na placa, pra distinguir da porta paralela).

Na placa controladora de HD + floppy, acho que o soquete vazio de 40 pinos (CI37) deve ser um processador ou microcontrolador (talvez um Intel 8049 ou algo assim).

1 curtida

De todas as placas, a única que tem um soquete DIP24 é a placa de CPU. Na caixa eu tenho 4 chips DIP24:

Me parece que os únicos candidatos sérios seriam o timer P8254 ou o RTC 6818 (como o Emerson sugeriu acima).

Para validar se o RTC 6818 é o chip correto para o soquete CI28 da placa de CPU, comecei a mapear algumas das interligações de pinos desse soquete com outros chips da placa.

Comecei pelo pino 13 que, conforme o datasheet do RTC seria o sinal /CE (Chip Enable, ativo baixo). Notei que há uma trilha que o interliga ao pino 2 do CI48, um chip IC4096 (conjunto de 6 portas NOT). O pino 2 é a saída de uma porta NOT, cuja entrada correspondente é o pino 1. Entretanto, a trilha que trazia um sinal até o pino 1 está cortada e há um resistor de pull-up soldado sobre o CI ligando o pino 1 ao pino 16 (VCC).

Com isso, o sinal de chip-enable ficará preso sempre em HIGH, e o RTC nunca poderá ser habilitado pela CPU. A não ser que have alguma outra trilha trazendo esse sinal de outra parte da placa. Por algum motivo alguém resolveu inutilizar esse sinal de chip-enable do RTC. Ou talvez seja para corrigir um erro de projeto da placa. O sinal vinha do pino 10 (/MRC - master reset counter input, active LOW) de um contador 74950, o que não faz nenhum sentido. Talvez esse seja o erro de projeto, mas eu ainda não estou satisfeito com essa explicação…

Identifiquei o chip da controladora de discos!

Analisando a placa de controle de discos (disquete e disco rígído), tentei achar qual dos chips candidatos seria o correto para o soquete DIP40. Buscando datasheets no Google, encontrei uma referência ao chip cujo código é ICG16060. Existe um engenheiro chamado Wataru Ueda, cujo currículo (que se encontra-se em http://www.escavador.com/sobre/842912/wataru-ueda#!) contém a seguinte descrição de projeto:

1984 - 1989

Gate Array ICG16060 - ITAUCOM - 100 mil peças produzidas, Descrição: É um componente desenvolvido na Itaucom destinado a executar o controle digital de um floppy disk driver de 5,25". A sua base é um GATE ARRAY com todas as funções necessárias incorporadas no chip. Foram utilizadas cerca de 100.000 componentes durante a vida útil do floppy disk driver 5,25" da Itautec… , Situação: Concluído; Natureza: Desenvolvimento. , Alunos envolvidos: Graduação: (0) / Especialização: (0) / Mestrado acadêmico: (0) / Mestrado profissional: (0) / Doutorado: (0) . , Integrantes: Wataru Ueda - Coordenador., Financiador(es): Itau Tecnologia S/A - Remuneração.

A placa tem 2 chips da família WD (o WD10C20B e o WD2010B) que são controladores de disco rígido, e o ICG16060 (chip custom da Itautec) seria pra controlar disquetes. Portanto, considero que este é chip correto para o soquete CI37 (o único dessa placa) e, com isso, a placa controladora de discos está completa. Só faltam duas! :smiley:

Happy Hacking,
Felipe “Juca” Sanches

Interessante… Contraria o que eu tinha pesquisado, de que ai deveria haver algum tipo de processador, típico das controladoras de HD MFM, mesmo pq, o controlador de floppy é o Nec D765AC (CI43), que está mais próximo dos conectores dos flats dos drives de disquete.

Eu faria uma teoria da conspiração: O ICG16060 está no lugar correto, mas a função dele não é exatamente a descrita na documentação encontrada… Mas, se funcionar, whatever!!! hehehehehe

1 curtida

Aquele monte de componentes (cristal, resistores, transistores, diodos) a direita do 4069 (CI48 na placa da CPU) parecem ser os componentes de suporte do RTC (tanto o clock, quanto o controle de bateria para manter o RTC alimentado com o micro desligado - talvez de recarga da bateria se for o caso do projeto).

Veja como estão conectados os pinos 2 e 3 do soquete vazio…

http://www.datasheetlib.com/datasheet/1438267/cdp6818e_intersil.html?page=8#datasheet

1 curtida

Todos chips DIP40 que tenho na caixa

Essa é a foto de todos os chips DIP40 ainda disponíveis na caixa de chips sortidos:

Primeira fileira de cima (da esquerda para a direita):

Segunda fileira (da esquerda para a direita):

  • Um Z80 !!! :stuck_out_tongue:
  • Não sei identificar, mas por baixo consta “Malaysia 7627”
  • R65C02PI (CPU 6502 fabricada pela Rockwell) Será que isso era de um Apple 2 ? :slight_smile:
  • CPU Intel D8749H http://www.alldatasheet.com/datasheet-pdf/pdf/80209/INTEL/D8749H.html
  • difícil ler, mas é algo parecido com: JAPAN NEC 8403(N) D804(1C) 591 Em parênteses os dígitos que fiquei em dúvida ao tentar ler.

O Alexandre Souza esclareceu pelo Facebook que o barramento da placa de slots é padrão ISA e que “backplane” é o nome comumente usado para essa tipo de placa:

Mais dicas sobre os chips da placa CPU

Abaixo, alguns outros comentarios interessantes que também rolaram no Facebook sobre a identificação dos chips avulsos:

Na minha caixa de chips não há nenhum processador 80286 e nem o co-processador 80287. Acho que esses o dono anterior conseguiu vender. E, se não me engano o co-processador matemático costumava ser um item opcional.

Com base nas dicas dadas pelo Alexandre sobre o controlador de teclado (8048, 8049 ou 8052) os candidatos que temos em mãos são:

  • P87C52UBPN
  • INS8039N-6 (CPU da familia 8048)
  • Intel D8749H

E agora ?

Eu iria no 8039 e depois no 8749. Ah, quanto ao 286, recomendo FORTEMENTE voce substituir aquele soquete por um PLCC-84 comum, pq vai ser mooooito mais facil de voce achar o 286 que cabe ali. Eventualmente talvez eu ate tenha um no meu estoque. Com memoria, video e 286, voce ja consegue bootar essa maquina.

ROMs da BIOS encontradas!

Na caixa eu tinha umas 10 EPROMs de 28 pinos. Algumas em péssimas condições, outras um pouco melhores. Eu fiquei bem preocupado por que como EPROMs são chips bastante genéricos, a chance das originais contendo a BIOS desse 286 já teres sido reutilizadas em algum outro equipamento eram altas.

Entretanto, depois do esforço de fazer o dump de todas e olhar o conteúdo de cada uma em um editor hexadecimal, finalmente consegui identificar as duas ROMs que eu estava procurando:

Note que os conteúdos das duas ROMs são intercalados. No início de cada uma vemos as seguintes strings:

  • IatcIfr.iaSA C26 / BO V.3
  • tue nomtc P8 / IS 30

Mesclando as strings temos:

  • Itautec Informática S.A. PC286 / BIOS V3.03

Outro detalhe interessante é que os primeiros 2 bytes da BIOS (o primeiro byte de cada ROM) são: 0xEB 0x3D, que correspondem a uma instrução de JMP (salto) para o ponto de entrada do código, para “saltar” além deste bloquinho inicial de metadados.

Com isso, a placa de RAM também está quase completa. É nela que ficam as ROMs da BIOS (então eu deveria chamar essa placa de “placa de memórias”). Existem 4 soquetes DIP28 nela. Só não sei ainda exatamente em quais desses 4 vão as duas ROMs, mas com certeza elas ficam por ali deixando 2 soquetes vazios.

Existe também a possibilidade remota de haver mais duas ROMs com um segundo bloco de memória. Serei prudente e vou guardar as outras EPROMs avulsas caso eu precise voltar a elas em busca de mais duas ROMs da BIOS. Mas acho que não é o caso.

Próximos possíveis passos

  • Arranjar uma CPU 80286 e um co-processador 80287
  • Tentar carregar essas ROMs de BIOS no MAME pra ver se boota com um driver genérico de 286 e talvez com base nisso escrever uma variante de driver para acomodar as eventuais diferenças no hardware. Isso pode ser vir inclusive para validar se a seleção de chips discutida acima está correta.
  • Arranjar algum monitor que possa ser usado com essa placa de vídeo
  • Idem para teclado. Precisaria estudar melhor como é a interface com o controlador de teclado.
  • Ligar na tomada ? Acho que não tenho coragem ainda para ir por esse caminho. Só quero tentar ligar quando eu tiver mais confiança nas conclusões tiradas.
  • Será que espetar uma plava VGA ISA daria certo? A placa de vídeo atual parece que só lida com telas de texto.

Enfim… muitas possibilidades…

Happy Hacking,
Felipe “Juca” Sanches

Creio que não haja nenhum problema em colocar uma placa de vídeo VGA… Em teoria (nunca se tem certeza até testar) funciona.

A placa CGA tem modo gráfico (320x200x4 cores ou 640x200 monocromático), mas achar monitor compatível é questão de sorte.

Veio a fonte junto?

1 curtida

Não. Só recebi as 5 placas e a caixa de chips.

Modifiquei o driver do PC/AT 286 no MAME em src/mame/drivers/at.cpp e adicionei as ROMs do Itautec como mais uma alternativa de BIOS. Compilei. Rodei o emulador com a ROM da Itautec selecionada e a tela fica preta.

Rodei novamente com o debugger habilitado e notei que o código vai parar numa instrução de HALT:

Acho que o hardware da placa AT-286 emulada pelo MAME tem algumas diferenças em relação ao hardware do 286 da Itautec e, por causa disso, a BIOS se perde durante as rotinas de inicialização, “jogando a toalha” nessa instrução de HALT.

Então o caminho agora é o de tentar ver quais dispositivos a sequencia de boot inicializa. Rodei mais uma vez o emulador com o debugger habilitado, só que desta vez executei as instruções uma-a-uma. Notei que a primeira operação de I/O é com um dispositivo mapeado no endereço 0x64:

Consultei um livro chamado “Programando em Assembler 8086/8088 IBM-PC” que foi usado pela esposa atual do meu pai durante a graduação dela em Análise de Sistemas. Nesse livro há um mapa dos endereços I/O de um IBM-PC. Lá consta que os endereços de 0x60 a 0x6F são usados para configuração da PPI 8255A. Mas nessas placas da Itautec não temos um 8255!

Pra auxiliar nessa depuração da sequencia de boot, eu estou interessado em mapear os endereços dos chips existentes na placa de CPU, rastreando os sinais de chip-select de cada um. Mas pra isso vou precisar novamente do meu multimetro que está sem bateria. Acho que agora vou dar uma passada no supermercado comprar uma bateria e aproveitar pra tomar um sorvete, por que o calor aqui está absurdo hoje!

Happy Hacking!
Felipe “Juca” Sanches

Já conseguiu o 80286?
Tenho um sobrando aqui e posso doar pro seu projeto :slight_smile: Só não é garantido que funcione.

Olá Leonardo (Lrrosa),

Eu ainda não tenho o chip do 80286 não (nem o 287). Parei de lidar com essas placas por conta de uma viagem de final de ano. Eu aceito a doação, mas não posso garantir que eu vá conseguir terminar por completo a montagem das placas. Eu tenho muitos projetos paralelos e trabalho um pouquinho em cada um por vez (como você pode notar ao ler as postagens aqui neste fórum). Em algum momento em Janeiro irei retomar esse projeto. A sua doação do 80286 pode ser um incentivo para tal. Mas também precisarei ir atrás de uma fonte de alimentação adequada, um monitor, um teclado, assim como descobrir o resto das conexões das placas e mapeamento dos chips corretos.

Happy Hacking,
Felipe “Juca” Sanches

Sem problema Juca, me passa seu endereço que eu envio.
Abraços.

1 curtida

Felipe, a fonte pode ser qualquer uma de AT (incluindo ATX). O monitor pode ser um cga, um LCD que aceite 15KHz ou um VGA mono (que tambem aceitam normalmente 15KHz de cga). Posso te emprestar um se precisar. O teclado, qualquer teclado de pc com conector din 5 pinos (ou adaptador de mini din pra din) funciona nessa placa. Se trouxer o bicho aqui no Tabajara Labs, boto isso funcionando em 10 minutos

1 curtida

Recebi pelos correios na 6ª feira passada, e gostaria de agradecer aqui, o chip do processador 80286 enviado como doação pelo amigo @lrrosa :slight_smile:

1 curtida