Inhaltsverzeichnis

JU+TE 6/87 S. 437-439

Spielhebel für "Z 1013"

Prinzip

Es wird das auf den Steckverbinder X4 für E/A-Anwendungen gelegte Port A der PIO genutzt. Zum Verhindern von Störimpulsen auf den Eingabeleitungen legt man diese zwangsweise auf H-Pegel. Beim Betätigen des Spielhebels wird nun mit dem je nach Betätigungsrichtung geschlossenen Kontakt (S1-S4) die entsprechende Bitleitung auf L-Pegel gezogen und so ein eindeutiger Wert zur Auswertung erzeugt. Die vorgeschlagene Zuordnung der Bitleitungen 4-7 zu den entsprechenden Hebelrichtungen wurde willkürlich festgelegt und kann natürlich nach eigenen Vorstellungen anders erfolgen. Da Bit 0 zur Ansteuerung eines Piezo-Tongebers dient, wird nur ein Halbbyte (Bit 4-7) ausgewertet. Betriebsart dabei ist Bit E/A (wichtig für Nutzen des Beispielprogramms).

Hardware

Die positive Vorspannung der Eingabeleitung mit H-Pegel erfolgt entweder mit Widerständen gegen +5V oder dadurch, daß die Bitleitungen auf Eingänge von TTL-Gatter geführt werden. Der Vorteil der etwas aufwendigeren letzteren Variante ist die Möglichkeit des gleichzeitigen Darstellens der Binärwerte durch von den Gattern angesteuerte LED. Dazu lassen sich preiswerte P100 verwenden. Neben der Funktionskontrolle des Spielhebels steht so gleichzeitig eine einfache Anzeige bei PIO-Ausgabe zur Verfügung.

Der Spielhebel selbst kann im einfachsten Fall durch vier im Viereck angeordnete Taster realisiert werden, die die jeweilige Bitleitung auf Masse legen. Es existieren mechanische Lösungen, bei denen Kugelgelenke oder Spiralfedern die Bewegung des Spielhebels nach allen Richtungen gewährleisten. Als eine einfachere Variante wird ein Stück Moosgummi als „Gelenk“ vorgeschlagen. Den Gummi klebt man dazu auf ein als Trägerplatine dienendes Stück Leiterkarte, auf der sich gleichzeitig die Schließkontakte befinden (gelötet). Auf dem Gummi befestigt man nun eine Plastscheibe, so bemessen, daß beim Niederdrücken in eine Richtung der darunterliegende Kontakt schließt. Bei genauer zentrischer Justage ist es möglich, acht Richtungen bei vier angeschlossenen Bitleitungen zu erhalten, indem nämlich bei „schrägen“ Richtungen, z.B. links/oben, gleichzeitig zwei Kontakte geschlossen werden.

Die zugehörenden Dezimalwerte bei einer Portauswertung in BASIC sind in Tabelle S. 439 aufgeführt. Als Spielhebel klebt man zum Schluß in die Mitte der Plastscheibe einen Rundstab. Nach dem Komplettieren mit einem Gehäuse, z. B. Leergehäuse von Antennenverstärkern, kann das Griffstück für höhere Ansprüche mittels Suralin entsprechend ergonomisch gestaltet werden.

Programmierung

Im BASIC erfolgt die Initialisierung und Datenübertragung mit den Befehlen IN und OUT (TINY BASIC) oder INP und OUT bei 10K-BASIC für Z 1013.

Sollen bei zeitkritischen Programmen zwei Spielhebel gleichzeitig ausgewertet werden. muß entweder mit Interruptbetrieb gearbeitet werden oder ein MC- Unterprogramm (MC: Maschinencode) eingesetzt werden.

Ein Beispiel eines MC-Unterprogramms zur Spiethebelabfrage (8 Richtungen) ist auf Seite 438 veröffentlicht. Je nach Spielhebelrichtung wird auf Bildschirmmitte ein Zeichen erzeugt Das Programm ist auf beliebigen Adressen lauffähig.

Bei der vorgeschlagenen Zuordnung der Bitleitungen 4-7 zu den entsprechenden Schaltern SI -S4 ergeben sich folgende Werte beim Lesen von Port A (Tabelle S. 439). Betriebsart ist bei diesem Beispiel Bit E/A, wobei die Bitleitungen mit 1000 B belegt wurden, da Bitleitung 0 bei L-Pegel einen Piezo-Tongeber aktiviert.

Bei einer Erweiterung des Spielhebels außer den acht Richtungen um einige Aktionstasten braucht man nur von den vier Bitleitungen gleichzeitig mehrere (über Dioden entkoppelt) auf weitere Schalter zu legen. Man wählt dazu solche, die bei Betätigung des Spielhebels nicht zugleich benutzt werden, z. B. S1 und S4 oder S2 und S3.

Der mechanische Aufbau des Spielhebels kann nach Abb. S. 438 links erfolgen, wobei sich die genauen Maße nach den individuellen Vorstellungen richten. Um den Aufwand zu senken, wurden die Kontaktflächen auf die Leiterkarte gelötet, vorher entsprechend geätzt. Als Federkontakt eignet sich Material von Rasierklingen, da diese gute Federeigenschaften aufweisen. Bei dem realisierten Anwendungsfall kann die auftretende Kontaktprellung vernachlässigt werden, eindeutige Werte bei Hebelbetätigung sind garantiert. Zum Kleben eignet sich EP11 oder SYSPUR-Universalkleber. Die erwähnte Variante. wobei die 5-kOhm-Widerstände entfallen und statt dessen die Bitleitungen auf Gattereingänge geführt werden, wurde nicht ausführlich dargestellt, da diese je nach vorhandenen Bauelementen selbst realisiert werden kann.

In der beschriebenen Form wurden mehrere Spielhebel aufgebaut, die alle zufriedenstellend funktionieren. Selbstverständlich läßt sich dieser Spielhebel an be liebigen Kleincomputern betreiben, Voraussetzung ist lediglich ein PIO-Port.

Sicher gibt es weit anspruchsvollere Lösungen. Es wurde aber Wert auf Nachbausicherheit und wenig Aufwand gelegt. Für diesen Spielhebel existieren mehrere Spielprogramme. Weiterhin wird der Spielhebel für einen Editor genutzt, mit dem auf komfortable Art Grafik erzeugt werden kann.

Thomas Adler

Zeichnungen: Schmidt Foto: Pfad

Richtung Schalter Binärwert Dezimalwert
nach oben S1 1000 1110 113
nach unten S4 1000 0111 225
nach rechts S2 1000 1101 177
nach links S3 1000 1011 209
nach oben/links S1 u. S3 1000 1010 81
nach oben/rechts S1 u. S2 1000 1100 -49
nach unten/links S3 u. S4 1000 0011 193
nach unten/rechts S2 u. S4 1000 0101 161
Kein Schafter betätigt,
Ruhestellung des Spielhebels:
1000 1111 241
200 : 3E FF           ld      a, 0ffh     ; initialisieren
202 : D3 01           out     01, a       ; PIO Port A
204 : 3E F0           ld      a, 0f0h     ; Bit 4-7 = Eingabe
206 : D3 01           out     01, a
208 : 3E 01           ld      a,1
20A : D3 00           out     0, a
20C : 21 0F EE        ld      hl, 0ee0fh  ; BS-Adresse nach HL
20F : DB 00     input:in      a, 0        ; Kanal 0 nach A
211 : CB 87           res     0, a        ; Rücksetzen Bit 0 Rg. A
213 : FE 70           cp      70h         ; Vergl. Rg. A mit 70 Hex
215 : 06 9D           ld      b, 9dh      ; Ldad nach Rg. B 9D Hex
217 : 28 2C           jr      z, go       ; wenn Rg. A = 70 Hex, Sprung
219 : FE E0           cp      0e0h
21B : 06 9A           ld      b, 9ah      ; usw.
21D : 28 26           jr      z, go
21F : FE B0           cp      0b0h
221 : 06 97           ld      b, 97h
223 : 28 20           jr      z, go
225 : FE D0           cp      0d0h
227 : 06 94           ld      b, 94h
229 : 28 1A           jr      z, go
22B : FE 30           cp      030h
22D : 06 D3           ld      b, 0d3h
22F : 28 14           jr      z, go
231 : FE C0           cp      0c0h
233 : 06 DC           ld      b, 0dch
235 : 28 0E           jr      z, go
237 : FE 50           cp      050h
239 : 06 D0           ld      b, 0d0h
23B : 28 08           jr      z, go
23D : FE A0           cp      0a0h
23F : 06 DF           ld      b, 0dfh
241 : 28 02           jr      z, go
243 : 06 20           ld      b, 20h
245 : 70        go:   ld      (hl), b     ; Lade auf Adr. in HL Rg. B
246 : 18 C7           jr      input
248 : C9              ret

Bem: Der Code wird in der o.a. Form nicht als UP laufen (da Endlosschleife)! Im Heft waren außerdem weitere Druckfehler im Listing. (vp)