home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 33
/
64er_Magazin_Sonderheft_33_19xx_Markt__Technik_de_Side_B.d64
/
joystick.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
3KB
|
119 lines
2 open1,8,1,"ma.joy"
5 sys 36864
6 .opt p,o1
7 *= $c000
9 ;
10 ; *** ma.joy ***
11 ;
12 ; andreas wendker
13 ; (NULL)jenbergsweg 112 d
14 ; 2050 hamburg 80
15 ; tel. (040) 720 68 04
16 ;
17 ;
18 ; aufruf -> sys 49152, nummer
19 ;
20 ; funktion -> joystick-abfrage
21 ;
22 ;
23 ;
50 getbyte = $b79e;zahl (0-255) aus basic-text holen
51 ;und in x uebergeben
52 chkcom = $aefd;auf komma pruefen
53 fehaus = $a437;fehlermeldung ausgeben
54 letvar = $a9a5;basic-befehl let bearbeiten
90 ;
91 ;joystick-port-nummer aus basic-text holen, wertebereichs-ueberpruefung
92 ;sowie bestimmung einiger parameter
93 ;
100 start jsr chkcom;komma ueberspringen
120 jsr getbyte;nummer des joystick-ports holen
140 dex;pruefen, ob zahl = 1 bzw. 2
160 cpx #2
180 bcc ok
200 ldx #14;sonst fehlermeldung ausgeben
220 jmp fehaus;-> illegal quantity error
240 ok inx;je nach joystick-port-nummer
260 lda #"1";a mit "1" bzw. "2" laden und
280 cpx #2;x auf joystick-register
300 bne jonum;zeigen lassen
320 ldx #0
340 lda #"2";ascii-code der port-nummer als 2. buchstaben
360 jonum sta text+1;des variablen-namens uebernehmen
370 ;
371 ;variabe 'j1' bzw. 'j2' bearbeiten -> je nach bewegungsrichtung
372 ;des joysticks einen wert von 0 bis 8 zuweisen
373 ;
380 lda #"j";1.buchstabe = "j"
400 sta text;-> variable heisst nun 'j1' bzw. 'j2'
420 lda 56320,x;wert des joystick-registers holen
440 pha;und retten
460 and #%00001111;untere vier bits isolieren
480 ldy #8
500 josuch cmp verwer,y;und mit allen moeglichen werten vergleichen
520 beq found
540 dey
560 bpl josuch
580 found tya;a enthaelt jetzt den wert, der der variablen
582 ;zugewiesen werden soll
600 jsr anlegen;variable anlegen
610 ;
611 ;jetzt die variable 'f1' bzw. 'f2' bearbeiten
612 ;-> je nach zustand des feuerknopfes 0 oder 1 zuweisen
613 ;
620 lda #"f";variablen-namen ab text umbenennen
640 sta text;in 'f1' bzw. 'f2'
660 pla;wert des joystick-registers zurueckholen
680 and #%00010000;feuerknopf-bit isolieren
700 cmp #0
720 beq feuok;knopf gedrueckt
740 lda #1
760 feuok eor #1;bit 0 umdrehen -> a enhaelt nun
761 ;gewuenschten wert
762 ;
763 ;routine zum anlegen der variablen
764 ;-> bei j1/j2 wird sie als unterprogramm aufgerufen, bei f1/f2
765 ;ganz normal durchgegangen
766 ;-> in a muss der spaetere wert der variablen stehen
767 ;
770 anlegen clc;ascii-code der zahl ermitteln
780 adc #48
800 sta text+3;und in basic-befehl ab text einfuegen
820 lda $7a;chrget-zeiger retten
840 pha
860 lda $7b
880 pha
900 lda #<text;chrget-zeiger auf eigenen befehl
920 sta $7a;ab text richten
940 lda #>text
960 sta $7b
980 jsr letvar;befehl abarbeiten -> wertzuweisung
1000 pla;chrget-zeiger auf altes byte richten
1020 sta $7b
1040 pla
1060 sta $7a
1080 rts
9000 ;
9001 ;alle denkbaren kombinationen der vier bewegungsrichtungen
9002 ;des joysticks -> reihenfolge entspricht
9003 ;den spaeteren variablen-werten
9004 ;
10000 verwer .byte %00001111;nicht bewegt
10001 .byte %00001110;oben
10002 .byte %00001101;unten
10003 .byte %00001011;links
10004 .byte %00000111;rechts
10005 .byte %00001010;oben-links
10006 .byte %00000110;oben-rechts
10007 .byte %00001001;unten-links
10008 .byte %00000101;unten-rechts
10500 ;
10501 ;basic-befehl j1=0
10502 ;-> verschluesselt zur bearbeitung durch das betriebssystem
10504 ;-> befehl wird je nach variable geaendert
10505 ;
11000 text .asc "j1";platz fuer variablen-namen
11001 .byte $b2;basic-token fuer '='
11002 .byte 48, 0;platz fuer ascii-code des ergebnisses
11003 ;die 0 kennzeichnet das befehls-ende