.rodata
+; (We use ".proc" because we want to define both a label and a scope.)
+
.proc DefVars
.word SCREEN_HEIGHT/2 ; YPos
.word SCREEN_WIDTH/2 ; XPos
; Check for a pressed button and place the result into Buttons
ldx #0
- stx XPos+1
- stx YPos+1
stx Buttons
lda PORTA ; get other buttons
eor #255
tax
- and #5 ; pen button and left button are mapped to left mouse button
+ and #5 ; pen button and left button are mapped to left mouse button
beq @L01
lda #MOUSE_BTN_LEFT
ora Buttons
; If we read 228 for X or Y positions, we assume the user has lifted the pen
; and don't change the cursor position.
-@L02: lda PADDL0
- cmp #228
- beq @Dont
- lda PADDL1
- cmp #228
- bne @Do
-@Dont: jmp @Done
+@L02: lda PADDL0
+ cmp #228
+ beq @Dont
+ lda PADDL1
+ cmp #228
+ bne @Do
+@Dont: jmp @Done
-@Do: lda visible
+@Do: lda visible
beq @L03
jsr CHIDE
+@L03: ldx #0
+ stx XPos+1
+ stx YPos+1
+
; Get cursor position
; -------------------
; The touch pad is read thru the paddle potentiometers. The possible
; X
-@L03: ldx PADDL0 ; get X postion
+ ldx PADDL0 ; get X postion
dex ; decrement, since it's 1-based
stx XPos
txa