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)