A2osX/LIB/LIBGUI.S.MOU.txt

151 lines
2.6 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
AUTO 3,1
*--------------------------------------
MOU.Init
.1 >PUSHBI 0
>LDYA L.DEVNAME.MOUSE
>SYSCALL2 open
bcc .2
inc DEVNAME.MOUSE+8
lda DEVNAME.MOUSE+8
cmp #'8'
bne .1
rts
.2 sta hDevMouse
clc
rts
*--------------------------------------
MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1
sta MouseClamp+3
lsr
sta CUR.Pos+S.POINT.X+1
lda DCB.GFX+S.DCB.GFX.W
sta MouseClamp+2
ror
sta CUR.Pos+S.POINT.X
lda DCB.GFX+S.DCB.GFX.H+1
sta MouseClamp+7
lsr
sta CUR.Pos+S.POINT.Y+1
lda DCB.GFX+S.DCB.GFX.H
sta MouseClamp+6
ror
sta CUR.Pos+S.POINT.Y
>PUSHB hDevMouse
>PUSHBI IOCTL.CONTROL
>PUSHW L.MouseClamp
>SYSCALL2 IOCTL
bcs .9
>LDYA L.CUR.SaveBuf
>STYA CB.PTR+S.CB.DstPtr
* clc
.9 rts
*--------------------------------------
MOU.Quit lda hDevMouse
beq .8
>PUSHA
>PUSHBI IOCTL.CLOSE
>PUSHWZ
>SYSCALL2 IOCTL
.8 clc
rts
*--------------------------------------
MOU.ReadMouse >PULLW ZPPtr1
lda A2osX.ASCREEN GUI screen active ?
cmp DCB.GFX+S.DCB.GFX.DEVID
bne .9 no, exit....
lda hDevMouse
beq .9
>PUSHA
>PUSHBI IOCTL.READ
>PUSHW ZPPtr1
>SYSCALL2 IOCTL
bcs .99
ldy #S.MOUSE.S
lda (ZPPtr1),y
bit #S.MOUSE.S.MOVE
beq .8
ldx WND.Stack.Top
beq .2
* lda WND.Stack-1,x
* jsr MOU.InObjA
.2 lda WND.SysBar+S.OBJ.Y1
ldy #S.MOUSE.Y1
cmp (ZPPtr1),y
lda WND.SysBar+S.OBJ.Y1+1
iny
sbc (ZPPtr1),y
bcs .7
jmp SYSBAR.Enter
.7 jmp SYSBAR.Leave
.8 clc
rts
.9 sec
.99 rts
*--------------------------------------
MOU.InObjA >SYSCALL GetMemPtr
MOU.InObjyA jsr OBJ.GetInCache
ldy #S.MOUSE.X1
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.X1
iny
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.X1+1
bcc .9
iny #S.MOUSE.Y1
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.Y1
iny
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.Y1+1
bcc .9
iny #S.MOUSE.X2
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.X2
iny
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.X2+1
bcs .99
iny #S.MOUSE.Y2
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.Y2
iny
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.Y2+1
rts
.9 sec
.99 rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.mou
LOAD usr/src/lib/libgui.s
ASM