; Oliver Schmidt ; comp.sys.apple2.programmer ; Call with joystick number (0 or 1) in A. ; Results are stored in value0 and value1. ; UPPER_THRESHOLD is the paddle value you want to consider as "right enough" / ; "down enough". UPPER_THRESHOLD = 128 ;PTRIG = $c070 PADDL1 = $C065 handle_joystick: lda #0 ; Read both paddles simultaneously asl ; Joystick number -> paddle number tax ldy #$00 sty value0 sty value1 lda PTRIG ; Trigger paddles loop: lda PADDL0,x ; Read paddle (0 or 2) bmi set0 ; Cycles: 2 3 nop ; Cycles: 2 bpl nop0 ; Cycles: 3 set0: sty value0 ; Cycles: 4 nop0: ; - - ; Cycles: 7 7 lda PADDL1,x ; Read paddle (1 or 3) bmi set1 ; Cycles: 2 3 nop ; Cycles: 2 bpl nop1 ; Cycles: 3 set1: sty value1 ; Cycles: 4 nop1: ; - - ; Cycles: 7 7 iny cpy #UPPER_THRESHOLD+1 bne loop rts value0: .byte $00 value1: .byte $00