2020-09-05 04:36:07 +00:00
|
|
|
; 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:
|
2020-09-06 03:16:06 +00:00
|
|
|
lda #0
|
2020-09-05 04:36:07 +00:00
|
|
|
|
|
|
|
; 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
|
|
|
|
|
2020-09-06 03:16:06 +00:00
|
|
|
rts
|
|
|
|
|
2020-09-05 04:36:07 +00:00
|
|
|
value0: .byte $00
|
|
|
|
value1: .byte $00
|
|
|
|
|