diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 6e0900fc..657d4e03 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/LIB/LIBGUI.S.MENU.txt b/LIB/LIBGUI.S.MENU.txt index b9c8b516..4b2af4f6 100644 --- a/LIB/LIBGUI.S.MENU.txt +++ b/LIB/LIBGUI.S.MENU.txt @@ -97,7 +97,7 @@ MENU.New ldy MENU.Stack.Top >LDYAI S.MENU >SYSCALL2 getmem - bcs .9 + bcs .99 >STYA ZPMENUPtr @@ -156,12 +156,12 @@ MENU.New ldy MENU.Stack.Top sta MENU.Stack,x inc MENU.Stack.Top -* clc + clc rts .90 lda #E.OOH sec -.9 >POP 10 +.99 >POP 8 MENU.New.RTS rts * ---------------------------------------------- * |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY>| diff --git a/LIB/LIBGUI.S.MOU.txt b/LIB/LIBGUI.S.MOU.txt index f9d79257..dd406630 100644 --- a/LIB/LIBGUI.S.MOU.txt +++ b/LIB/LIBGUI.S.MOU.txt @@ -70,26 +70,53 @@ MOU.ReadMouse >PULLW ZPPtr1 >PUSHA >PUSHBI IOCTL.READ - >PUSHW ZPPtr1 + >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 -.1 ldx MENU.Stack.Top +.2 ldx MENU.Stack.Top beq .3 lda MENU.Stack-1,x - jsr MOU.InObjA + >SYSCALL GetMemPtr + >STYA ZPPtr1 + pha + tya + clc + adc #S.OBJ.X1 + tay + pla + adc /S.OBJ.X1 + jsr MOU.InRectYA + bcc .8 + + lda ZPPtr1 + clc + adc #S.MENU.pX1 + tay + lda ZPPtr1+1 + adc /S.MENU.pX1 + jsr MOU.InRectYA bcc .8 jsr MENU.Destroy - bra .1 + bra .2 +.9 sec +.99 rts .3 ldx WND.Stack.Top beq .4 @@ -115,8 +142,6 @@ MOU.ReadMouse >PULLW ZPPtr1 .8 clc rts -.9 sec -.99 rts *-------------------------------------- MOU.InObjA >SYSCALL GetMemPtr MOU.InObjyA jsr OBJ.GetInCache @@ -151,16 +176,52 @@ MOU.InObjyA jsr OBJ.GetInCache iny lda (ZPPtr1),y cmp OBJ.Cache+S.OBJ.Y2+1 - bcc .99 - - lda OBJ.Cache+ - - rts .9 sec .99 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 MouseData+S.MOUSE.X1 + cmp (ZPRECTPtr),y + iny + lda MouseData+S.MOUSE.X1+1 + sbc (ZPRECTPtr),y + bcs .99 + + iny #S.RECT.Y2 + + lda MouseData+S.MOUSE.Y1 + cmp (ZPRECTPtr),y + iny + lda MouseData+S.MOUSE.Y1+1 + sbc (ZPRECTPtr),y + rts + +.9 sec +.99 rts +*-------------------------------------- MAN SAVE usr/src/lib/libgui.s.mou LOAD usr/src/lib/libgui.s diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 0e7a0422..10654c82 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -81,7 +81,10 @@ ZPCBPtr .BS 2 ZPObjPtr .BS 2 ZPWNDPtr .BS 2 ZPMENUPtr .BS 2 + ZPBMPtr .BS 2 +ZPRECTPtr .BS 2 +ZPPtr1 .BS 2 CLIP.Line.P1 .BS 1 CLIP.Line.P2 .BS 1 @@ -97,8 +100,6 @@ Counter .BS 2 hCBBuf .BS 1 ZPCBBufPtr .BS 2 -ZPPtr1 .BS 2 - .ED *-------------------------------------- * File Header (16 Bytes) @@ -139,6 +140,7 @@ L.SYSX7B .DA SYSX7B L.IOCTL .DA IOCTL L.DCB.GFX .DA DCB.GFX L.MouseClamp .DA MouseClamp +L.MouseData .DA MouseData L.CB.PTR .DA CB.PTR L.CB.Buf .DA CB.Buf L.CB.Cache .DA CB.Cache @@ -394,9 +396,9 @@ PAT.Buf .BS 1 S.BM.F *-------------------------------------- IOCTL .BS S.IOCTL DCB.GFX .BS S.DCB.GFX -MOUSEDATA .BS S.MOUSE *-------------------------------------- MouseClamp .BS 8 +MouseData .BS S.MOUSE *-------------------------------------- CB.PTR .DA #S.CB.CMD.BITBLT .BS 1 S.CB.OP