10 *= $033C 15 ; JOYSTICK ID ROUTINE 20 ; 25 .O 30 .D JOYID.ML 35 ; 40 CONREG = $DC0D; CONTROL REGISTER 45 PORTA = $DC00; JOY PORT 2 50 PORTB = $DC01; JOY PORT 1 55 KEYQUEUE = $00C6; GUESS WHERE... 60 KEYBUF = $0277; DITTO... 65 JOYNUM = $03A0; RETURN VALUE 70 ; 100 JOYID LDA #$00; GET STARTED 110 STA JOYNUM; CLEAR RETURN VAL 120 STA KEYQUEUE; CLEAR KEYBD BUF 130 LDA #$01; SET UP VARIABLES 140 STA TEMP; HOLDS VALUES 150 STA TEMP+1; FROM CHECKS 160 LDA #$11; KILL KEYBOARD IN 170 STA CONREG; PREP TO READ 180 LDA #$FF; JOYSTICK PORT 190 STA PORTA; ONE 200 LDA PORTB; READ JOY ONE 210 STA TEMP; SAVE THE RESULT 220 LDA PORTA; READ JOY TWO 230 STA TEMP+1; AND SAVE IT 240 LDA #$81; TURN ON THE 250 STA CONREG; KEYBOARD 260 LDA KEYBUF; CHECK KEYPRESS 270 CMP #$0D; IS RETURN, 280 BNE CHKREGA; NO RETURN, (null) ON 290 LDA #$00; RETURN, LOAD JOY 300 STA JOYNUM; VALUE WITH 0 310 BEQ RETURN; AND EXIT 320 CHKREGA LDA TEMP; COMPARE FOR FIRE 330 AND #$10; BUTTON 340 BNE CHKREGB; NO, JUMP AHEAD 350 LDA #$01; LOAD JOY VALUE 360 STA JOYNUM; WITH 1 AND 370 BNE RETURN; EXIT 380 CHKREGB LDA TEMP+1;COMPARE FOR FIRE 390 AND #$10; BUTTON 400 BNE JOYID; NO, START OVER 410 LDA #$02; LOAD JOY VALUE 420 STA JOYNUM; WITH 2 430 RETURN LDA #$00; READY TO RETURN 440 STA KEYQUEUE; CLEAR QUEUE 450 RTS; (null) ON HOME 460 TEMP .BYTE 1 1; VARIABLES 470 ; 480 .END JOYID.LADS