Adaptador de teclado PS2 para MSX – Parte 10

Olá Pessoal;

Complementando o que foi escrito no post anterior;

Para construirmos um adaptador de teclado PS2 para ser utilizado num MSX precisariamos ter em mente como o teclado padrão do próprio MSX opera, e nesse caso foi necessário abrir o mesmo e descobrimos um chip chamado 74ls145 conforme a figura abaixo;


O que faz esse chip exatamente ? Sabemos que ele é um contador binário BCD, ou melhor é um decodificador que possui em sua estrutura interna 8 inversores e 10 portas NAND com quatro entradas em cada porta.

Os inversores são colocados em pares para fazer a entrada BCD colocando os dados para a decodificação pelas portas NAND.

A seguinte pinagem é observada;

Pinos 12 a 15 são pinos de Entrada;

Pinos 01 a 07 e 09 a 11 são pinos de Saída;

Se você observar com muita atenção a figura acima, poderá entender a estrutura interna desse chip e ver como são feitas as ligações dos pinos de entrada e saída. Muito detalhado não ? 🙂

Sabemos que na saída das portas NAND teremos o sinal de entrada conforme a tabela abaixo;

Tabela de entradas e saídas, o espaço invalid não é utilizado pelo chip de BCD, a letra H significa nível alto (High) e a letra L nível baixo (Low).

De acordo com o manual técnico da Microsoft datado de 05/04/1.984 – release 3.1, a matriz de teclado funciona dessa maneira;

No desenho acima, você deve observar que é possível identificar a PPI 8255, o chip de teclado e como tudo ali aconteçe, desde o envio, como a recepção dos dados de teclado.  De Y0 a Y9 você pode observar o fluxo de envio e de X0 a X7 o fluxo inverso.

Com esse pequeno programa podemos identificar qual tecla esta sendo pressionada pelo teclado do MSX, e assim identifica-la de modo binário.

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

No caso específico do Expert a linha que se refere ao Ç tem o seguinte resultado;

0 1 1 1 1 1 1 1  = row(1) = representa o Ç no teclado do Expert ( Brasil ). Se você usar um emulador, e estiver utilizando um computador com teclado internacional, irá perceber que se pressionar a tecla [;:] do teclado irá mostrar o Ç.

Se você observar a tabela abaixo, poderá ver que a coordenada que passei acima do resultado binário, é exatamente a do [;:] do teclado do MSX padrão internacional.

Notem que o 0(zero) representa a tecla pressionada.

Para entender ainda mais, vou colocar aqui a matriz internacional, assim vai dar ao leitor a exata noção do que aconteçe.

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

A matriz do teclado do MSX é formada de 11 linhas de 8 bits cada, ou para um bom entendedor 11 x 8, observe acima isso que estou demonstrando, agora você não pode dizer que não entendeu ….não é ?

Estou fazendo questão de retornar aos assuntos do post anterior em alguns casos para que o leitor possa entender de um modo global todos os aconteçimentos em um único post.

Mas agora começamos a falar da PPI, que tal conhecermos um pouco dela, já que vamos ter que conversar com ela para que possamos tanto enviar como receber os dados do teclado.

Pode observar o quanto é maravilhosa essa máquina chamada MSX ? Que potencialidade nós temos em mãos ? E o que podemos tirar dela ainda ?

Vamos então demonstrar quais são as funções da PPI num modo global e focarmos na parte que nós interessa nesse post, que é o teclado.

Diagrama dos pinos da PPI 8255 da Intel que equipa o MSX.

Vamos relembrar um pouco dos posts anteriores, falando sobre a PPI.

A PPI possui 4 portas através da qual informa ao sistema o status atual da máquina, e é através dessas 4 portas que o Z80, lê o teclado, chaveia os bancos de memória disponíveis,liga e desliga o motor do gravador cassete,liga e desliga a lâmpada de caps lock e controla o click do teclado manipulando o PSG, ou seja, ele esta ligado a maioria das operações de entrada e saída de todo o sistema.

Vou fazer abaixo um breve resumo dessas portas;

.

PORTA A = ENTRADAS E SAÍDAS (A8H)

Tem como principal função, demonstrar ao Z80 onde estão posicionados pelos mais diversos slots disponíveis no sistema os quatro bancos de 16k de memória que irão formar o máximo de 64kb de memória permitidos.  No caso dos micros MSX Nacionais, ao ser ligado ele irá apresentar a seguinte informação;

Gradiente Expert                 => 10100000B;

Sharp  HotBit / Epcom       => 11110000B;

Caso você tenha curiosidade de fazer esse teste para pegar esses valores, tem um pequeno programa em Basic que  você pode utilizar;

PRINT RIGHT$(“00000000″+BIN$(INP(&HA8)),8);”B”

Vale lembrar que operação com portas devem ser cercadas de cuidado, afim de evitar um crash no sistema.

Falarei em outra oportunidade com detalhamento dessa porta, por ora apenas esse pequeno resumo.

.

PORTA B = ENTRADAS E SAÍDAS (A9H)

Essa porta é a responsável pela leitura de nosso teclado, que é feita inteiramente por software. É através dessa porta que podemos ler os 8 bits correspondentes às 8 colunas integrantes de uma linha especificada.

É a leitura através de software que considera o teclado do MSX como uma matriz de 11 linhas x 8 colunas, quero salientar que os micros nacionais no caso do HotBit utiliza apenas 9  e o Expert utiliza 10 linhas.

Tabela de matriz do teclado do MSX, demonstrando os registros C com os 4 bits menos significativos.

.

PORTA C = ENTRADAS E SAÍDAS (AAH)

Essa porta é responsável por uma série de controles e funções, tais como selecionador das linhas do teclado, motor do K7, a luz do caps lock e até o click do teclado.

São representadas por um conjunto de 8 bits a saber;

BITS;

0 a 3 => Seleção das linhas do teclado;

4 => Liga e desliga o motor do cassete, zero liga o motor e um desliga;

5 => Envia os dados para o gravador cassete;

6 => Estado da lâmpada do caps lock, zero acende e um desliga;

7 => Ativa ou desativa o click do teclado, sendo zero e um respectivamente que é analisado e mixado pelo PSG que é o chip de som do MSX.

.

PORTA DE MODO DE OPERAÇÃO (AAH)

Essa é a porta é a que indica a PPI qual será o seu modo de operação e deve ser usada com muita cautela sob pena de danificar o chip.

É através dela que informamos como as portas devem operar, se serão para escritas ou leituras, todavia o MSX trabalha em um padrão específico e sempre deve ser informado o modo de leitura para a porta B, e escrita para a porta C.

São representadas por um conjunto de 8 bits a saber;

BITS;

7 => Deve ser mantido em 1 para permitir alterações no modo de operação da PPI. Senão teremos acesso somente a Porta C.

6/5 => Determinam o modo de operação da Porta A e dos 4 bits superiores (4 a 7) da porta C. Valor normal é 00 e não deve ser mudado.

4      =>  Indica a direção da porta A; zero escrita(padrão MSX) e um para leitura;

3     =>  Indica a direção dos 4 bits mais altos (4 a 7) da porta C; zero escrita(padrão MSX) e um para leitura;

2    =>   Indica o modo de operação da porta B e dos 4 bits mais baixos da porta C (normal é zero);

1    =>   Indica a direção da porta B, zero para escrita e 1 para leitura (modo normal MSX);

0   =>   Indica a direção dos quatro bits mais baixos (0 a 3) da porta C, zero para escrita(padrão) e 1 para leitura.

Você deve estar se perguntando, nossa, então posso ter controle total sobre todos os processos envolvidos no MSX ? Sim, você pode ter controle total de tudo o que aconteçe nele, e para exemplificar isso um pouco mais vou colocar um exemplo em Basic que todos possam testar;

Teste realizado em um HotBit Sharp;

Acender a lâmpada de Caps Lock ;

OUT &HAB,&B00001100

Apaga a a lâmpada de Caps Lock;

OUT &HAB,&B00001101   

É mesmo incrível não é ?

Com todas essas informações sobre o teclado e sobre a PPI, o que ficou faltando entender é sobre a pinagem do conector de teclado do MSX Expert, que é o Din de 13 pinos.

Nesse caso iremos utilizar nosso circuito alimentado diretamente pelo conector traseiro do Expert que nos dará os 5V necessários para que o nosso circuito opere.

Falaremos sobre esse conector e sobre como funciona o teclado PS2 no próximo post, e assim com todas essas informações finalmente projetar o circuito que fará a leitura do teclado PS2 no MSX.

[]´s

MsxRevival

Anúncios

6 comentários em “Adaptador de teclado PS2 para MSX – Parte 10

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