Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada ->...

33
Teclados y terminales

Transcript of Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada ->...

Page 1: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Teclados y terminales

Page 2: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Entrada/Salida Un terminal es un sistema de

Entrada/Salida

Entrada -> Teclado, Ratón, Tableta digitalizadora…

Salida -> Pantalla, Impresora, Plotter…

Page 3: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Tipos de Terminales

Interfaz mapeada a memoria Orientado a carácter Orientado a pixel

Interfaz vía red (serie, ethernet, etc.) Tipo tty Tipo “inteligente”

Page 4: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,
Page 5: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Teclado, construcción física El teclado es esencialmente una

matriz en cuyos nodos puede cerrarse un contacto eléctrico.

Un procesador integrado en el teclado obtiene un número de 7 bits que depende SÓLO de la posición de la tecla pulsada (no del carácter que tenga dibujado)

Page 6: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

25 millones de pulsaciones0/50º operación-20/-60º almacenaje

Page 7: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,
Page 8: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,
Page 9: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,
Page 10: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,
Page 11: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Teclado, comunicación El teclado envía el número asociado a

la tecla si un semáforo hardware “ad hoc” se lo permite.

El número se envía bit a bit, en serie. Los bits se acumulan en un registro.

Cuando el registro se llena, se comunica una interrupción al CPI.

Page 12: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Teclado, interfaz (1)

La interrupción de teclado pasa el control a la rutina de la BIOS o a la rutina de usuario encargado de leer el código

Esta rutina toma el código del puerto 0x60, LO TRADUCE y lo deposita en un “buffer” del S.O.

Page 13: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Teclado, interfaz (2)

void interrupt TEC(){/* leer código del puerto 0x60 */

/* traducir código */ /* colocarlo en el “buffer” */ outportb(0x20,0x20);}

Page 14: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

void interrupt TEC_irq9(){ static char flag=0; char t; t=inportb(0x60); switch (t){ case 42: flag=1; break; /* mayusculas */ case -86: flag=0; break; case 56: flag=2; break; /* alt */ case -72: flag=0; break; case 29: flag=3; break; /* control */ case -99: flag=0; break; default :{ if (t>0){ t=tabla[t][flag]; switch (t){ case 1: { QUIT=1; break; } case 5: { TERM_siguiente(); break; } default:{ TEC_procesar_tecla(t); } } } } } outportb(0x20,0x20);}

Page 15: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Teclado, interfaz (3)#include <dos.h>

int *p=(int *)MK_FP(0,36);

asm cli;

*p=FP_OFF(TEC_irq9);

*(p+1)=FP_SEG(TEC_irq9);

asm sti;

Page 16: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

char tabla[117][4]={ 0, 0, 0, 0,27, 0, 0, 0,49, 33, 124, 0,50, 34, 64, 0,51, 0, 35, 0,52, 36, 126, 0,53, 37, 0, 0,54, 38, 0, 0,55, 47, 0, 0,56, 40, 0, 0,57, 41, 0, 0,48, 61, 0, 0,39, 63, 0, 0,0, 0, 0, 0,8, 0, 0, 0,9, 0, 0, 0,113, 81, 0, 1,119, 87, 0, 2,….

t=inportb(0x60);t=tabla[flag][t];

Page 17: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Programación mediante BIOS

00H 30.0 0BH 10.9 16H 4.301 26.7 0C 10.0 17 4.002 24.0 0D 9.2 18 3.703 21.8 0E 8.6 19 3.304 20.0 0F 8.0 1A 3.005 18.5 10 7.5 1B 2.706 17.1 11 6.7 1C 2.507 16.0 12 6.0 1D 2.308 15.0 13 5.5 1E 2.109 13.3 14 5.0 1F 2.00A 12.0 15 4.6 20 Res.

AH=0x03; L=0x05; BL=frec; BH=ret.

00H 250 ms01 50002 75003 1000

Page 18: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Programación mediante BIOS#include <stdio.h>#include <dos.h>main(){

union REGS pseudo; /* AH|AL */pseudo.h.al=0x05; /* ------- */pseudo.h.ah=0x03; /* AX */pseudo.h.bl=0;pseudo.h.bh=0;int86(0x16,&pseudo,&pseudo);return(0);

}

Page 19: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Ergonomía

Teclado Sholes, 1876

Page 20: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Ergonomía

Teclado Dvorak, 1930

Page 21: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Ergonomía

Mejor teclado

Page 22: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,
Page 23: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,
Page 24: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Terminales Locales o remotos Pasivos o activos Por interfaz de memoria, puerto serie

o red Textuales o gráficos Modo canónico (a línea con

confirmación) o modo no canónico (o inmediato)

Page 25: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Terminal ANSI

Page 26: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Termcap, terminfo, curses (1) termcap es una base de datos y

librería para acceder a esa base de datos

termcap contiene las descripciones de miles de terminales distintos

Estas descripciones incluyen información sobre las capacidades del terminal y forma de activarlas

Page 27: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Termcap, terminfo, curses (2)http://www.catb.org/~esr/terminfo/termtypes.master.gz

Page 28: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Termcap, terminfo, curses (3) “curses.h” es una librería UNIX para

definir ventanas, escribir en ellas, leer de teclado, cambiar atributos, etc.

Existe una capa de más alto nivel implementada en “panel.h

”curses.h” es fácil de portar a otros sistemas. Esto permite portar los programas que se apoyen en ella

Page 29: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Programación en “curses”, 1

Page 30: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Programación en “curses”, 2

Page 31: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Ejemplo de implementación (1) En el AT la memoria de video en modo

80x25, color, se corresponde con la dirección física 0xb8000000

Cada carácter se codifica en dos bytes: el carácter en sí y el atributo

El byte de atributos se divide en texto y fondo

Page 32: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Ejemplo de implementación (2) El byte que codifica el carácter indexa

una tabla que se encuentra en ROM Cada entrada de la tabla es un

conjunto de 16 bytes, que forma una matriz de 16*8 bits que codifican el dibujo del carácter asociado

Esta tabla puede copiarse a RAM, modificarse y usarse

Page 33: Teclados y terminales. Entrada/Salida Un terminal es un sistema de Entrada/Salida Entrada -> Teclado, Ratón, Tableta digitalizadora… Salida -> Pantalla,

Ejemplo de implementación (3) El byte de atributos (cada una de sus

partes) indexa una tabla de 16 entradas

Cada una de esas entradas indexa una tabla de 256 entradas

Cada una de esas 256 codifica el trío RVA que especifica el color