home *** CD-ROM | disk | FTP | other *** search
- 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
-