mirror of
https://github.com/RevCurtisP/C02.git
synced 2024-11-28 10:51:14 +00:00
58 lines
2.0 KiB
Plaintext
58 lines
2.0 KiB
Plaintext
|
;Paddle Controller Constants and Functions for C64
|
||
|
|
||
|
PADDLS EQU #$04 ;Maximum Numbers of Paddles
|
||
|
|
||
|
;Read Paddle
|
||
|
;Args: A = Paddle #
|
||
|
;Affects: X,Y
|
||
|
;Returns: A = Paddle Value
|
||
|
; 0 and Carry Set if Paddle # Invalid
|
||
|
PADDLE: CMP #PADDLS ;If Invalid Paddle #
|
||
|
BCS BUTTOZ ; Return 0 & Carry Set
|
||
|
EOR #$03 ;Invert Paddle #
|
||
|
TAY ;Copy Paddle # to Y
|
||
|
AND #$01 ;Get Paddle Index
|
||
|
TAX ;and Copy to X
|
||
|
SEI ;Turn off Interrupts
|
||
|
LDA $DC02 ;Save Data Direction Register A
|
||
|
PHA
|
||
|
LDA #$C0
|
||
|
STA $DC02 ;Set Port A for Output
|
||
|
LDA PADDLT,Y ;Get Bit Mask and
|
||
|
STA $DC00 ;Address Pair of Paddles
|
||
|
LDY #$FF ;Wait for SID to Read Paddles
|
||
|
PADDLL: NOP
|
||
|
DEY
|
||
|
BMI PADDLL ;Y contains $7F when Done
|
||
|
PLA ;Restore Data Direction Register A
|
||
|
STA $DC02
|
||
|
LDA $D419,X ;Read Paddle
|
||
|
STY $DC00 ;Reset Port A for Button Read
|
||
|
CLI ;Turn on Interrupts
|
||
|
RTS
|
||
|
PADDLT: DC $80,$80,$40,$40 ;Port A Bit Mask Table
|
||
|
|
||
|
BUTTNS EQU #$04 ;Maximum Numbers of Paddle Buttons
|
||
|
|
||
|
;Read Paddle Button
|
||
|
;Args: A = Button #
|
||
|
;Affects: X,Y
|
||
|
;Returns: A = $FF if Paddle Button Pressed
|
||
|
; $00 if Paddle Button Not Pressed
|
||
|
; Carry Set if Button Number Invalid
|
||
|
BUTTON: CMP #BUTTNS ;If Button# >= # of Buttons
|
||
|
BCS BUTTOZ ; Return FALSE & Carry Set
|
||
|
EOR #$03 ;Invert Button #
|
||
|
TAX ;and Copy to X Register
|
||
|
ROR ;Divide Button # by 2
|
||
|
TAY ;and Transfer to Y Register
|
||
|
LDA $DC00,Y ;Read Joystick Port
|
||
|
AND BUTTOM,X ;Mask off Relevant Bit
|
||
|
BNE BUTTOZ ;If Bit is 0
|
||
|
LDA #$FF ; Return TRUE
|
||
|
RTS ;Else
|
||
|
BUTTOZ: LDA #$00 ; Return FALSE
|
||
|
RTS
|
||
|
;Paddle Buttons 0 = S2 (bit 2), 1 = S3 (bit 3)
|
||
|
BUTTOM: DC $08,$04,$08,$04 ;Paddle Button Bit Masks
|