Adaptador de teclado PS2 para MSX – Parte 9

Olá pessoal;

Nos posts anteriores, aprendemos como construir um gravador de PIC, como manipular uma protoboard, como acender um led, como realizar a gravação de um microcontrolador entre muitas outras coisas a um custo relativamente pequeno.

Para uma pessoa com um pouco ou nenhuma habilidade de eletrônica é possivel realizar essas tarefas com certa facilidade, e espero que todos aqueles que vem acompanhando nosso site possam estar evoluindo conosco na construção de nosso adaptador, e tenham conseguido construir o gravador.

Antes de mais nada, quero aqui salientar que andei dando uma olhada na internet sobre algum projeto semelhante, e o que mais me chamou a atenção foi o do Tabajara Labs, que é o que realmente mostra com clareza o que realmente aconteçe no controle de teclado do MSX, infelizmente a matéria que esta no ar ainda esta incompleta, todavia vale muito a pena dar uma olhada.

Apenas para recordar, quando abrimos o teclado do Expert, podemos verificar com clareza a seguinte situação;

Teclado do Expert aberto, mostrando o contador binário fixado na placa.

Na figura acima, podemos ver o chip 74LS145 que nada mais é do que um contador binário.

O MSX seleciona a linha através dos 4 bits menos significativos da porta C da PPI que vão a um decodificador BCD-Decimal (74LS145).

A leitura das colunas referentes à linha selecionada é feita através da porta B da PPI.

Logo entendemos que o MSX tem uma matriz de 11 X 8 bits.

Sabemos que a principal função do 74LS145 é a de decodificar as linhas e habilitando-as para a leitura pela porta B da PPI.

Do lado do MSX sabemos que a PPI é o 8255 da Intel.

Foto da PPI 8255A  datado do ano de 1.975, fabricado pela Intel.

Pensando de uma forma bem simples, a primeira coisa que me veio a mente é ter o scancode do teclado do MSX, mas afinal de contas o que é o scancode ?

Um scancode é simplesmente o número de uma tecla. O teclado designa um número para cada tecla no teclado; este é seu scancode.

Um código numérico transmitido a um computador sempre que uma tecla é pressionada ou liberada. Cada tecla do teclado tem um código de varredura específico. Esse código não é igual ao código ASCII usado para representar a letra, número ou símbolo que identifica a tecla; ele é um identificador especial da tecla propriamente dita, sendo sempre o mesmo, independentemente do caractere associado a ela.

No PC, quando uma tecla é pressionada, o código de varredura é transmitido ao computador, onde a parte do ROM BIOS (read-only memory basic input/output system) dedicada ao teclado traduz o código de varredura no seu equivalente em ASCII.

Como uma mesma tecla pode produzir mais de um caractere (por exemplo, o a minúsculo e o A  maiúsculo), o ROM BIOS também acompanha o status das teclas capazes de modificar a configuração do teclado, como Shift, levando-o em conta na hora de traduzir os códigos de varredura. Comparar com key code (código da tecla).

No MSX, quando uma tecla é pressionada, o código de varredura é transmitido ao computador e enviada a PPI, utilizando para isso o contador binário 74LS145.

Continuando a pensar de um modo simples, como poderei ter acesso ao scancode do teclado do MSX  ?

Mais uma vez recorri a internet para ver se existia alguma tabela pronta para ir direto ao assunto, e no final acabei não encontrando nada. O que me restou é dar uma olhada nos manuais existentes aqui comigo e ao pessoal que acompanha o site. : )

Encontrei na internet um pequeno programa, que descrevo aqui;

10 DEFINT A-Z:K=&HFBE5:CLS
20 FOR I=0 TO 10:PRINT RIGHT$(“0000000″+BIN$(PEEK(K+I)),8):NEXT
30 PRINT CHR$(11):GOTO 20

Esse pequeno programa tem a capacidade de representar em modo binário qual a tecla correspondente esta sendo pressionada.

Quando colocamos o mesmo para executar, ele cria a seguinte situação;

Ele cria 12 (doze) linhas, todas elas com o número 1 repetidos 8 vezes (8 bits).

Sendo assim => 1 1 1 1 1 1 1 1;

Quando pressionamos a tecla que desejamos identificar, suponhamos que seje a tecla 0 (zero) ele coloca um bit zero na segunda linha da matriz identificando qual tecla foi pressionada.

1 1 1 1 1 1 1 1      = 1 linha ( nao encontrei tecla válida para a mesma ).

1 1 1 1 1 1 1 0      = 2 linha  ( notem o zero) significa o pressionamento da tecla zero do teclado.

1 1 1 1 1 1 1 1       = 3 linha

1 1 1 1 1 1 1 1      = 4 linha e assim até a linha 12

Como temos no teclado do MSX uma matriz de 11 x 8, penso comigo que a primeira linha é desconsiderada, e temos que pegar a segunda linha em diante, que na verdade comparando com a tabela, realmente bate com a realidade da situação.

A idéia é pegar o scancode das teclas do MSX e criar uma tabela para disponibilizar aqui no site para que possamos continuar com o desenvolvimento de nosso adaptador.

Caso algum leitor tenha essa tabela pronta, por favor colabore conosco.

Acima a tabela de chaves da matriz internacional do teclado do MSX.

E agora, será que a tabela de chaves usadas nos micros MSX aqui no Brasil são as mesmas das utilizadas na matriz internacional ?

Tendo em mente que a tabela internacional nos serve de referência para identificar o teclado do MSX, e temos o programa em Basic acima para representar binariamente o código das teclas, então fica fácil criar uma tabela para representar o scancode Tupiniquim.

Por exemplo se temos a tecla Ç do teclado do MSX na tabela utilizada no Brasil, ela fica identificada na ROW 1 do 7(sétimo) bit.

Ex: 1 1 1 1 1 1 1 1 = row (0)

0 1 1 1 1 1 1 1  = row(1) = representa o Ç no teclado Brasileiro.

Esse mesmo programa pode ser utilizado para identificar qualquer tabela de chaves existentes nos padrões MSX.

Para quem entende um pouco de binário creio q a coisa ficou bem clara, e para quem não entende muito, vale pelo esclarecimento.

Agora que sabemos como identificar o scancode do teclado do MSX, creio que agora precisamos estudar a entrada de teclado do mesmo, da qual em seu encaixe de teclado temos o plug din de 13 pinos.

Conector de 13 pinos Din que equipa o teclado do Expert

Ai você usuário do HotBit deve estar se perguntando, e quem tem um HotBit com teclado quebrado vai ficar de fora desse adaptador ?

A princípio sim, porém tenho um projeto aqui que possibilita a ligação de um teclado PS2 via conector de cartuchos, que pode facilmente ser encaixada na entrada lateral, mas ainda não tenho previsão da data de lançamento do mesmo.

Mas voltando ao assunto, agora temos que entender como são as conexões de entrada do teclado no Expert.

Mas isso já é matéria do nosso próximo post;

MsxRevival;

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s