¿Cómo evita el teclado ZX80 las imágenes fantasma y las máscaras?

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

http://pcbheaven.com/wikipages/How_Key_Matrices_Works/

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

http://searle.hostei.com/grant/zx80/zx80circuitAnnotated.pdf

¿Cómo funciona esto?

Quizás haya respondido su propia pregunta: sin diodos en cada tecla, existe la posibilidad de imágenes fantasma y enmascaramiento.
Por lo que recuerdo de 1987, las teclas de la ZX81 eran muy difíciles de presionar. Posiblemente fue el peor teclado que usé. Así que creo que todo se evitó al hacer que fuera imposible intentarlo en primer lugar.

Respuestas (3)

El teclado no está diseñado para manejar imágenes fantasma y enmascaramiento... (Si se presionaran Q,R,F, la computadora también vería la tecla A).

Los diodos están ahí para mantener el costo bajo (los diodos son para que las teclas no fuercen otra línea de dirección baja, lo que bloquearía la computadora); en otras computadoras, se usaría un circuito integrado de búfer y una mejor decodificación de direcciones, pero para mantener bajos los costos, se pueden usar los diodos, pero esto 'desperdicia' direcciones (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 código de máquina harías 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 1 línea de dirección sea baja en este momento; el valor que elegí establecerá solo A9 en lógica baja. .

K0 solo se puede bajar cuando se presiona Shift, A, Q, 1, 0, P, Nueva línea o Espacio (y solo si la línea de dirección correcta se baja; en este caso, solo A9 está bajo, por lo que solo la tecla A hará que K0 baje (Ignore el efecto fantasma en este momento)

IC 10 es activado por la línea de señal KBD del decodificador IO, luego coloca las señales de K0-K5 en el bus de datos de la CPU D0-D5 (estoy ignorando D6-D7 ya que solo estoy tratando con el teclado) - el comando IN A,(C) pone este valor en el registro A,

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

Para mantener los costos bajos, los niveles lógicos están 'invertidos'; esto significa que la computadora busca un 0/bajo al presionar una tecla, y no un 1/alto (la mayoría de los circuitos integrados pueden bajar una señal más fácilmente que sacar una señal alta). ) - es más barato reescribir 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 era aproximadamente la mitad del costo de cualquier otra computadora con En el momento...

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

Los teclados de membrana utilizados en estas computadoras no fueron diseñados exactamente para mecanografía táctil de alta velocidad, por lo que estos problemas simplemente no eran un criterio de diseño.

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 (tenga en cuenta la s) se leen: una línea de dirección baja puede, a través de un interruptor de teclado, bajar 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 con otra línea de dirección, lo que no sería una buena idea. No están allí para evitar imágenes fantasma/enmascaramiento. El ZX80 tenía un teclado de membrana, era bastante difícil presionar una tecla, la detección de múltiples teclas no es una característica de esta bestia.