Joystickabfrage in den Interrupt verlegt
Beeinflussen Sie mit dem Joystick ein Sprite während des Programmablaufs. Ein optimaler Zusatz um Spiele zu programmieren und Menüs zu unterstützen.
Ab jetzt haben Sie mit der Abfrage Ihres Joystick keine Probleme mehr. Dieses Programm übernimmt das für Sie vollständig und bewegt entsprechend der Joystickbewegungen das Sprite mit der Nummer 1. Das Programm wurde in Maschinensprache geschrieben, um eine möglichst hohe Geschwindigkeit zu erreichen. Um das Programm vom Basic-Ablauf zu trennen, wurde es in den Interrupt eingebaut. Gesteuert wird dabei mit dem Joystick in Port 2. Das Programm (Listing 1) selbst befindet sich im Kassettenpuffer und wird mit »SYS 951« gestartet. Das entsprechende Sprite (Nummer 1) läßt sich auf den gesamten Bildschirm bewegen (auch über den kritischen Punkt, bei dem das Low-Byte der X-Achse den Wert 255 übersteigt) und läuft nicht über den Rand hinaus. Versuchen Sie doch einmal das kleine Demo-Programm (Listing 2).
Um das Programm auf Port 1 umzustellen, ändern Sie mittels POKE in den folgenden Speicherstellen den Wert von »0« auf »1«: 829, 839, 849 und 854. Der Knopf des Joysticks wird vom Programm nicht berücksichtigt.
(H. Werner/og)PROGRAMM : JOY IRQ 033C 03C6 ----------------------------------- 033C : AD 00 DC 29 01 D0 03 CE 86 0344 : 01 D0 AD 00 DC 29 02 D0 D9 034C : 03 EE 01 D0 AD 00 DC 29 C1 0354 : 04 D0 03 CE 00 D0 AD 00 98 035C : DC 29 08 D0 03 EE 00 D0 32 0364 : AD 10 D0 C9 01 D0 1A AD E1 036C : 00 D0 C9 40 D0 03 CE 00 AF 0374 : D0 AD 00 D0 C9 00 D0 08 25 037C : CE 00 D0 A9 00 8D 10 D0 02 0384 : 4C A0 03 AD 00 D0 C9 16 71 038C : D0 03 EE 00 D0 AD 00 D0 B6 0394 : C9 FF D0 08 A9 01 8D 00 6B 039C : D0 8D 10 D0 AD 01 D0 C9 0B 03A4 : E6 D0 03 CE 01 D0 AD 01 DC 03AC : D0 C9 31 D0 03 EE 01 D0 15 03B4 : 4C 31 EA 78 A9 3C 8D 14 3D 03BC : 03 A9 03 8D 15 03 58 60 92 03C4 : 20 4C 2D
10 poke 2053,143:load"joy irq",8,1 20 sys 951 :rem initialisierung 30 poke v+21,1 :rem sprite ein 40 poke v+39,1 :rem farbe weiss 50 poke v+0,160 :rem sprite in... 60 poke v+1,120 :rem ...die mitte 70 poke 2040,11 :rem spritezeiger... 75 : rem ...auf block 11 80 for x=704 to 766:poke x,255:next 85 : rem spriteinhalt definieren
10 POKE 2053,143:LOAD "JOY IRQ",8,1 20 SYS 951 :REM INITIALISIERUNG 30 POKE V+21,1 :REM SPRITE EIN 40 POKE V+39,1 :REM FARBE WEISS 50 POKE V+0,160 :REM SPRITE IN... 60 POKE V+1,120 :REM ...DIE MITTE 70 POKE 2040,11 :REM SPRITEZEIGER... 75 : REM ...AUF BLOCK 11 80 FOR X=704 TO 766:POKE X,255:NEXT 85 : REM SPRITEINHALT DEFINIEREN