A2osX/LIB/LIBGUI.S.MOU.txt
2020-10-23 08:03:23 +02:00

324 lines
5.0 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 >PUSHBI 0
>LDYA L.DEVNAME.MOUSE
>SYSCALL2 open
bcc .2
inc DEVNAME.MOUSE+8
lda DEVNAME.MOUSE+8
cmp #'8'
bne MOU.Init
* sec
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 .99 CS
>PUSHA
>PUSHBI IOCTL.READ
>PUSHW L.MouseData
>SYSCALL2 IOCTL
bcs .99
ldy #S.MOUSE-1
.1 lda MouseData,y
sta (ZPPtr1),y
dey
bpl .1
ldy #S.MOUSE.S
lda (ZPPtr1),y
bit #S.MOUSE.S.MOVE
beq .8
jsr MOU.CheckOverMenu
bcc .8
jsr MOU.CheckOverSysBut
bcc .8
jsr MOU.CheckOverWND
bcc .8
.8 clc
rts
.9 sec
.99 rts
*--------------------------------------
MOU.CheckOverMenu
.1 ldx MENU.Stack.Top
beq .9
lda MENU.Stack-1,x
>SYSCALL GetMemPtr
>STYA ZPMENUPtr
pha
tya
clc
adc #S.OBJ.X1
tay
pla
adc /S.OBJ.X1
jsr MOU.InRectYA
bcs .2
jmp MENU.Enter
.2 lda ZPMENUPtr
clc
adc #S.MENU.pX1
tay
lda ZPMENUPtr+1
adc /S.MENU.pX1
jsr MOU.InRectYA
bcc .8
jsr MENU.Destroy
bra .1
.9 sec
.8 rts
*--------------------------------------
MOU.CheckOverSysBut
>LDYA L.RECT.SysBut
jsr MOU.InRectYA
bcs .9
jmp SYSBUT.Enter
.9 jsr SYSBUT.Leave
sec
rts
*--------------------------------------
MOU.CheckOverWND
ldx WND.Stack.Top
beq .9
.1 lda WND.Stack-1,x
>SYSCALL GetMemPtr
>STYA ZPWNDPtr
ldy #S.OBJ.F
lda (ZPWNDPtr),y
bit #S.WND.F.BORDER
beq .2
jsr MOU.ChkWNDBorders
bcc .99
.2 lda ZPWNDPtr
clc
adc #S.OBJ.X1
tay
lda ZPWNDPtr+1
adc #0
jsr MOU.InRectYA
bcs .3
lda #CUR.T.WAIT
jmp SetCursor
.3 lda #CUR.T.ARROW
jmp SetCursor
.8
.9 sec
.99 rts
*--------------------------------------
MOU.ChkWNDBorders
stz IY
ldy #S.OBJ.X1
lda (ZPWNDPtr),y
sec
sbc #1
eor MouseData+S.MOUSE.X1
bne .1
iny
lda (ZPWNDPtr),y
sbc #0
eor MouseData+S.MOUSE.X1+1
bne .1
lda #CUR.T.RESIZEX
sta IY
.1 ldy #S.OBJ.Y1
lda (ZPWNDPtr),y
sec
sbc #1
eor MouseData+S.MOUSE.Y1
bne .3
iny
lda (ZPWNDPtr),y
sbc #0
lda MouseData+S.MOUSE.Y1+1
bne .3
lda IY
beq .2
lda #CUR.T.RESIZEXY1
jmp SetCursor
.2 lda #CUR.T.RESIZEY
sta IY
.3 ldy #S.OBJ.X2
lda (ZPWNDPtr),y
clc
adc #1
eor MouseData+S.MOUSE.X2
bne .5
iny
lda (ZPWNDPtr),y
adc #0
eor MouseData+S.MOUSE.X2+1
bne .5
lda IY
beq .4
lda #CUR.T.RESIZEXY2
jmp SetCursor
.4 lda #CUR.T.RESIZEX
sta IY
.5 ldy #S.OBJ.Y2
lda (ZPWNDPtr),y
clc
adc #1
eor MouseData+S.MOUSE.Y2
bne .7
iny
lda (ZPWNDPtr),y
adc #0
eor MouseData+S.MOUSE.Y2+1
bne .7
lda #CUR.T.RESIZEXY1
.6 jmp SetCursor
.7 lda IY
bne .6
sec
rts
*--------------------------------------
MOU.InRectYA >STYA ZPRECTPtr
ldy #S.RECT.X1
lda MouseData+S.MOUSE.X1
cmp (ZPRECTPtr),y
iny
lda MouseData+S.MOUSE.X1+1
sbc (ZPRECTPtr),y
bcc .9
iny #S.RECT.Y1
lda MouseData+S.MOUSE.Y1
cmp (ZPRECTPtr),y
iny
lda MouseData+S.MOUSE.Y1+1
sbc (ZPRECTPtr),y
bcc .9
iny #S.RECT.X2
lda (ZPRECTPtr),y
cmp MouseData+S.MOUSE.X1
iny
lda (ZPRECTPtr),y
sbc MouseData+S.MOUSE.X1+1
bcc .9
iny #S.RECT.Y2
lda (ZPRECTPtr),y
cmp MouseData+S.MOUSE.Y1
iny
lda (ZPRECTPtr),y
sbc MouseData+S.MOUSE.Y1+1
bcc .9
clc
rts
.9 sec
.99 rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.mou
LOAD usr/src/lib/libgui.s
ASM