Beruflich Dokumente
Kultur Dokumente
Interfaces
Vamos discutir neste capítulo uma pequena miscelânea de interfaces
encontradas nos PCs: paralela, serial, IRDA, teclado e mouse.
Porta paralela
A porta paralela, também conhecida informalmente como interface paralela
ou interface de impressora, está presente no PCs desde o início dos anos 80.
A impressora é o dispositivo mais comum neste tipo de interface, mas
atualmente podemos conectar outros periféricos, como scanners, câmeras
digitais, Zip drives e até gravadores de CDs. Originalmente era uma interface
bem simples, capaz de transmitir dados em uma única direção (ou seja, é
unidirecional), com taxas entre 100 kB/s e 200 kB/s, dependendo do caso.
Esta é a porta paralela padrão do PC, usada durante os anos 80, chamada de
SPP (Standard Parallel Port). As portas paralelas atuais são mais avançadas e
complexas, e operam em modos mais rápidos, chamados EPP e ECP. Nesses
modos, a porta de dados é bidirecional e possui um circuito chamado FIFO
(first in, first out), que nada mais é que uma espécie de “cache” para os
dados que são transmitidos e recebidos. Os demais sinais de controle
também estão presentes, mas suas funções são um pouco diferentes.
Modo SPP
O modo SPP (standard parallel port, ou compatibility mode) foi o utilizado
pelas interfaces paralelas e impressoras dos anos 80. As interfaces atuais são
mais versáteis e velozes, mas o modo SPP continua sendo suportado.
Figura 14.2
Transmissão de um byte pela porta
paralela.
Sinal Descrição
O PC envia para a interface um pulso que indica que o dado que
Strobe
está no barramento D0-D7 pode ser lido.
D0 – D7 Barramento de dados.
O dispositivo informa à interface que o dado foi recebido com
ACK
sucesso.
O dispositivo informa que ainda não está pronto para receber o
Busy
próximo dado.
Paper Out A impressora informa que está sem papel.
Select A impressora indica que está selecionada e on-line.
Indica à impressora que deve usar um Line Feed
Autofeed
automaticamente após cada fim de linha.
Error A impressora indica que ocorreram erros.
Reset O PC inicializa a impressora.
Select O PC seleciona a impressora.
PRINT: OUT AL,278h ; Envia para a porta de dados, o caracter a ser impresso
PR1: IN AL,279h ; Lê o status da porta
AND AL,80h ; Testa a linha de BUSY
JNZ PR1 ; Aguarda até a linha BUSY ficar em 0
IN AL,27Ah ; Pega os bits de controle atuais
AND AL,7Eh ; Faz bit de Strobe igual a zero
OUT 27Ah,AL ; Envia bit de Strobe para a impressora
NOP
NOP
NOP ; Aguarda largura mínima do pulso
OR AL,1 ; Faz novamente bit de Strobe igual a 1
OUT 27Ah,AL ; Desativa Strobe
PR2: IN AL,279H ; Lê status
AND AL,0DFh ; Checa linha ACK
JNZ PR2 ; Aguarda ACK ficar em 0
PR3: IN AL,279h : Lê novamente status
AND AL,0DFh ; Checa linha ACK
JZ PR3 ; Aguarda ACK voltar a 1
RET ; FIM
Esta rotina faz com que os sinais da interface paralela executem as ações
mostradas na figura 2. Nos processadores antigos, o tempo de execução era
relativamente grande. Durando em torno de 20s no XT, a taxa de
transferência resultante era de cerca de 50 kB/s. No IBM AT, com instruções
Capítulo 14 – Interfaces 14-5
mais rápidas, era obtido um desempenho melhor. Este tempo poderia ser
reduzido com o uso de processadores mais velozes. O problema é que as
instruções de entrada e saída (IN e OUT) no barramento ISA devem durar
dois ciclos a 8 MHz, o que equivale a 0,25s. Mesmo fazendo otimizações
para reduzir ao mínimo o número de instruções de E/S, a taxa obtida
dificilmente fica acima de 150 kB/s.
Modo Nibble
O modo Nibble é uma utilização especial da porta paralela no modo SPP
que permite realizar leitura de dados. O barramento de dados da porta
paralela padrão é unidirecional, portanto não pode receber dados.
Entretanto existem 5 linhas de status que podem ser lidas pelo processador
(veja o diagrama da figura 1). No modo Nibble, a entrada ACK continua
com sua utilização normal, e as demais 4 linhas são usadas para leitura de
dados. Como 4 bits formam o que chamamos de nibble, este é o nome dado
a este modo. Sendo apenas 4 bits é preciso fazer duas leituras para receber
cada byte. Isto torna a leitura no modo Nibble/SPP duas vezes mais lenta que
a escrita, que opera com 8 bits. A descrição dos sinais da interface paralela,
ao operar no modo Nibble, é mostrada na tabela abaixo.
Figura 14.3
Leitura de dados na porta paralela pelo
modo Nibble.
Operação Taxa
Leitura 54 kB/s
Gravação 93 kB/s
Como vemos a leitura é cerca de duas vezes mais lenta que a gravação,
devido ao fato de ser feita de 4 em 4 bits, enquanto a gravação é feita em
grupos de 8 bits.
Modo bidirecional
Algumas interfaces paralelas possuem uma porta de dados bidirecional,
apesar de operarem com velocidade similar à do modo SPP. Tratam-se de
interfaces SPP comuns, com a simples substituição dos registradores
unidirecionais que formam a porta de dados, por registradores bidirecionais.
Graças a este recurso a porta pode receber dados de 8 em 8 bits, fazendo
com que a leitura se dê na mesma velocidade da escrita, apesar da taxa
continuar limitada à faixa de 150 kB/s. A tabela a seguir mostra o uso dos
sinais da interface no modo bidirecional, também chamado de IEEE-1284
Byte mode, Extended mode e de PS/2 Mode, já que esta interface
bidirecional foi criada pela IBM para seus computadores PS/2.
Figura 14.4
Leitura no modo bidirecional.
1) A interface deve enviar um 0 pela linha HostBusy, indicando que está apta
a receber dados.
3) O dispositivo indica que o dado está pronto para ser lido, enviando um bit
0 em PtrClk.
Modo EPP
O modo EPP (Enhanced Parallel Port) foi criado no início dos anos 90 por
um comitê formado por diversas empresas. Tem a característica de ser
totalmente compatível com o modo SPP e operar com taxas de transferência
mais elevadas, chegando a 2 MB/s. A lentidão do modo SPP é resultado
principalmente do uso de diversas instruções de E/S (IN, OUT) no
14-8 Hardware Total
barramento ISA. Cada uma dessas instruções dura 0,25s, o que é necessário
pelo padrão ISA. Como são usadas várias dessas instruções para enviar um
dado por uma interface SPP, a taxa de transferência não pode ser muito
elevada.
4) O dispositivo ativa o sinal Wait para indicar que está recebendo o dado.
7) A interface desativa o sinal Wait quando estiver pronta para receber outro
dado.
Uma porta paralela SPP utiliza 3 endereços de E/S (Data, Status e Control).
Já uma porta EPP utiliza 8 endereços consecutivos. As faixas permitidas são
278-27F e 378-37F. O endereço 3BC não pode ser usado por uma porta EPP,
pois só dispõe de 4 bytes consecutivos: 3BC, 3BD, 3BE e 3BF. O byte
seguinte, 3C0, é reservado para a placa de vídeo, portanto não pode ser
usado por uma porta EPP. O mapa completo de endereços de uma porta
EPP é o seguinte:
Endereço Descrição
BASE+0 Porta de dados no modo SPP
BASE+1 Porta de Status
BASE+2 Porta de Controle
BASE+3 Porta de endereço – permite endereçar os
dispositivos EPP ligados à porta, bem como
acessar os registradores internos desses
dispositivos.
BASE+4 Dado EPP – bits 0 a 7
BASE+5 Dado EPP – bits 8 a 15
BASE+6 Dado EPP – bits 16 a 23
BASE+7 Dado EPP – bits 24 a 31
Modo ECP
Capítulo 14 – Interfaces 14-11
O modo ECP (Extended Capability Port) é também suportado pelas
interfaces e dispositivos modernos. Apresenta desempenho sensivelmente
melhor que o EPP. Eis suas principais características:
O FIFO é um buffer de dados (First In, First Out) que serve para que o
processador não espere pela interface. Ao realizar uma instrução OUT, por
exemplo, o dado não vai diretamente para o dispositivo ligado na interface.
Este byte é imediatamente colocado em uma fila de bytes, e o processador é
liberado. A interface é encarregada de enviar os bytes para o dispositivo,
obedecendo a ordem de chegada. O tamanho desta fila pode variar de
acordo com o chip Super I/O usado, mas normalmente encontramos versões
de 8, 16 e 32 bytes.
Figura 14.7
FIFOs de entrada e saída em uma porta
ECP.
Os dados que são transmitidos e recebidos por uma interface ECP podem
ser codificados pelo método RLE (Run Lenght Encoding). Por exemlo, para
enviar para uma impressora, 30 bytes com o valor 00, basta enviar 00,
seguindo de um comando indicador de comprimento 30. Assim são enviados
apenas 2 bytes, ao invés de 30.
Figura 14.8
Transferência de dados no modo ECP.
Endereço Descrição
BASE+0 Porta de dados no modo SPP
BASE+1 Porta de Status no modo SPP
BASE+2 Porta de Controle no modo SPP
BASE+400 FIFO
BASE+401 Porta de configuração ECP
BASE+402 Porta de controle ECP
Quando uma porta ECP utiliza o endereço base 278h, utiliza as faixas 278h-
27Ah e 678h-67Ah. Ao usar o endereço base 378h, as faixas são 378h-37Ah e
778h-77Ah. Como as portas atuais precisam ser capazes de operar nos
modos EPP e ECP, as faixas ficam ampliadas para:
O padrão IEEE-1284
Modo SPP, modo bidirecional, modo EPP, modo ECP. Vários padrões para
interfaces e dispositivos resultavam em sérios problemas de compatibilidade.
Apeasar dos modos EPP e ECP permitirem o uso de dispositivos SPP, não
existe compatibilidade de sinais entre EPP e ECP. Para resolver esses
problemas, o IEEE (Institute of Electrical and Electronic Engineers) criou um
comitê para organizar todos esses “padrões” em um só. A união de todos
eles deu origem ao padrão IEEE-1284. Todas as interfaces paralelas usadas
nos PCs produzidos nos últimos anos (a partir de 1995) são compatíveis com
este padrão e podem ser utilizadas com qualquer dispositivo paralelo.
Durante a inicialização, o driver interroga todos os dispositivos ligados à
porta paralela e determina os modos suportados por cada um deles. A partir
daí passa a se comunicar com cada um deles, de acordo com o máximo
modo suportado.
Figura 14.9
Ligação de dispositivos em cascata.
Figura 14.10
Diagrama interno de um dispositivo
multiporta.
Na figura 11 vemos uma seção deste cabo. Note que os 8 bits de dados ficam
dispostos em uma camada interna, separada da camada externa por uma
blindagem. Desta forma os bits de dados não sofrem interferência elétrica
provocada pelos demais sinais digitais do cabo. Cada um desses sinais por
sua vez são trançados com fios de terra, o que reduz a interferência mútua
entre eles. Este tipo de cabo é o indicado para comunicação nos modos EPP
e ECP.
*** 75%
***
Figura
14.12
Conectores das
interfaces e
dispositivos
paralelos.
Figura 14.14
A porta de impressora declarada no Gerenciador de
Dispositivos.
Figura 14.15
Indicando no CMOS Setup o modo de
funcionamento da porta paralela.
A placa IDEPLUS foi muito utilizada nos PCs entre 1991 e 1994. Atualmente
caiu em desuso, mas ainda é a forma mais simples para adicionar novas
portas seriais e paralelas a um PC. Mesmo tendo caído em desuso, ainda
podemos encontrar placas IDEPLUS à venda no mercado de peças de
segunda mão e em sucatas.
Uma placa IDEPLUS possui duas interfaces seriais, uma interface paralela,
uma interface para drives de disquetes, uma interface IDE e uma interface
para joystick. Como queremos apenas adicionar uma segunda porta paralela
ao PC, devemos deixar todas as interfaces da placa IDEPLUS desabilitadas,
exceto a porta paralela. Esta desabilitação é feita através dos seus jumpers, e
seguindo as instruções do seu manual.
Quando todas essas áreas forem indicadas com “FF” no mapa de E/S,
significa que as portas estão desabilitadas. Procure também identificar quais
são os jumpers que atuam sobre o endereço da porta paralela. Habilite agora
a porta paralela da placa IDEPLUS e desabilite a interface de drives. A partir
daí a placa IDEPLUS terá apenas a porta paralela habilitada. Pode agora
habilitar novamente as interfaces existentes na placa de CPU e realizar um
boot normal no PC.
Figura 14.18
Este PC está com 2 portas paralelas
instaladas.
Figura 14.19
A nova porta paralela já consta no Gerenciador de
Dispositivos.
Capítulo 14 – Interfaces 14-25
Será preciso também clicar sobre a nova porta paralela no Gerenciador de
Dispositivos, usar a guia Recursos e definir seus endereços de E/S e IRQ.
Figura 14.20
Configurando a porta paralela SPP para operar sem
IRQ.
Para fazer a nova porta paralela operar sem usar IRQ, aplique-lhe um clique
duplo no Gerenciador de Dispostivos e selecione a guia Recursos (figura 20).
Desmarque o quadro “Usar configurações automáticas” e no campo “Config
baseada em”, escolha uma configuração básica que não use IRQ, como
mostra a figura.
Porta serial
Os PCs possuem portas seriais assíncronas (UARTs) no padrão RS-232. Note
que este é um tipo particular de porta serial. Existem vários outros tipos de
portas seriais, portanto falemos rapidamente sobre eles.
Portanto as interfaces seriais utilizadas nos PCs são restritas a uma pequena
fração do universo das portas seriais. São interfaces do tipo UART (ou seja,
Capítulo 14 – Interfaces 14-27
operam apenas no modo assíncrono) e com meio físico seguindo o padrão
RS-232.
Figura 14.21
Transmissão em uma UART.
Figura 14.23
Line driver 1488.
14-30 Hardware Total
Figura 14.24
Line Receiver 1489.
O 8250 podia operar com uma velocidade máxima de 19.200 bits por
segundo e era adequado ao barramento do XT, que operava com cerca de 5
MHz. O 16450 era um chip mais veloz. Além de ser compatível com o
barramento do AT, de 8 MHz, atigia velocidades mais elevadas, chegando a
38.400 bits por segundo. O chip 16550 é ainda mais avançado. Possui
circuitos FIFO de entrada e saída, cada um deles com 16 bytes. Graças ao
FIFO, o processador ficava menos sobrecarregado nas comunicações seriais,
já que a cada interrupção podia enviar ou receber vários bytes. Atinge
velocidades de até 115.200 bits por segundo. Essas UARTs foram produzidas
com encapsulamento DIP de 40 pinos, mas deram lugar a outros
encapsulamentos mais compactos, como o PLCC e o SQFP.
Capítulo 14 – Interfaces 14-31
Figura 14.25
UARTs usadas nos PCs.
Outras UARTs mais avançadas foram criadas, como a 16650, 16750 e 16850.
Essas UARTs são compatíveis com a 16550, têm FIFOs maiores (por
exemplo, a 16750 tem FIFOs de 64 bytes) e suportam taxas de transmissão
mais elevadas, chegando em torno de 1 Mbit/s. Os chips Super I/O
modernos também possuem UARTs compatíveis com a 16550, mas muitos
possuem FIFOs maiores e suportam taxas de transmissão mais elevadas.
Uma outra UART comum é a 16552. No seu interior existem duas UARTs
compatíveis com a 16550.
Baud Rate
Esta é uma característica muito importante das comunicações seriais. Muitos
a confundem com taxa de transferência, não é a mesma coisa. O baud rate é
uma medida com dimensão de bits/segundo, mas não representa exatamente
o número de bits de dados transmistidos a cada segundo pela interface. Sua
unidade é o baud, e seu valor é o inverso do período de transmissão de 1
bit. Por exemplo, se tomarmos um baud rate de 4.800 bauds, significa que
cada bit é transmitido em um tempo de:
1 s / 4800 = 0,00020833 s
Ou seja, 208,33s.
Figura 14.26
Tempo total de transmissão de um byte.
Considere que na figura 26 o baud rate é 4800 bauds. A largura de cada bit
é portanto 208,33s. Nesta comunicação, cada byte está utilizando ao todo
11 bits, sendo 8 de dados, 1 start bit, 1 bit de paridade e 1 stop bit. O tempo
total gasto com cada byte é de 11 x 208,33s, ou seja, 2.281,66s. Dividindo
1 segundo por este valor, chegamos ao número de bytes transmitidos por
segundo, ou seja, 436 bytes por segundo. Como vemos, é errado dividir o
baud rate por 8 para obter a taxa de transferência. Um método aceitável é
dividir o baud rate pelo número total de bits. Temos portanto 4800/11 = 436.
Se a comunicação for feita com 8 bits, sem paridade e 1 stop bit, termos um
total de 10 bits, portanto a taxa de transferência será de 4800 / 10 = 480 bytes
por segundo.
É errado usar a unidade bps (bits por segundo) nas comunicações seriais,
tanto é que os fabricantes das UARTs sempre especificam as velocidades em
bauds. Ocorre que o público informata já está acostumado a usar de forma
errada, o termo bps ao invés de baud. O próprio Windows utiliza a unidade
bps ao invés do baud nas configurações das portas serial. Este erro é
portanto tolerado no meio técnico, da mesma forma como muitos fazem
confusão entre 1 MB e 1 milhão de bytes.
50 2400 * 33600
75 4800 * 38400 *
110 * 7200 57600 *
150 9600 * 115200 *
300 * 14400 230400 *
600 19200 * 460800 *
1200 * 28800 921600 *
Capítulo 14 – Interfaces 14-33
OBS: Os valores indicados com (*) são os empregados pelo Windows.
Cabos e conectores
Interfaces seriais utilizam conectores de 9 ou 25 pinos (DB-9 e DB-25). No
computador, o conector é do tipo macho, e no cabo são usados conectores
fêmea. Tome cuidado pois existem cabos seriais de vários tipos. Os cabos de
extensão, nos quais cada pino de um conector é ligado ao pino
correspondente no outro conector, são os mais usados. Esses cabos podem
ser do tipo fêmea-macho ou fêmea-fêmea. Seu comprimento máximo
permitido, de acordo com o padrão RS-232, é de 15 a 20 metros.
Figura 14.27
Cabo serial e conectores.
Existem cabos que possuem conexões internas próprias para fazer ligação
direta entre dois micros (null modem), cabos conversores de 9 para 25 pinos,
e assim por diante. Normalmente esses cabos são curtos, porém o padrão
RS-232 permite cabos mais longos, chegando até 20 metros. Você encontrará
portanto os seguintes tipos de cabos seriais:
Direto (straight)
Null modem
Laplink
Cabos para impressoras seriais
Figura 14.28
Dois tipos de cabos “null modem” usando
conectores DB9.
Endereços e IRQs
Uma porta serial 8250 e compatíveis, usadas nos PCs, utilizam uma linha de
IRQ e 8 endereços de E/S. Os endereços e IRQs padronizados para essas
portas são:
Note que apesar de serem permitidos 4 endereços de E/S, não existem linhas
de IRQ exclusivas para a COM3 e a COM4. Elas devem compartilhar as
interrupções que eram destinadas à COM1 e à COM2, que são a IRQ4 e a
IRQ3, respectivamente. As linhas de IRQ dessas interfaces seriais deveriam
utilizar um tipo de circuito chamado open collector (coletor aberto).
14-36 Hardware Total
Figura 14.29
Funcionamento do compartilhamento de
interrupções das portas seriais.
Para que as quatro portas seriais possam ser utilizadas, é preciso remanejar as
interrupções utilizadas. Durante os anos 80 e até meados dos anos 90, isto era
feito através de jumpers nas placas que possuíam portas seriais. A partir de
meados dos anos 90 este remanejamento passou a ser feito através do CMOS
Capítulo 14 – Interfaces 14-37
Setup ou do Gerenciador de Dispositivos do Windows. Note entretanto que
nem sempre existe a flexibilidade de escolha de outras IRQs além da 3 e da
4. Um exemplo em que isso pode ser feito é nas interfaces seriais existentes
em modems. É perfeitamente possível configurar uma dessas interfaces
seriais como, por exemplo, COM3 e usando uma IRQ como 5, 7 ou 9,
desde que esteja disponível.
Placas multiseriais
Há muitos anos existem também placas multiseriais, dotadas de várias
interfaces seriais. As multiseriais mais comuns possuem 4, 8 e 16 portas
seriais. É possível instalar várias dessas placas, e através de drivers
apropriados, são reconhecidas como COM1, COM2, ... COM8, ..., COM16,
e assim por diante. As interrupções usadas pelos drivers dessas interfaces são
compartilhadas. Placas multiseriais são usadas em provedores de acesso à
Internet, possibilitando a ligação de um grande número de modems
externos.
Figura 14.30
Placa multiserial com 16 portas.
IRDA Data
Este protocolo é usado na comunicação entre dois PCs para transferência de
dados, bem como dispositivos que transmitem grandes quantidades de
informação. Possibilita por exemplo, a comunicação entre um PCs e
Notebooks e Handhelds (PCs de mão), impressoras, scanners, câmeras
digitais e quaisquer dispositivos que mantenham um elevado tráfego de
dados. A especificação antiga, a IRDA 1.0 permitia taxas de até 115.200 bits
Capítulo 14 – Interfaces 14-39
por segundo, a mesma velocidade da maioria das portas seriais. A nova
especificação IRDA 1.1 permite velocidades de até 4.000.000 bits/s. O
transmissor e o receptor devem estar separados por uma distância máxima
que varia de 1 a 2 metros, e com ângulo de visão de até 30 graus.
Figura 14.32
Ângulos entre os dois dispositivos que se
comunicam.
IRDA Control
A especificação IRDA Control, também conhecida como IrBus ou IRDA
CIR (Control IR), é usada para periféricos de controle que não necessitam
de taxas de transferência elevadas, como teclado, mouse e joystick, e
aparelhos de controle remoto em geral. No computador, o ângulo de
abertura permitido é de até 50. Nos disposistivos o ângulo varia de 15 a
40, dependendo do dispositivo. Um ângulo de abertura pequeno no
14-40 Hardware Total
dispositivo significa que devemos apontá-lo para o computador. Já o
computador deve aceitar um ângulo de abertura maior, graças a um sistema
de lentes. Isto significa que os dispositivos não precisam necessariamente
estar príximos ao eixo ótico do sensor do computador. A taxa de transmissão
no padrão IRDA Control é de 75k bps.
O chip 8042
Desde o lançamento do IBM PC AT, a interface de teclado era formada por
um chip 8042. Este chip é um microcontrolador, ou seja, um
microprocessador com sua própria memória ROM interna, RAM e circuitos
de E/S. Em muitas placas de CPU este chip possui uma etiqueta com a
indicação “Keyboard BIOS”. Nas placas de CPU modernas, a interface de
teclado (compatível com o 8042) é incorporada ao Super I/O. A figura 33
mostra o diagrama de blocos de uma interface de teclado, contida em um
chip Super I/O.
Capítulo 14 – Interfaces 14-41
Figura 14.33
Diagrama da interface de teclado e
mouse.
O teclado tem ainda a linha KBRST (Keyboard Reset). Nos XTx, este sinal
era efetivamente enviado para o teclado, através do pino 3 do conector DIN.
Este comando fazia o processador interno do teclado realizar um Reset. Nos
teclados padrão AT (usados pelos PCs atuais) não existe o sinal de Reset. Ao
invés disso, foi adicionado um comando de Reset, que o PC envia para o
teclado. Esta alteração foi possível graças ao fato da interface de teclado ter
se tornado bidirecional. O antigo sinal KBDRST é usado agora para resetar
o processador da placa de CPU, e não mais o teclado.
Capítulo 14 – Interfaces 14-43
Figura 14.36
Esquema de intefaces de teclado e mouse
PS/2.
Figura 14.38
Esquema de um mouse.
Figura 14.39
Roda dentada e sensores óticos.
A figura 39 mostra uma das rodas dentadas que são ligadas aos roletes do
mouse. Note que existem dois sensores óticos diametralmente opostos (X1 e
X2 para uma roda, Y1 e Y2 para a outra). O grande truque é que os dois
sensores não são exatamente opostos. Quando um deles está totalmente
exposto, o outro está parcialmente exposto. Conforme a roda gira, os
sensores captam ondas retangulares, e a posição relativa dessas duas ondas
indica o sentido do movimento, como mostra a figura 40.
Figura 14.40
Detectando movimentos para a esquerda
e para a direita.
14-46 Hardware Total
Outra roda similar é usada para o eixo Y, detectando movimentos para cima
e para baixo.
Dados do teclado
Nos teclados muito antigos, anteriores à era dos PCs e mesmo os não tão
antigos, mas usados em terminais alfanuméricos, cada tecla pressionada
resulta na transmissão do código ASCII da tecla. Por exemplo, a letra “A”
maiúscula produz o código 41h, “B” produz 42h, e assim por diante.
Figura 14.41
Scan codes.
Dados do mouse
Cada vez que fazemos um movimento com o mouse, é enviado um conjunto
de dados para o PC, chamado report. O formato deste report depende do
modo no qual o mouse está operando. No modo PS/2 são enviados 3 bytes,
como descritos na figura 42. O primeiro byte têm codificadas em seus bits,
informações sobre o pressionamento de botões e parte das informações sobre
Capítulo 14 – Interfaces 14-47
as coordenadas X e Y. Os dois bytes seguintes enviam as coordenadas X e
Y.
Figura 14.42
Report em um mouse PS/2.
Figura 14.43
Report em um mouse Microsoft.
O sinal A20
O sinal A20 foi criado para dar acesso aos endereços de memória entre
1024kB e 1088kB quando o processador está operando no modo real. Nesta
modalidade os processadores possuem um endereçamento de memória
similar ao de um XT, com apenas 1024 kB (1 MB), já que o seu processador
tem apenas 20 bits de endereço (A0-A19). Mesmo nos processadores mais
novos, com mais de 20 bits de endereço, todos os bits a partir de A20 ficam
com valor zero quando operando no modo real.
14-48 Hardware Total
Com o sinal A20, o processador pode acessar uma área de 64 kB, localizada
a partir do endereço 1M, chamada HMA (High Memory Area). O
funcionamento é o seguinte: ao fazer um registrador de segmento ter o valor
FFFF, este segmento ficará localizado a partir do endereço absoluto FFFF0,
que é 16 bytes antes do final da memória no modo real. Ao ser endereçado
o byte seguinte, ocorrerá um “Vai 1” no cálculo de endereço, que é
automaticamente transformado em zero. Por exemplo, com segmento FFFF e
offset 0010, o endereço resultante será 100000 (1M), que é truncado para
00000. Isto faria o processador endereçar o início da memória. O bit A20 é
um sinal gerado pela interface de teclado (não tem nenhuma relação com o
teclado propriamente dito, mas ocorre que o 8042 tinha este bit de uso geral
sobrando, e foi usado para implementar o A20). Como resultado, o bit A20
do processador, que é truncado, é substituído pelo A20 que é gerado pelo
8042. Assim o processador, que deveria estar acessando a área de memória a
partir do endereço 0k, acaba acessando a área a partir do endereço 1024k.
Esses 64 kB adicionais de memória são preciosos, pois permite que parte do
sistema operacional de modo real (o MS-DOS, por exemplo) seja carregado
nesta área, deixando mais memória convencional livre para seus aplicativos
de modo real.