Wie vermeidet die ZX80-Tastatur Ghosting und Maskierung?

Ich glaube, dass eine Tastaturmatrix eine Diode auf jeder Taste benötigt, um Geisterbilder und Maskierung zu vermeiden.

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

Der ZX80 (und wahrscheinlich auch der ZX81) hat nur eine Diode für jede Halbreihe.

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

Wie funktioniert das?

Vielleicht haben Sie sich Ihre Frage selbst beantwortet - ohne Dioden an jeder Taste besteht die Möglichkeit für Ghosting und Maskierung.
Soweit ich mich an 1987 erinnere, waren ZX81-Tasten wirklich schwer zu drücken. Es war möglicherweise die schlechteste Tastatur, die ich benutzt habe. Ich denke also, das Ganze wurde verhindert, indem es unmöglich gemacht wurde, es überhaupt zu versuchen.

Antworten (3)

Die Tastatur ist nicht für Ghosting und Maskierung ausgelegt ... (Wenn Q, R, F gedrückt würden, würde der Computer auch die A-Taste sehen.)

Die Dioden sind da, um die Kosten niedrig zu halten (Die Dioden sind so, dass die Tasten keine andere Adressleitung auf Low zwingen, was den Computer zum Absturz bringen würde) - in anderen Computern würden Puffer-ICs und eine bessere Adressdecodierung verwendet. aber um die Kosten niedrig zu halten, können die Dioden verwendet werden - aber das "verschwendet" Adressen (nicht, dass es auf einem Computer wie diesem eine Rolle spielt)

Wie die Tastatur funktioniert

           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

Angenommen, Sie möchten sehen, ob die A-Taste gedrückt ist

Im Maschinencode würden Sie Folgendes tun

    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

Der Wert in BC wird auf die Adresszeilen gesetzt, wenn dann der Befehl IN A, (C) ausgeführt wird. Der Wert sollte so gewählt werden, dass zu diesem Zeitpunkt nur 1 Adresszeile niedrig ist - der von mir gewählte Wert setzt nur A9 auf logisch niedrig .

K0 kann nur nach unten gezogen werden, wenn Shift, A, Q, 1, 0, P, Neue Zeile oder Leertaste gedrückt wird (Und dann nur, wenn die richtige Adresszeile nach unten gezogen wird – in diesem Fall ist nur A9 nach unten gezogen, also nur die A-Taste wird dazu führen, dass K0 niedrig wird (Ghosting im Moment ignorieren)

IC 10 wird durch die KBD-Signalleitung vom IO-Decoder aktiviert, dieser legt dann die Signale von K0-K5 auf den CPU-Datenbus D0-D5 (ich ignoriere D6-D7, da ich es nur mit der Tastatur zu tun habe) - Der Befehl IN A,(C) schreibt diesen Wert in das Register A,

Wir verwenden dann den Bit-Befehl, um zu sehen, ob D0 niedrig ist - wenn ja, setzen Sie das Z-Flag ...

Um die Kosten niedrig zu halten, sind die Logikpegel "invertiert" - das bedeutet, dass der Computer nach einem niedrigen/0 für einen Tastendruck sucht und nicht nach einem hohen/1 (die meisten ICs können ein Signal leichter nach unten ziehen als ein Signal nach oben ) - es ist billiger, den von der CPU verwendeten Code neu zu schreiben, als einen zusätzlichen IC hinzuzufügen, um die Signalpegel zur CPU umzukehren - Sie haben den ZX80 so billig wie möglich gemacht - und es war ungefähr die Hälfte der Kosten eines anderen Computers mit Basis damals...

Vielleicht spricht dieses Design Geisterbilder und Maskierungen nicht an. Es ist kein Problem, wenn der Benutzer jeweils nur eine Taste drückt.

Die auf diesen Computern verwendeten Folientastaturen waren nicht gerade für Hochgeschwindigkeits-Touch-Schreiben ausgelegt, daher waren diese Probleme einfach kein Designkriterium.

Diese Schaltung verwendet einige Adressleitungen, um das Lesen über die Tastatur zu ermöglichen. Einige andere Adressleitungen (nicht Teil der Aktivierungsschaltung) bestimmen, welche Spalten (beachten Sie die s) gelesen werden: Eine Low-Adressleitung kann über einen Tastaturschalter einen der Eingänge von IC10 auf Low ziehen. Dies hängt von der Eigenschaft von LS-TTL-Eingängen ab, dass ein schwebender Eingang als hoch angesehen wird.

Die Dioden in der Schaltung werden benötigt, um zu verhindern, dass gedrückte Tasten eine Adressleitung mit einer anderen Adressleitung verbinden könnten, was keine gute Idee wäre. Sie sind nicht dazu da, Ghosting/Masking zu verhindern. Der ZX80 hatte eine Folientastatur, es war schwer genug, eine Taste zu drücken, die Erkennung mehrerer Tastendrücke war kein Merkmal dieses Biests.