Projeto Hardware - Revista CPU MSX




Lembro que fiquei sabendo desse projeto, através da revista CPU MSX nr 24 que trazia a parte 2 do mesmo. E como eu detalhei em Um pouco da minha história com o MSX, eu cheguei um pouquinho atrasado em relação ao resto dos muitos afcionados que estão por ai. E ao ler aquele artigo, fiquei muito interessado pelo projeto. Afinal tratava-se de tudo o que eu desejava: um projeto de eletrônica que demostraria como construir um cartucho de I/O para o MSX, o que permitiria ampliar meus "horizontes". Lembro que foi complicado conseguir a revista nr 22, que continha o primeiro artigo que descrevia o projeto, as ideias envolvidas e todo o restante. Mas, com um pouquinho de esforço eu consegui a revista nr22 e depois as revistas nr25 e nr27 com mais ideias de uso para a placa!






Obs.: Hoje você consegue fazer o download de toda a coleção no https://datassette.org/

O meu primeiro entrave na época foi que eu não tinha muita "habilidade" na confecção de circuitos impressos de dupla face. E a montagem do projeto em placas do tipo padrão era praticamente impossível devido a necessidade da mesma conter a pinagem do conector de expansão (entrada de cartuchos). Namorei o projeto durante um bom período e, como estava bastante envolvido em um outro projeto (um braço robótico para MSX publicado na Revista Saber Eletrônica - clique aqui para ver a minha versão), acabei deixando esse projeto de lado.


A placa

Você não precisa necessariamente ter as revistas que citei em mãos para fazer a sua. Na internet você encontrará muita informação sobre a mesma. Um site com bastante detalhes sobre que pode ser citado aqui é o MSXPRO. Aliás, neste site é possível encontrar muita informação a respeito do MSX. Vale muito a pena uma visita.

Aqui vou descrever um pouco sobre a minha versão e se você tiver interesse poderá preparar a sua (caso não tenha o feito isso ainda).


O circuito

Abaixo mostro o circuito da placa que eu desenhei no Eagle CAD a partir do esquema original, baseando-me nas informações presentes nas edições nr22 e nr24 da Revista CPU MSX e também nas presente no site da MSXPRO.




O circuito é bastante simples. Basicamente temos um conjunto de portas TTL, U2 e U3, que ajudam no endreçamento do circuito para o MSX e U1 uma PPI8255 que é quem faz todo o trabalho "pesado" no circuito. Os capacitores C1 a C3 são de desacoplamento e C4 um pequeno filtro para a alimentação de 5VDC que é retirada do próprio barramento do MSX. O LED1 é apenas decorativo e ajuda a verificar a alimentação de 5VDC presente na placa/circuito.

Se quiser conhecer mais sobre o 8255, recomendo a leitura do datasheet do mesmo. Mais abaixo, em "Prova e Uso", ajudo apenas a conhecer melhor suas palavras de comando e seus efeitos em suas portas de I/O.


A montagem

O layout que preparei para a minha placa esta abaixo e mais abaixo uma imagem da placa que foi confeccionada pela JLCPCB a um custo muito bom e também com excelente prazo de entrega. Eu aproveitei a área livre da placa para colocar algumas ilhas e ter assim uma pequena proto-área para futuras implementações.




A montagem não demanda muito tempo. Basta soldar os capacitores C1 a C3, além de C4 (este requer um certo cuidado já que é polarizado), o resistor R1 e o LED1. Para a montagem dos CIs você pode utilizar ou não suportes para os mesmos. Se optar por utilizar os suportes, saiba que será muito difícil montar a placa dentro de uma caixinha para cartuchos. Eu comprei a minha junto ao Daniel Ravazi (Fractal).

Sei que na época, muita gente desmontou aquele cartucho de jogo considerado chato ou ainda o coitado do "Ligue-se ao Expert" da Gradiente para usar a caixa, mas acho que isso hoje não é lá muito recomendável já que qualquer coisa relacionada ao MSX hoje "vale ouro"!





Prova e uso

O circuito original utilizava os endereços 0FCH à 0FFH para controle e programação das portas da PPI8255. Porém na edição 24 da revista CPU MSX um leitor (Fábio M. Prado e também o Ademir Carchano) alertou que estes endereços não poderiam ser utilizados, já que o padrão MSX previa o uso destes para a Memory Mapper. O problema seria resolvido se, ao invés dos endereços previamente selecionados para o projeto, fossem utilizados qualquer outro endereço entre 00H à 3FH, que são endereços livres deixados pelo padrão para projetos dos usuários. Foi então que no mesmo artigo foi proposto o uso dos endereços 03CH à 03FH. Esses passaram a ser então os endereços de acesso a placa desde então. Eu optei também por manter os mesmos, afinal eu pretendia ficar o mais próximo possível do projeto original.

Sendo assim, na tabela abaixo temos os endreços e suas funções:


Endereços para acesso a PPI8255 da placa via MSX
03CH
W/R Controle da  Porta A
03DH
W/R Controle da Porta B
03EH
W/R Controle da Porta C
03FH
W Configuração

W - Escrita
R  - Leitura

Abaixo, a tabela demonstra as palavras de comando/programação e seus efeitos nas portas.


Palavra
de
comando
Porta A

Porta B

Porta C
PA0 a PA7 PB0 a PB7 PC0 a PC3
PC4 a PC7
80
OUT
OUT
OUT
OUT
81
OUT
OUT
IN
OUT
82
OUT
IN
OUT
OUT
83
OUT
IN
IN
OUT
88
OUT
OUT
OUT
IN
89
OUT
OUT
IN
IN
8A
OUT
IN
OUT
IN
8B
OUT
IN
IN
IN
90
IN
OUT
OUT
OUT
91
IN
OUT
IN
OUT
92
IN
IN
OUT
OUT
93
IN
IN
IN
OUT
98
IN
OUT
OUT
IN
99
IN
OUT
IN
IN
9A
IN
IN
OUT
IN
9B
IN
IN
IN
IN

OUT - Saída
IN - Entrada

Observando a tabela vemos que é possível programar as portas de I/O da PPI8255 de várias maneiras, permitindo várias configurações .

Para testar o funcionamento, basta conectar a placa a um barramento livre do seu MSX (se não estiver utilizando uma caixa, tenha cuidado para não inverter a placa o que poderia danificar não apenas a mesma como também seu MSX!) e ligar o MSX (não preciso dizer que o MSX deve estar desligado antes de você inserir um cartucho né?!). Quando ligado o MSX simplesmente não faz nada, pois não temos nenhuma ROM na placa com um programa que ira rodar durante a inicialização do MSX ou ainda acrescentar algo ao BASIC, por exemplo. Essa é simplesmente uma placa de I/O que para operar corretamente precisa receber os comandos para tal.

Para escrever um byte em uma porta qualquer da PPI8255 você precisa usar o comando "OUT" do BASIC como segue:

OUT &H03x, &Hyy

com:

x - C a F
yy - 00 a FF

E para ler um byte de uma porta, basta usar:


PRINT INP(&H03x)

com:

x - C a E

Lembrando que a leitura ou escrita em uma porta depende da palavra de comando enviada a PPI através do endereço 03FH (escrita apenas). Ou seja, primeiro você configura a PPI para somente então utilizar suas portas de acordo com a configuração feita.


Conclusão

Nunca é tarde demais para se fazer algo! Não existe uma época certa para isso ou aquilo! Talvez até tenha, mas apenas para os "caga regras"! Se você deixou algo por fazer quando tinha seu micrinho, seja ele qual for, e hoje tem vontade de fazer não se deixe intimidar e vá em frente. Antes tarde do que nunca! A diversão será sempre gar
antida!!!

Sorte e sucesso em sua montagem!


Downloads:
- Circuito elétrico
- Layout da placa - top layer - invertido (método transferência térmica - clique aqui)
- Layout da placa - Botton layer - não invertido (método transferência térmica)
- Lista de materias - use o desenho do circuito elétrico e outras informações para saber o que comprar!


Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.