Joystick abfragen
Suche
Index
FAQ
Kontakt
Zurück
ports Joystick abfragen

Immer wieder wird der Joystick benutzt, meistens für Spiele aber auch zu Steuerung durch

Programm-Menus. Die Abfrage in Assembler ist genauso einfach wie mit dem Basic Interpreter. Im

linken Bild sieht man die Inhalte der jeweiligen Portregister bei Bewegung in die entsprechende

Richtung.

Die schwarzen Einträge entsprechen den Registern von Port 1 und die blauen daneben gehören

zum Port 2. In der Mitte ist der Wert fuer die Feuertaste zu finden. Anhand dieser Daten ist

eine Abfrage sehr einfach :

      to"joy.prg",cbm
      *=$1000

Loop  lda $dc00 ; Port abfragen
      cmp #$6f  ; Feuertaste wurde gedrueckt ?
      bne Loop  ; nein, dann wieder zum Anfang
      rts       ; zurueck ins Basic

Das kleine Programm durchläuft die Schleife bis die Feuertaste gedrueckt wurde. Nach dem selben

Schema koennen leicht Abfragen für Sprites und Menus programmiert werden.




Eine Routine aus einem kleinen Experiment. Hier wird Sprite 1 gesteuert. Die maximale Bewungsmöglichkeiten sind auf

den Bildschirm beschränkt.




;---- Joystick-Auswertung -- Branch-Reichweite


r_up         lda $d001       ; rechts_hoch  (diagonal)
             cmp #48
             beq r_up_ex
             lda $d000
             cmp #252
             beq r_up_ex
             inc $d000
             inc $d000
             inc $d000
             inc $d000
             dec $d001
             dec $d001
             dec $d001
             dec $d001
r_up_ex      rts

up           lda $d001       ; hoch
             cmp #48
             beq up_ex
             dec $d001
             dec $d001
             dec $d001
             dec $d001
up_ex        rts
down         lda $d001       ; runter
             cmp #196
             beq d_ex
             inc $d001
             inc $d001
             inc $d001
             inc $d001
d_ex         rts
forw         lda $d000       ; rechts
             cmp #252
             beq forw_ex

             inc $d000
             inc $d000
             inc $d000
             inc $d000

forw_ex      rts
backw        lda $d000       ; links
             cmp #40
             beq backw_ex


             dec $d000
             dec $d000
             dec $d000
             dec $d000

backw_ex     rts


;-------------------------------------------------
; Auswertung des Ports (aus IRQ)
;-------------------------------------------------

joystick
          lda joy2
          cmp #$76
          beq r_up     ; rechts hoch
          cmp #$7a
          beq l_up     ; links oben
          cmp #$79
          beq l_down   ; links unten
          cmp #$75
          beq r_down   ; rechts unten
          ror
          bcc up       ; hoch
          ror
          bcc down     ; runter
          ror
          bcc backw    ; links
          ror
          bcc forw     ; rechts
          rts

;-------------------------------------------------

;-------------------------------------------------
r_down       lda $d001       ; rechts_unten (diagonal)
             cmp #196
             beq r_down_ex
             lda $d000
             cmp #252
             beq r_down_ex
             inc $d000
             inc $d000
             inc $d000
             inc $d000

             inc $d001
             inc $d001
             inc $d001
             inc $d001
r_down_ex    rts


l_down       lda $d001       ; links_unten (diagonal)
             cmp #196
             beq l_down_ex
             lda $d000
             cmp #40
             beq l_down_ex
             dec $d000
             dec $d000
             dec $d000
             dec $d000

             inc $d001
             inc $d001
             inc $d001
             inc $d001
l_down_ex    rts

l_up         lda $d001       ; links_hoch (diagonal)
             cmp #48
             beq l_up_ex
             lda $d000
             cmp #40
             beq l_up_ex
             dec $d000
             dec $d000
             dec $d000
             dec $d000
             dec $d001
             dec $d001
             dec $d001
             dec $d001
 l_up_ex     rts

;----------------------------------

 

Letzte Änderung: 2019-01-03 11:42:09
  Rubrik:  C64
Rubriken-Übersicht
 218 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!