mirror of
https://github.com/RevCurtisP/C02.git
synced 2024-11-22 16:34:15 +00:00
49 lines
1.7 KiB
Plaintext
49 lines
1.7 KiB
Plaintext
|
;Paddle Controller Constants and Functions for VIC-20
|
||
|
|
||
|
PADDLS EQU #2 ;Maximum Numbers of Paddles
|
||
|
|
||
|
;Read Paddle
|
||
|
;Args: A = Paddle #
|
||
|
;Returns: A,Y = Paddle Value
|
||
|
; 0 and Carry Set if Paddle # Invalid
|
||
|
; X = Paddle #
|
||
|
PADDLE: LDY #0 ;Preset Result to 0
|
||
|
CMP #PADDLS ;If Paddle# >= # of Paddles
|
||
|
BCS PADDLZ ; Return Zero & Carry Set
|
||
|
TAX ;Copy Paddle # to X Register
|
||
|
LDY $9008,X ;Read Paddle
|
||
|
PADDLZ: TYA ;Copy Result to Accumulator
|
||
|
RTS
|
||
|
|
||
|
BUTTNS EQU #2 ;Maximum Numbers of Paddle Buttons
|
||
|
|
||
|
;Read Paddle Button
|
||
|
;Args: A = Button #
|
||
|
;Affects: Y
|
||
|
;Returns: A = $FF if Paddle Button Pressed
|
||
|
; $00 if Paddle Button Not Pressed
|
||
|
; Carry Set if Button Number Invalid
|
||
|
; X = Button #
|
||
|
BUTTON: CMP #2 ;If Button# >= # of Buttons
|
||
|
BCS BUTTOZ ; Return FALSE & Carry Set
|
||
|
TAX ;Copy Button Number to X Register
|
||
|
LDY BUTTOR,X ;Get Button Register Offset
|
||
|
LDA $9102,Y ;Read Data Direction Register
|
||
|
PHA ;and Save It
|
||
|
LDA #$00 ;Set Port to All Inputs
|
||
|
STA $9102,Y ;
|
||
|
LDA $9100,Y ;Read Button Port
|
||
|
AND BUTTOM,X ;and Isolate Bit
|
||
|
TAX ;Save Result in X
|
||
|
PLA ;Retrieve Original DDR Value
|
||
|
STA $9102,Y ;Restore Data Direction Register
|
||
|
TXA ;Get Result from X, Setting Flags
|
||
|
BNE BUTTOZ ;If Bit Not Set
|
||
|
LDA #$FF ; Return TRUE
|
||
|
RTS ;Else
|
||
|
BUTTOZ: LDA #$00 ; Return FALSE
|
||
|
RTS
|
||
|
;Paddle Buttons 0 = S2 ($9111 bit 4), 1 = S3 ($9120 bit 7)
|
||
|
BUTTOR: DC $11,$20 ;Paddle Button VIC Registers
|
||
|
BUTTOM: DC $10,$80 ;Paddle Button Bit Masks
|