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 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