NEW AUTO 3,1 *-------------------------------------- UpdateCursor lda CUR.T cmp #CUR.T.WAIT bcc SetCursor.RTS inc inc cmp #CUR.T.WAIT+12 bne SetCursor lda #CUR.T.WAIT *-------------------------------------- * Set X2,Y2,SrcPtr *-------------------------------------- SetCursor sta CUR.T lda CUR.bVisible bpl .1 jsr HideCursor.I .1 ldx CUR.T lda L.Cursors,x sta CUR.CB+S.CB.SrcPtr sta ZPPtr1 lda L.Cursors+1,x sta CUR.CB+S.CB.SrcPtr+1 sta ZPPtr1+1 ldy #S.BM.W lda (ZPPtr1),y sta CUR.CB+S.CB.SrcW iny lda (ZPPtr1),y sta CUR.CB+S.CB.SrcW+1 iny S.BM.H lda (ZPPtr1),y sta CUR.CB+S.CB.SrcH iny lda (ZPPtr1),y sta CUR.CB+S.CB.SrcH+1 lda CUR.bVisible bmi ShowCursor.I SetCursor.RTS rts *-------------------------------------- * Set DestX,DestY *-------------------------------------- SetCursorPos >PULLW ZPPtr1 lda CUR.bVisible bpl .1 jsr HideCursor.I .1 ldy #S.POINT-1 .2 lda (ZPPtr1),y sta CUR.Pos,y dey bpl .2 lda CUR.bVisible bmi ShowCursor.I rts *-------------------------------------- HideCursor lda CUR.bVisible bpl .9 jsr HideCursor.I stz CUR.bVisible .9 rts *-------------------------------------- ShowCursor lda CUR.bVisible bmi .9 jsr ShowCursor.I dec CUR.bVisible .9 rts *-------------------------------------- HideCursor.I lda #S.CB.OP.RESTORE sta CUR.CB+S.CB.OP bra DrawCursor.I *-------------------------------------- ShowCursor.I lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE sta CUR.CB+S.CB.OP ldx CUR.T lda CUR.Pos+S.POINT.X sec sbc CUR.HotPoints,x sta CUR.CB+S.CB.DstX lda CUR.Pos+S.POINT.X+1 sbc #0 sta CUR.CB+S.CB.DstX+1 lda CUR.Pos+S.POINT.Y sec sbc CUR.HotPoints+1,x sta CUR.CB+S.CB.DstY lda CUR.Pos+S.POINT.Y+1 sbc #0 sta CUR.CB+S.CB.DstY+1 DrawCursor.I >LDYA L.SCR jsr OBJ.Get >LDYA L.CUR.CB >DEBUG jsr CLIP.YA bcs .9 >LDYA L.CUR.CB jmp GFXWrite.YA .9 rts *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.cur LOAD usr/src/lib/libgui.s ASM