¿Cómo evita el teclado y el enmascaramiento el teclado ZX80?

3

Creo que una matriz de teclado necesita un diodo en la tecla cada para evitar el efecto fantasma y el enmascaramiento.

enlace

El ZX80 (y probablemente ZX81) tiene solo un diodo para cada media fila.

enlace

¿Cómo funciona esto?

    
pregunta fadedbee

3 respuestas

4

El teclado no está diseñado para manejar el fantasma y el enmascaramiento ... (Si presiona Q, R, F, la computadora también verá la tecla A).

Los diodos están ahí para mantener el costo bajo (los diodos son para que las teclas no forzen otra línea de dirección baja, lo que haría fallar la computadora): en otras computadoras, un IC (s) de búfer y una mejor descodificación de direcciones Se puede usar, pero para mantener los costos bajos, se pueden usar los diodos, pero esta dirección de "residuos" (no es que importe en una computadora como esta)

Cómo funciona el teclado

           A8   A9  A10  A11  A12  A13  A14  A15  Keyboard layout
            |    |    |    |    |    |    |    |
    K4 -    V    G    T    5    6    Y    H    B
    K3 -    C    F    R    4    7    U    J    N
    K2 -    X    D    E    3    8    I    K    M
    K1 -    Z    S    W    2    9    O    L    .
    K0 -  Shift  A    Q    1    0    P   NL  Space

(I'm using K0-K5 to be the inputs to IC 10)
Lines K0,K1,K2,K3,K4 are pulled to 5V by R13,R14,R15,R16,R17

Supongamos que desea ver si se presiona la tecla A

En el código de máquina usted Haría lo siguiente

    LD BC,FEFF - Just set A9 to Low
    IN A,(C)   - Read keys A,S,D,F,G
    BIT 0,A    - if Bit 0 (D0) is low then set the Z flag
    JP Z,xxxx  - if the Z flag is set then jump to xxxx

El valor en BC se coloca en las líneas de dirección cuando se ejecuta el comando IN A, (C). El valor debe elegirse de modo que solo una línea de dirección sea baja en este momento; el valor que elegí solo se establecerá A9 a la lógica baja.

K0 solo se puede bajar cuando se presiona Mayús, A, Q, 1,0, P, Nueva línea o Espacio (y solo si la línea de la Dirección correcta está baja, en este caso solo A9 es bajo, solo la tecla A hará que K0 baje (ignorar la imagen fantasma en este momento)

IC 10 se activa mediante la línea de señal KBD desde el decodificador IO, luego se colocan las señales de K0-K5 en el bus de datos de la CPU D0-D5 (ignoro D6-D7 porque solo trato con el teclado): el comando IN A, (C) coloca este valor en el registro A,

luego usamos el comando Bit para ver si D0 está bajo; si es así, establece el indicador Z ...

Para mantener los costos bajos, los niveles lógicos están 'invertidos', lo que significa que la computadora busca un valor bajo / 0 para presionar una tecla, y no un nivel alto / 1 (la mayoría de los circuitos integrados pueden extraer una señal más baja que la extracción) una señal alta): es más económico volver a escribir el código que usa la CPU que agregar un IC adicional para invertir los niveles de señal a la CPU. Hicieron que el ZX80 fuera lo más barato posible, y costó aproximadamente la mitad del costo de cualquier otro Ordenador con básico en el momento ...

    
respondido por el Fido UK
4

Tal vez ese diseño no aborde el fantasma y el enmascaramiento. No es un problema si el usuario presiona un botón a la vez.

    
respondido por el Kaz
3

Ese circuito usa algunas líneas de dirección para habilitar la lectura del teclado. Algunas otras líneas de dirección (que no forman parte del circuito de habilitación) determinan qué columnas se leen (tenga en cuenta las s): una línea de dirección baja puede, a través de un interruptor del teclado, desconectar una de las entradas de IC10. Esto depende de la propiedad de las entradas LS TTL de que una entrada flotante se considere alta.

Los diodos en el circuito son necesarios para evitar que las teclas presionadas puedan conectar una línea de dirección a otra línea de dirección, lo que no sería una buena idea. No están allí para evitar el fantasma / enmascaramiento. El ZX80 tenía un teclado de membrana, era lo suficientemente difícil como para presionar una tecla, la detección de pulsación de varias teclas no es una característica de esta bestia.

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas