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