VC 20
Tips & Tricks

Joystick-Abfrage in Theorie und Praxis

Wenn der Joystickanschluß für Sie »ein Buch mit sieben Siegeln« ist, so wird Ihnen dieser Artikel für den VC 20 weiterhelfen. Doch auch die »Profis« werden einige wichtige Informationen finden.

Ein Joystick besteht aus vier Schaltern, die im rechten Winkel zueinander angeordnet sind. Der Handgriff erlaubt neun abfragbare Positionen:

Ein zusätzlicher »Feuerknopf« hat einen eigenen Schalter.

Grafisch sieht das so aus:

Jeder der fünf Schalter ist mit je einer Leitung von zwei speziellen integrierten Bausteinen mit dem Namen »VIA 6522« (Versatile Interface Adapter) verbunden. Diese sind, wie der Name andeutet, programmierbare Adapter für die Ein- und Ausgabe (also auch für den Joystick).

Leider sind die fünf Schalter etwas ungleichmäßig auf die beiden VIAs verteilt:

Der Kontakt des Joysticks mit den VIAs und damit mit dem VC 20 wird durch zum Teil Ihnen schon bekannte Registerzellen geregelt, welche folgende Adressen haben:

Der Vollständigkeit halber sei erwähnt, daß jeder VIA noch ein zweites E/A-Register hat, nämlich:

Für den Joystick brauchen wir diese jedoch nicht.

Die einzelnen Leitungsanschlüsse der Joystick-Schalter sind:

Ich habe gesagt, daß 37137 und 37152 Ein- und Ausgaberegister sind, das heißt wir können sie in beiden Richtungen benützen.

Die Entscheidung darüber liegt in je einem zugeordneten »Daten-Richtungs-Register«.

Dieses Arrangement erlaubt, jede einzelne Leitung eines E/A-Registers separat auf Ein- oder Ausgabe zu schalten, völlig unabhängig voneinander.

Das geht so:

Sobald in einem Bit des DR-Registers eine 1 steht, ist die entsprechende Leitung des E/A-Registers auf Ausgabe geschaltet, bei einer 0 auf Eingabe.

Im Bild unten habe ich die notwendigen Bitmuster in die beiden DR-Register eingezeichnet.

Im Register 37139, an dem ja vier Schalter hängen, wäre die hineinzuPOKEnde Zahl 195. Da aber während der Joystick-Abfrage dieses Register für nichts anderes verwendet wird, setzen wir ruhig das ganze Register auf 0. 10 POKE 37139,0

Beim Register 37154 ist die Lage anders, da das zugehörige E/A-Register 37152 zur Tastaturabfrage verwendet wird. Da müssen wir die Auswahl der Leitung schon genau machen. 20 POKE 37154,127

Während der Joystick-Abfrage funktionieren die Tasten in der Spalte 127 der 8 x 8-Matrix nicht.

Zeile 10 und 20 »initialisieren« die Joystick-Abfrage.

Ein Experimentier-Programm zum Testen, was jetzt bei der Bewegung des Joysticks stattfindet, ist ganz einfach: 30 PRINT PEEK(37137);PEEK(37152) 40 GOTO 30

Am Ende empfiehlt es sich, die volle Tastatur wieder einzuschalten mit POKE 37154,255

In einem Programm können Sie also einfach die Werte in den beiden Adressen der Zeile 30 (mit IF … THEN) abfragen.

Zur Vermeidung von eventuellen Störungen durch die Mehrfachfunktionen der Register ist es aber empfehlenswert, die einzelnen Bits direkt abzufragen. Das sieht dann so aus: 10 POKE 37139,0 20 POKE 37154,127 30 IF PEEK(37137) AND 4 THEN… (Schalter 0) 40 IF PEEK(37137) AND 8 THEN… (Schalter 1) 50 IF PEEK(37137) AND 16 THEN… (Schalter 2) 60 IF PEEK(37137) AND 32 THEN… (Schalter 4 = Feuerknopf) 70 IF PEEK(37152) AND 128 THEN… (Schalter 3) 80 POKE37154,255

(Helmuth Hauck/rg)
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →