mirror of
https://github.com/cc65/cc65.git
synced 2024-12-27 00:29:31 +00:00
Added mouse_pos(), mouse_info(). Changed mouse_hide() and mouse_show() to
use a counter instead of a flag. git-svn-id: svn://svn.cc65.org/cc65/trunk@868 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
8b73812212
commit
c501c18b95
@ -1,6 +1,6 @@
|
||||
;--------------------------------------------------------------------
|
||||
; Atari 8-bit mouse routines -- 05/07/2000 Freddy Offenga
|
||||
; Some changes by Christian Groessler
|
||||
; Some changes by Christian Groessler, Ullrich von Bassewitz
|
||||
;
|
||||
; The following devices are supported:
|
||||
; - Atari trak-ball
|
||||
@ -11,12 +11,13 @@
|
||||
; drawn in player 0 during the vertical blank
|
||||
;--------------------------------------------------------------------
|
||||
|
||||
.export _mouse_init, _mouse_done, _mouse_box
|
||||
.export _mouse_show, _mouse_hide, _mouse_move
|
||||
.export _mouse_buttons
|
||||
.export _mouse_init, _mouse_done, _mouse_box
|
||||
.export _mouse_show, _mouse_hide, _mouse_move
|
||||
.export _mouse_buttons, _mouse_pos, _mouse_info
|
||||
.constructor initmouse,27
|
||||
|
||||
.import popa,popax
|
||||
.import popa,popax
|
||||
.importzp ptr1
|
||||
|
||||
.include "atari.inc"
|
||||
|
||||
@ -51,7 +52,7 @@ initmouse:
|
||||
sta APPMHI
|
||||
stx APPMHI+1
|
||||
rts
|
||||
|
||||
|
||||
|
||||
;--------------------------------------------------------------------
|
||||
; Initialize mouse routines
|
||||
@ -184,8 +185,7 @@ _mouse_move:
|
||||
; void mouse_show(void)
|
||||
|
||||
_mouse_show:
|
||||
lda #1
|
||||
sta mouse_on
|
||||
inc mouse_on
|
||||
rts
|
||||
|
||||
;--------------------------------------------------------------------
|
||||
@ -193,37 +193,80 @@ _mouse_show:
|
||||
; void mouse_hide(void)
|
||||
|
||||
_mouse_hide:
|
||||
lda #0
|
||||
sta mouse_on
|
||||
rts
|
||||
lda mouse_on
|
||||
beq @L1
|
||||
dec mouse_on
|
||||
@L1: rts
|
||||
|
||||
;--------------------------------------------------------------------
|
||||
; Ask mouse button
|
||||
; unsigned char mouse_buttons(void)
|
||||
|
||||
_mouse_buttons:
|
||||
ldx port_nr
|
||||
lda STRIG0,x
|
||||
bne nobut
|
||||
; lda #14
|
||||
ldx port_nr
|
||||
lda STRIG0,x
|
||||
bne nobut
|
||||
; lda #14
|
||||
;??? sta COLOR1
|
||||
ldx #0
|
||||
lda #1
|
||||
rts
|
||||
ldx #0
|
||||
lda #1
|
||||
rts
|
||||
nobut: ldx #0
|
||||
txa
|
||||
rts
|
||||
txa
|
||||
rts
|
||||
|
||||
;--------------------------------------------------------------------
|
||||
; Get the mouse position
|
||||
; void mouse_pos (struct mouse_pos* pos);
|
||||
|
||||
_mouse_pos:
|
||||
sta ptr1
|
||||
stx ptr1+1 ; Store argument pointer
|
||||
ldy #0
|
||||
lda mousex ; X position
|
||||
sta (ptr1),y
|
||||
lda #0
|
||||
iny
|
||||
sta (ptr1),y
|
||||
lda mousey ; Y position
|
||||
iny
|
||||
sta (ptr1),y
|
||||
lda #0
|
||||
iny
|
||||
sta (ptr1),y
|
||||
rts
|
||||
|
||||
;--------------------------------------------------------------------
|
||||
; Get the mouse position and button information
|
||||
; void mouse_info (struct mouse_info* info);
|
||||
|
||||
_mouse_info:
|
||||
|
||||
; We're cheating here to keep the code smaller: The first fields of the
|
||||
; mouse_info struct are identical to the mouse_pos struct, so we will just
|
||||
; call _mouse_pos to initialize the struct pointer and fill the position
|
||||
; fields.
|
||||
|
||||
jsr _mouse_pos
|
||||
|
||||
; Fill in the button state
|
||||
|
||||
jsr _mouse_buttons ; Will not touch ptr1
|
||||
ldy #4
|
||||
sta (ptr1),y
|
||||
|
||||
rts
|
||||
|
||||
;--------------------------------------------------------------------
|
||||
; Atari trak-ball check, A,Y = 4-bit port value
|
||||
|
||||
trak_check:
|
||||
eor oldval
|
||||
and #%00001000
|
||||
beq horiz
|
||||
eor oldval
|
||||
and #%00001000
|
||||
beq horiz
|
||||
|
||||
tya
|
||||
and #%00000100
|
||||
tya
|
||||
and #%00000100
|
||||
beq mmup
|
||||
|
||||
inc mousey
|
||||
@ -421,7 +464,7 @@ pminit: lda mouse_pm0
|
||||
sta mpatch1+2
|
||||
sta mpatch2+2
|
||||
sta mpatch3+2
|
||||
|
||||
|
||||
ldx #0
|
||||
txa
|
||||
mpatch1:
|
||||
|
Loading…
Reference in New Issue
Block a user