mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-09 00:29:28 +00:00
Kernel 0.9.1 : DHGR Driver, BitBLT, mouse pointer
This commit is contained in:
parent
2a2e0c6793
commit
9a9869f334
Binary file not shown.
Binary file not shown.
|
@ -43,7 +43,10 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr
|
|||
|
||||
inc ZPBMDataPtr+1
|
||||
|
||||
.2 >LDYA CB.Cache+S.CB.Y1
|
||||
.2 >LDYA CB.Cache+S.CB.DstPtr
|
||||
>STYA ZPBMSavePtr
|
||||
|
||||
>LDYA CB.Cache+S.CB.Y1
|
||||
ldx BM.Cache+S.BM.RowBytes
|
||||
|
||||
jsr YAMultX
|
||||
|
@ -93,33 +96,24 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr
|
|||
|
||||
inc BLT.BMMaskPtr+1
|
||||
|
||||
.4 lda CB.Cache+S.CB.X2
|
||||
sec
|
||||
sbc CB.Cache+S.CB.X1
|
||||
sta BLT.DX
|
||||
|
||||
lda CB.Cache+S.CB.X2+1
|
||||
sbc CB.Cache+S.CB.X1+1
|
||||
sta BLT.DX+1
|
||||
|
||||
>LDYA CB.Cache+S.CB.DestX
|
||||
.4 >LDYA CB.Cache+S.CB.DestX
|
||||
jsr LBUF.SetBounds1YA
|
||||
stx BLT.SCRBitOfs
|
||||
|
||||
lda CB.Cache+S.CB.DestX
|
||||
clc
|
||||
adc BLT.DX
|
||||
adc CB.Cache+S.CB.SrcW
|
||||
tay
|
||||
lda CB.Cache+S.CB.DestX+1
|
||||
adc BLT.DX+1
|
||||
adc CB.Cache+S.CB.SrcW+1
|
||||
pha
|
||||
tya
|
||||
sbc #0
|
||||
tay
|
||||
pla
|
||||
sbc #0
|
||||
jsr LBUF.SetBounds2YA
|
||||
|
||||
lda CB.Cache+S.CB.Y2
|
||||
sec
|
||||
sbc CB.Cache+S.CB.Y1
|
||||
inc
|
||||
sta BLT.DY
|
||||
|
||||
|
||||
ldx BLT.SCRBitOfs
|
||||
beq BITBLT.LOOP0
|
||||
|
||||
|
@ -182,7 +176,7 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
|||
ldy CB.Cache+S.CB.DestY
|
||||
jsr LBUF.DrawAtY
|
||||
inc CB.Cache+S.CB.DestY
|
||||
dec BLT.DY
|
||||
dec CB.Cache+S.CB.SrcH
|
||||
beq .8
|
||||
|
||||
lda CB.Cache+S.CB.OP
|
||||
|
@ -291,7 +285,7 @@ BITBLT.LOOPx.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites
|
|||
ldy CB.Cache+S.CB.DestY
|
||||
jsr LBUF.DrawAtY
|
||||
inc CB.Cache+S.CB.DestY
|
||||
dec BLT.DY
|
||||
dec CB.Cache+S.CB.SrcH
|
||||
beq .8
|
||||
|
||||
lda CB.Cache+S.CB.OP
|
||||
|
|
|
@ -44,18 +44,51 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
|||
|
||||
lda CB.Cache+S.CB.OP
|
||||
bit #S.CB.OP.RESTORE
|
||||
bne .8
|
||||
bne .4
|
||||
bit #S.CB.OP.SAVE
|
||||
beq .1
|
||||
beq .3
|
||||
|
||||
ldx LBUF.C1
|
||||
|
||||
.1 ldy COL.BANK,x
|
||||
sta $C000,y
|
||||
ldy COL.OFS,x
|
||||
|
||||
lda (ZPBasePtr),y
|
||||
sta (ZPBMSavePtr)
|
||||
|
||||
inc ZPBMSavePtr
|
||||
bne .2
|
||||
inc ZPBMSavePtr+1
|
||||
|
||||
.2 cpx LBUF.C2
|
||||
inx
|
||||
bcc .1
|
||||
|
||||
lda CB.Cache+S.CB.OP
|
||||
|
||||
.1 and #$F
|
||||
.3 and #$F
|
||||
tax
|
||||
jmp (J.LBUF.DrawAtY,x)
|
||||
|
||||
.8 rts
|
||||
.4 ldx LBUF.C1
|
||||
|
||||
.5 ldy COL.BANK,x
|
||||
sta $C000,y
|
||||
ldy COL.OFS,x
|
||||
|
||||
lda (ZPBMSavePtr)
|
||||
sta (ZPBasePtr),y
|
||||
|
||||
inc ZPBMSavePtr
|
||||
bne .6
|
||||
inc ZPBMSavePtr+1
|
||||
|
||||
.6 cpx LBUF.C2
|
||||
inx
|
||||
bcc .5
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBUF.DrawAtY.XOR
|
||||
LBUF.DrawAtY.AND.XOR
|
||||
|
|
|
@ -407,8 +407,6 @@ LBUF.DATA .BS 80
|
|||
*--------------------------------------
|
||||
BLT.BMDataPtr .BS 2
|
||||
BLT.BMMaskPtr .BS 2
|
||||
BLT.DX .BS 2
|
||||
BLT.DY .BS 1
|
||||
BLT.BMBitOfs .BS 1
|
||||
BLT.BMBitOfsL .BS 1
|
||||
BLT.SCRBitOfs .BS 1
|
||||
|
|
|
@ -120,8 +120,9 @@ STATUS >LDYA L.DEVSTAT
|
|||
*--------------------------------------
|
||||
READBLOCK >STYA ZPTmpPtr1
|
||||
|
||||
ldy #S.MOUSE.S
|
||||
lda #0
|
||||
sta (ZPTmpPtr1) Reset Flags
|
||||
sta (ZPTmpPtr1),y Reset Flags
|
||||
|
||||
php
|
||||
sei
|
||||
|
@ -135,9 +136,6 @@ READBLOCK >STYA ZPTmpPtr1
|
|||
and #MOUSESTSx.MOVED
|
||||
beq .1
|
||||
|
||||
lda #S.MOUSE.S.MOVE
|
||||
sta (ZPTmpPtr1)
|
||||
|
||||
ldy #S.MOUSE.X1
|
||||
|
||||
lda MOUSEXLOx,x
|
||||
|
@ -154,6 +152,10 @@ READBLOCK >STYA ZPTmpPtr1
|
|||
iny
|
||||
lda MOUSEYHIx,x
|
||||
sta (ZPTmpPtr1),y
|
||||
|
||||
ldy #S.MOUSE.S
|
||||
lda #S.MOUSE.S.MOVE
|
||||
sta (ZPTmpPtr1),y
|
||||
|
||||
stz bDblClick Reset DblClick flag
|
||||
|
||||
|
@ -167,62 +169,69 @@ READBLOCK >STYA ZPTmpPtr1
|
|||
asl if CS, down & previously up
|
||||
bcc .2
|
||||
|
||||
ldy #S.MOUSE.S
|
||||
lda #S.MOUSE.S.DOWN
|
||||
ora (ZPTmpPtr1)
|
||||
sta (ZPTmpPtr1) button has been pressed, start drag...
|
||||
ora (ZPTmpPtr1),y
|
||||
sta (ZPTmpPtr1),y button has been pressed, start drag...
|
||||
|
||||
lda MOUSEXLOx,x
|
||||
sta SrcDrag
|
||||
|
||||
iny
|
||||
lda MOUSEXHIx,x
|
||||
sta SrcDrag+1
|
||||
|
||||
iny
|
||||
lda MOUSEYLOx,x
|
||||
sta SrcDrag+2
|
||||
|
||||
iny
|
||||
lda MOUSEYHIx,x
|
||||
sta SrcDrag+3
|
||||
|
||||
bra .8
|
||||
|
||||
.2 lda #S.MOUSE.S.UP CC: up, previously down
|
||||
tay
|
||||
ora (ZPTmpPtr1)
|
||||
sta (ZPTmpPtr1)
|
||||
.2 ldy #S.MOUSE.S
|
||||
lda (ZPTmpPtr1),y
|
||||
|
||||
pha save move state
|
||||
|
||||
ora #S.MOUSE.S.UP
|
||||
sta (ZPTmpPtr1),y
|
||||
|
||||
pla get back move state
|
||||
|
||||
tya
|
||||
bne .4 no move...click!
|
||||
|
||||
lda #S.MOUSE.S.CLK
|
||||
bit bDblClick
|
||||
beq .3
|
||||
bpl .3
|
||||
|
||||
lda #S.MOUSE.S.DCLK
|
||||
lda #1
|
||||
sta bDblClick
|
||||
|
||||
ldy #1
|
||||
sty bDblClick
|
||||
|
||||
.3 dec bDblClick
|
||||
ora (ZPTmpPtr1)
|
||||
sta (ZPTmpPtr1)
|
||||
|
||||
ldy #S.MOUSE.S
|
||||
ora (ZPTmpPtr1),y
|
||||
sta (ZPTmpPtr1),y
|
||||
bra .8
|
||||
|
||||
.4 lda #S.MOUSE.S.DRAG
|
||||
ora (ZPTmpPtr1)
|
||||
sta (ZPTmpPtr1)
|
||||
.4 lda #S.MOUSE.S.DRAG
|
||||
ldy #S.MOUSE.S
|
||||
ora (ZPTmpPtr1),y
|
||||
sta (ZPTmpPtr1),y
|
||||
|
||||
ldy #S.MOUSE.X2
|
||||
ldy #S.MOUSE.X2+3
|
||||
|
||||
.5 lda SrcDrag-S.MOUSE.X2,y
|
||||
sta (ZPTmpPtr1),y
|
||||
iny
|
||||
cpy #S.MOUSE.X2+4
|
||||
bne .5
|
||||
dey
|
||||
bpl .5
|
||||
|
||||
.8 plp
|
||||
|
||||
lda (ZPTmpPtr1)
|
||||
ldy #S.MOUSE.S
|
||||
lda (ZPTmpPtr1),y
|
||||
beq .9
|
||||
clc
|
||||
rts
|
||||
|
|
|
@ -15,6 +15,19 @@ LIBGUI.HideCursor .EQ 14
|
|||
LIBGUI.ShowCursor .EQ 16
|
||||
LIBGUI.ReadMouse .EQ 18
|
||||
*--------------------------------------
|
||||
S.GC.hDev .EQ 0
|
||||
S.GC.hMem .EQ 1
|
||||
S.GC.Parent .EQ 2
|
||||
*
|
||||
S.GC.X1 .EQ 4
|
||||
S.GC.Y1 .EQ 6
|
||||
S.GC.X2 .EQ 8
|
||||
S.GC.Y2 .EQ 10
|
||||
S.GC.W .EQ 12
|
||||
S.GC.H .EQ 14
|
||||
*
|
||||
S.GC .EQ 16
|
||||
*--------------------------------------
|
||||
S.CB.CMD .EQ 0
|
||||
S.CB.CMD.SETPIXEL .EQ 0
|
||||
S.CB.CMD.GETPIXEL .EQ 2
|
||||
|
@ -24,6 +37,7 @@ S.CB.CMD.FILLRECT .EQ 8
|
|||
S.CB.CMD.BITBLT .EQ 10
|
||||
S.CB.CMD.GETRECTBUFSIZE .EQ 12
|
||||
S.CB.CMD.DRAWLINE .EQ 14
|
||||
S.CB.CMD.DRAWTEXT .EQ 16
|
||||
S.CB.OP .EQ 1
|
||||
S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen
|
||||
S.CB.OP.SET .EQ 2 replace screen with bitmap
|
||||
|
@ -39,30 +53,19 @@ S.CB.MODE.MONO .EQ %00000001 b/w (1 bit/pixel)
|
|||
S.CB.MODE.C16 .EQ %00001000 16 colors (4 bits/pixel)
|
||||
*S.CB.MODE.C256 .EQ %00010000 256 colors (8 bits/pixel)
|
||||
S.CB.COLOR .EQ 3
|
||||
S.CB.X1 .EQ 4
|
||||
S.CB.Y1 .EQ 6
|
||||
S.CB.X2 .EQ 8
|
||||
S.CB.X1 .EQ 4 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE
|
||||
S.CB.Y1 .EQ 6 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE
|
||||
S.CB.X2 .EQ 8 HLINE,FILLRECT,GETRECTBUFSIZE,DRAWLINE
|
||||
S.CB.Y2 .EQ 10
|
||||
S.CB.DestX .EQ 12
|
||||
S.CB.DestY .EQ 14
|
||||
S.CB.SrcPtr .EQ 16
|
||||
S.CB.DstPtr .EQ 18
|
||||
S.CB.SrcW .EQ 8
|
||||
S.CB.SrcH .EQ 10
|
||||
S.CB.DestX .EQ 12 BITBLT,DRAWTEXT
|
||||
S.CB.DestY .EQ 14 BITBLT,DRAWTEXT
|
||||
S.CB.SrcPtr .EQ 16 BITBLT,DRAWTEXT
|
||||
S.CB.DstPtr .EQ 18 BITBLT
|
||||
*
|
||||
S.CB .EQ 20
|
||||
*--------------------------------------
|
||||
S.GC.hDev .EQ 0
|
||||
S.GC.hMem .EQ 1
|
||||
S.GC.Parent .EQ 2
|
||||
*
|
||||
S.GC.X1 .EQ 4
|
||||
S.GC.Y1 .EQ 6
|
||||
S.GC.X2 .EQ 8
|
||||
S.GC.Y2 .EQ 10
|
||||
S.GC.W .EQ 12
|
||||
S.GC.H .EQ 14
|
||||
*
|
||||
S.GC .EQ 16
|
||||
*--------------------------------------
|
||||
CUR.T.ARROW .EQ 0
|
||||
CUR.T.RESIZEX .EQ 2
|
||||
CUR.T.RESIZEY .EQ 4
|
||||
|
@ -94,12 +97,19 @@ S.MOUSE.S.MOVE .EQ %00000100
|
|||
S.MOUSE.S.DRAG .EQ %00001000
|
||||
S.MOUSE.S.CLK .EQ %00010000
|
||||
S.MOUSE.S.DCLK .EQ %00100000
|
||||
*
|
||||
S.MOUSE .EQ 9
|
||||
*--------------------------------------
|
||||
S.POINT.X .EQ 0
|
||||
S.POINT.Y .EQ 2
|
||||
*
|
||||
S.POINT .EQ 4
|
||||
*--------------------------------------
|
||||
S.RECT.X1 .EQ 0
|
||||
S.RECT.Y1 .EQ 2
|
||||
S.RECT.X2 .EQ 4
|
||||
S.RECT.Y2 .EQ 6
|
||||
*
|
||||
S.RECT .EQ 8
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
|
|
@ -7,7 +7,7 @@ AUTO 6
|
|||
*--------------------------------------
|
||||
CUR.T .BS 1
|
||||
CUR.bVisible .BS 1
|
||||
CUR.Pos .BS S.RECT
|
||||
CUR.Pos .BS S.POINT
|
||||
*--------------------------------------
|
||||
CUR.HotPoints .DA #0,#0 CUR.T.ARROW
|
||||
*--------------------------------------
|
||||
|
|
|
@ -7,81 +7,125 @@ AUTO 6
|
|||
*--------------------------------------
|
||||
* CLIPPING Functions:
|
||||
* In:
|
||||
* Control Block in CB.Cache
|
||||
* Graphic Context in GC.Cache
|
||||
* YA = Control Block
|
||||
* Out:
|
||||
* CC : CB.Cache clipped & visible
|
||||
* CS : CB.Cache invisible
|
||||
*--------------------------------------
|
||||
ClipPoint
|
||||
ClipHLine
|
||||
ClipVLine
|
||||
CLIP.YA >STYA ZPCmdPtr
|
||||
lda (ZPCmdPtr)
|
||||
tax
|
||||
jmp (J.CLIP,x)
|
||||
*--------------------------------------
|
||||
CLIP.Point
|
||||
CLIP.HLine
|
||||
CLIP.VLine
|
||||
|
||||
ClipRect lda
|
||||
CLIP.Rect
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
ClipLine.LEFT .EQ 1
|
||||
ClipLine.RIGHT .EQ 2
|
||||
ClipLine.BOTTOM .EQ 4
|
||||
ClipLine.TOP .EQ 8
|
||||
*--------------------------------------
|
||||
ClipLine jsr ClipLine.EncodeP1
|
||||
jsr ClipLine.EncodeP2
|
||||
CLIP.BitBlt ldy #S.CB.DestX+1
|
||||
lda (ZPCmdPtr),y
|
||||
tax
|
||||
dey
|
||||
lda (ZPCmdPtr),y
|
||||
pha
|
||||
|
||||
.1 lda ClipLine.P1
|
||||
ora ClipLine.P2
|
||||
>SCMPAX GC.Cache+S.GC.X2 DestX after X2....exit
|
||||
bmi .9
|
||||
|
||||
pla
|
||||
>SCMPAX GC.Cache+S.GC.X1 DestX Inside X1-X2, go check if X1+fit in
|
||||
bpl .1
|
||||
|
||||
|
||||
.1
|
||||
|
||||
ldy #S.CB.DestY+1
|
||||
lda (ZPCmdPtr),y
|
||||
tax
|
||||
dey
|
||||
lda (ZPCmdPtr),y
|
||||
|
||||
>SCMPAX GC.Cache+S.GC.Y2
|
||||
bpl .9
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 pla
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CLIP.Line.LEFT .EQ 1
|
||||
CLIP.Line.RIGHT .EQ 2
|
||||
CLIP.Line.BOTTOM .EQ 4
|
||||
CLIP.Line.TOP .EQ 8
|
||||
*--------------------------------------
|
||||
CLIP.Line jsr CLIP.Line.EncodeP1
|
||||
jsr CLIP.Line.EncodeP2
|
||||
|
||||
.1 lda CLIP.Line.P1
|
||||
ora CLIP.Line.P2
|
||||
beq .88
|
||||
|
||||
lda ClipLine.P1
|
||||
and ClipLine.P2
|
||||
lda CLIP.Line.P1
|
||||
and CLIP.Line.P2
|
||||
bne .99
|
||||
|
||||
lda ClipLine.P1
|
||||
lda CLIP.Line.P1
|
||||
beq .5
|
||||
|
||||
bit #ClipLine.TOP
|
||||
bit #CLIP.Line.TOP
|
||||
beq .2
|
||||
* Y1 is above S.CB.Y1....
|
||||
* DY=Y2-Y1;
|
||||
|
||||
jsr ClipLine.EncodeP1
|
||||
jsr CLIP.Line.EncodeP1
|
||||
bra .1
|
||||
|
||||
.2 bit #ClipLine.BOTTOM
|
||||
.2 bit #CLIP.Line.BOTTOM
|
||||
beq .3
|
||||
* Y1 is below S.CB.Y2....
|
||||
|
||||
jsr ClipLine.EncodeP1
|
||||
jsr CLIP.Line.EncodeP1
|
||||
bra .1
|
||||
|
||||
.3 bit #ClipLine.RIGHT
|
||||
.3 bit #CLIP.Line.RIGHT
|
||||
beq .4
|
||||
* X1 is after S.CB.X2....
|
||||
jsr ClipLine.EncodeP1
|
||||
jsr CLIP.Line.EncodeP1
|
||||
bra .1
|
||||
* X1 is before S.CB.X1....
|
||||
.4
|
||||
jsr ClipLine.EncodeP1
|
||||
jsr CLIP.Line.EncodeP1
|
||||
bra .1
|
||||
* P2
|
||||
.5 lda ClipLine.P2
|
||||
.5 lda CLIP.Line.P2
|
||||
|
||||
bit #ClipLine.TOP
|
||||
bit #CLIP.Line.TOP
|
||||
beq .6
|
||||
* Y2 is above S.CB.Y1....
|
||||
jsr ClipLine.EncodeP2
|
||||
jsr CLIP.Line.EncodeP2
|
||||
bra .1
|
||||
|
||||
.6 bit #ClipLine.BOTTOM
|
||||
.6 bit #CLIP.Line.BOTTOM
|
||||
beq .7
|
||||
* Y2 is below S.CB.Y2....
|
||||
jsr ClipLine.EncodeP2
|
||||
jsr CLIP.Line.EncodeP2
|
||||
bra .1
|
||||
|
||||
.7 bit #ClipLine.RIGHT
|
||||
.7 bit #CLIP.Line.RIGHT
|
||||
beq .8
|
||||
* X2 is after S.CB.X2....
|
||||
jsr ClipLine.EncodeP2
|
||||
jsr CLIP.Line.EncodeP2
|
||||
bra .1
|
||||
* X2 is before S.CB.X1....
|
||||
.8
|
||||
jsr ClipLine.EncodeP2
|
||||
jsr CLIP.Line.EncodeP2
|
||||
bra .1
|
||||
|
||||
.88 clc
|
||||
|
@ -90,44 +134,44 @@ ClipLine jsr ClipLine.EncodeP1
|
|||
.99 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
ClipLine.EncodeP1
|
||||
CLIP.Line.EncodeP1
|
||||
ldy #0
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
ldx CB.Cache+S.CB.X1+1
|
||||
jsr ClipLine.EncodeX.AX
|
||||
jsr CLIP.Line.EncodeX.AX
|
||||
|
||||
tay
|
||||
|
||||
lda CB.Cache+S.CB.Y1
|
||||
ldx CB.Cache+S.CB.Y1+1
|
||||
jsr ClipLine.EncodeY.AX
|
||||
jsr CLIP.Line.EncodeY.AX
|
||||
|
||||
sta ClipLine.P1
|
||||
sta CLIP.Line.P1
|
||||
rts
|
||||
*--------------------------------------
|
||||
ClipLine.EncodeP2
|
||||
CLIP.Line.EncodeP2
|
||||
ldy #0
|
||||
|
||||
lda CB.Cache+S.CB.X2
|
||||
ldx CB.Cache+S.CB.X2+1
|
||||
jsr ClipLine.EncodeX.AX
|
||||
jsr CLIP.Line.EncodeX.AX
|
||||
|
||||
tay
|
||||
|
||||
lda CB.Cache+S.CB.Y2
|
||||
ldx CB.Cache+S.CB.Y2+1
|
||||
jsr ClipLine.EncodeY.AX
|
||||
jsr CLIP.Line.EncodeY.AX
|
||||
|
||||
sta ClipLine.P2
|
||||
sta CLIP.Line.P2
|
||||
rts
|
||||
*--------------------------------------
|
||||
ClipLine.EncodeX.AX
|
||||
CLIP.Line.EncodeX.AX
|
||||
pha
|
||||
>SCMPAX GC.Cache+S.GC.X1
|
||||
bmi .1
|
||||
tya
|
||||
ora #ClipLine.LEFT
|
||||
ora #CLIP.Line.LEFT
|
||||
plx
|
||||
rts
|
||||
|
||||
|
@ -135,15 +179,15 @@ ClipLine.EncodeX.AX
|
|||
>SCMPAX GC.Cache+S.GC.X1
|
||||
bpl .8
|
||||
tya
|
||||
ora #ClipLine.RIGHT
|
||||
ora #CLIP.Line.RIGHT
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
ClipLine.EncodeY.AX
|
||||
CLIP.Line.EncodeY.AX
|
||||
pha
|
||||
>SCMPAX GC.Cache+S.GC.Y1
|
||||
bmi .1
|
||||
tya
|
||||
ora #ClipLine.TOP
|
||||
ora #CLIP.Line.TOP
|
||||
plx
|
||||
rts
|
||||
|
||||
|
@ -151,7 +195,7 @@ ClipLine.EncodeY.AX
|
|||
>SCMPAX GC.Cache+S.GC.Y1
|
||||
bpl .8
|
||||
tya
|
||||
ora #ClipLine.BOTTOM
|
||||
ora #CLIP.Line.BOTTOM
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -12,7 +12,7 @@ SetCursor.A sta CUR.T
|
|||
lda CUR.bVisible
|
||||
bpl .1
|
||||
|
||||
jsr HideCursor
|
||||
jsr HideCursor.I
|
||||
|
||||
.1 ldx CUR.T
|
||||
|
||||
|
@ -26,32 +26,27 @@ SetCursor.A sta CUR.T
|
|||
|
||||
ldy #S.BM.W
|
||||
|
||||
lda #-1
|
||||
clc
|
||||
adc (ZPPtr1),y
|
||||
sta CUR.CB+S.CB.X2
|
||||
lda (ZPPtr1),y
|
||||
sta CUR.CB+S.CB.SrcW
|
||||
|
||||
iny
|
||||
|
||||
lda /-1
|
||||
adc (ZPPtr1),y
|
||||
sta CUR.CB+S.CB.X2+1
|
||||
lda (ZPPtr1),y
|
||||
sta CUR.CB+S.CB.SrcW+1
|
||||
|
||||
iny S.BM.H
|
||||
|
||||
lda #-1
|
||||
clc
|
||||
adc (ZPPtr1),y
|
||||
sta CUR.CB+S.CB.Y2
|
||||
lda (ZPPtr1),y
|
||||
sta CUR.CB+S.CB.SrcH
|
||||
|
||||
|
||||
iny
|
||||
|
||||
lda /-1
|
||||
adc (ZPPtr1),y
|
||||
sta CUR.CB+S.CB.Y2+1
|
||||
|
||||
lda (ZPPtr1),y
|
||||
sta CUR.CB+S.CB.SrcH+1
|
||||
|
||||
lda CUR.bVisible
|
||||
bmi ShowCursor
|
||||
bmi ShowCursor.I
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -62,46 +57,24 @@ SetCursorPos >PULLW ZPPtr1
|
|||
lda CUR.bVisible
|
||||
bpl .1
|
||||
|
||||
jsr HideCursor
|
||||
jsr HideCursor.I
|
||||
|
||||
.1 ldy #S.RECT-1
|
||||
.1 ldy #S.POINT-1
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
sta CUR.Pos,y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
ldx CUR.T
|
||||
|
||||
lda CUR.Pos+S.RECT.X1
|
||||
sec
|
||||
sbc CUR.HotPoints,x
|
||||
sta CUR.CB+S.CB.DestX
|
||||
|
||||
lda CUR.Pos+S.RECT.X1+1
|
||||
sbc #0
|
||||
sta CUR.CB+S.CB.DestX+1
|
||||
|
||||
lda CUR.Pos+S.RECT.Y1
|
||||
sec
|
||||
sbc CUR.HotPoints+1,x
|
||||
sta CUR.CB+S.CB.DestY
|
||||
|
||||
lda CUR.Pos+S.RECT.Y1+1
|
||||
sbc #0
|
||||
sta CUR.CB+S.CB.DestY+1
|
||||
|
||||
lda CUR.bVisible
|
||||
bmi ShowCursor
|
||||
bmi ShowCursor.I
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
HideCursor lda CUR.bVisible
|
||||
bpl .9
|
||||
|
||||
lda #S.CB.OP.RESTORE
|
||||
sta CUR.CB+S.CB.OP
|
||||
|
||||
jsr HideCursor.I
|
||||
|
||||
stz CUR.bVisible
|
||||
.9 rts
|
||||
|
@ -109,16 +82,46 @@ HideCursor lda CUR.bVisible
|
|||
ShowCursor lda CUR.bVisible
|
||||
bmi .9
|
||||
|
||||
lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE
|
||||
sta CUR.CB+S.CB.OP
|
||||
|
||||
>LDYA L.CUR.CB
|
||||
|
||||
jsr GoDevGfx.YA
|
||||
jsr ShowCursor.I
|
||||
|
||||
dec CUR.bVisible
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
HideCursor.I lda #S.CB.OP.RESTORE
|
||||
sta CUR.CB+S.CB.OP
|
||||
|
||||
>LDYA L.CUR.CB
|
||||
jsr GoDevGfx.YA
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
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.DestX
|
||||
|
||||
lda CUR.Pos+S.POINT.X+1
|
||||
sbc #0
|
||||
sta CUR.CB+S.CB.DestX+1
|
||||
|
||||
lda CUR.Pos+S.POINT.Y
|
||||
sec
|
||||
sbc CUR.HotPoints+1,x
|
||||
sta CUR.CB+S.CB.DestY
|
||||
|
||||
lda CUR.Pos+S.POINT.Y+1
|
||||
sbc #0
|
||||
sta CUR.CB+S.CB.DestY+1
|
||||
|
||||
>LDYA L.CUR.CB
|
||||
jsr GoDevGfx.YA
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/LIB/LIBGUI.S.CUR
|
||||
LOAD /A2OSX.SRC/LIB/LIBGUI.S
|
||||
|
|
|
@ -78,6 +78,14 @@ L.CB.Cache .DA CB.Cache
|
|||
L.CUR.CB .DA CUR.CB
|
||||
L.CUR.SaveBuf .DA CUR.SaveBuf
|
||||
L.Cursors .DA CUR.Arrow
|
||||
J.Clip .DA CLIP.Point SETPIXEL
|
||||
.DA CLIP.Point GETPIXEL
|
||||
.DA CLIP.HLine
|
||||
.DA CLIP.VLine
|
||||
.DA CLIP.Rect FILLRECT
|
||||
.DA CLIP.BitBlt
|
||||
.DA CLIP.Rect GETRECTBUFSIZE
|
||||
.DA CLIP.Line
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD
|
||||
|
@ -129,7 +137,7 @@ InitGUI lda GC.Screen+S.GC.hDev
|
|||
sta GC.Screen+S.GC.W+1
|
||||
sta MouseClamp+3
|
||||
lsr
|
||||
sta CUR.Pos+S.RECT.X1+1
|
||||
sta CUR.Pos+S.POINT.X+1
|
||||
|
||||
dey
|
||||
|
||||
|
@ -137,7 +145,7 @@ InitGUI lda GC.Screen+S.GC.hDev
|
|||
sta MouseClamp+2
|
||||
sta GC.Screen+S.GC.W
|
||||
ror
|
||||
sta CUR.Pos+S.RECT.X1
|
||||
sta CUR.Pos+S.POINT.X
|
||||
|
||||
ldy #S.DSTAT.GFX.H+1
|
||||
|
||||
|
@ -145,7 +153,7 @@ InitGUI lda GC.Screen+S.GC.hDev
|
|||
sta MouseClamp+7
|
||||
sta GC.Screen+S.GC.H+1
|
||||
lsr
|
||||
sta CUR.Pos+S.RECT.Y1+1
|
||||
sta CUR.Pos+S.POINT.Y+1
|
||||
|
||||
dey
|
||||
|
||||
|
@ -153,7 +161,7 @@ InitGUI lda GC.Screen+S.GC.hDev
|
|||
sta MouseClamp+6
|
||||
sta GC.Screen+S.GC.H
|
||||
ror
|
||||
sta CUR.Pos+S.RECT.Y1
|
||||
sta CUR.Pos+S.POINT.Y
|
||||
|
||||
>LDYA L.MouseClamp
|
||||
ldx #DEVMGR.CONTROL
|
||||
|
@ -165,8 +173,6 @@ InitGUI lda GC.Screen+S.GC.hDev
|
|||
lda #CUR.T.ARROW
|
||||
jsr SetCursor.A
|
||||
|
||||
jsr ShowCursor
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -180,12 +186,11 @@ CloseGUI lda hDevMouse
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
ReadMouse >PULLW ZPPtr1
|
||||
ReadMouse >PULLYA
|
||||
|
||||
lda hDevMouse Mouse is active ?
|
||||
ldx hDevMouse Mouse is active ?
|
||||
beq .9
|
||||
|
||||
>LDYA ZPPtr1
|
||||
ldx #DEVMGR.READBLOCK
|
||||
jmp GoDevMouse
|
||||
|
||||
|
@ -218,8 +223,8 @@ IE .BS 2
|
|||
D .BS 2
|
||||
INE .BS 2
|
||||
Counter .BS 2
|
||||
ClipLine.P1 .BS 1
|
||||
ClipLine.P2 .BS 1
|
||||
CLIP.Line.P1 .BS 1
|
||||
CLIP.Line.P2 .BS 1
|
||||
*--------------------------------------
|
||||
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
|
||||
.DA S.CB.Y1+1 GETPIXEL
|
||||
|
|
190
SBIN/GUI.S.txt
190
SBIN/GUI.S.txt
|
@ -38,9 +38,9 @@ L.MSG.INIT .DA MSG.INIT
|
|||
L.LIBGUI .DA LIBGUI
|
||||
L.Filename .DA Filename
|
||||
L.MouseData .DA MouseData
|
||||
L.Rect.CB .DA Rect.CB
|
||||
L.DrawLines.CB .DA DrawLines.CB
|
||||
L.BitBlT.CB .DA BitBlT.CB
|
||||
L.CB.Rect .DA CB.Rect
|
||||
L.CB.BitBlt .DA CB.BitBlt
|
||||
L.CB.DrawLine .DA CB.DrawLine
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.MSG.INIT
|
||||
|
@ -63,7 +63,25 @@ CS.INIT >LDYA L.MSG.INIT
|
|||
|
||||
txa
|
||||
>SYSCALL GetMemPtr.A
|
||||
>STYA BitBlT.CB+S.CB.SrcPtr
|
||||
>STYA CB.BitBlt+S.CB.SrcPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #S.BM.W
|
||||
lda (ZPPtr1),y
|
||||
sta CB.BitBlt+S.CB.SrcW
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
sta CB.BitBlt+S.CB.SrcW+1
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
sta CB.BitBlt+S.CB.SrcH
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
sta CB.BitBlt+S.CB.SrcH+1
|
||||
|
||||
jsr Destop.Paint
|
||||
|
||||
>LIBCALL hLIBGUI,LIBGUI.ShowCursor
|
||||
|
||||
lda (pPs)
|
||||
ora #S.PS.F.EVENT Now accept events
|
||||
|
@ -83,7 +101,7 @@ CS.RUN lda A2osX.ASCREEN GUI screen active ?
|
|||
lda MouseData+S.MOUSE.S
|
||||
bit #S.MOUSE.S.MOVE
|
||||
beq .1
|
||||
|
||||
|
||||
>PUSHW L.MouseData
|
||||
>LIBCALL hLIBGUI,LIBGUI.SetCursorPos
|
||||
|
||||
|
@ -92,7 +110,12 @@ CS.RUN lda A2osX.ASCREEN GUI screen active ?
|
|||
.1 bit #S.MOUSE.S.DOWN
|
||||
beq .4
|
||||
|
||||
sta $C056
|
||||
>DEBUG
|
||||
sta $C057
|
||||
|
||||
jsr Destop.Paint
|
||||
>LIBCALL hLIBGUI,LIBGUI.ShowCursor
|
||||
|
||||
|
||||
.4
|
||||
|
@ -106,28 +129,14 @@ CS.DOEVENT sec
|
|||
CS.QUIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
Destop.Paint >PUSHW L.Rect.CB
|
||||
Destop.Paint >PUSHW L.CB.Rect
|
||||
>LIBCALL hLIBGUI,LIBGUI.Draw
|
||||
|
||||
>LDYAI 105
|
||||
>STYA BitBlT.CB+S.CB.DestX
|
||||
>PUSHW L.BitBlt.CB
|
||||
>PUSHW L.CB.BitBlt
|
||||
>LIBCALL hLIBGUI,LIBGUI.Draw
|
||||
|
||||
>LDYAI 246
|
||||
>STYA BitBlT.CB+S.CB.DestX
|
||||
>PUSHW L.BitBlt.CB
|
||||
>LIBCALL hLIBGUI,LIBGUI.Draw
|
||||
|
||||
>LDYAI 387
|
||||
>STYA BitBlT.CB+S.CB.DestX
|
||||
>PUSHW L.BitBlt.CB
|
||||
>LIBCALL hLIBGUI,LIBGUI.Draw
|
||||
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
LIBGUI >CSTR "libgui.o"
|
||||
MSG.INIT >CSTR "GUI:Init...\r\n"
|
||||
|
@ -137,133 +146,42 @@ Filename >CSTR "/A2OSX.BUILD/MARILYN"
|
|||
*--------------------------------------
|
||||
MouseData .DA S.MOUSE
|
||||
*--------------------------------------
|
||||
Rect.CB .DA #S.CB.CMD.FILLRECT
|
||||
CB.Rect .DA #S.CB.CMD.FILLRECT
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.C16
|
||||
.DA #1
|
||||
.DA 0
|
||||
.DA 0
|
||||
.DA 559
|
||||
.DA 191
|
||||
|
||||
.DA #0
|
||||
|
||||
.DA #S.CB.CMD.FILLRECT
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.MONO
|
||||
.DA #1
|
||||
.DA 10
|
||||
.DA 5
|
||||
.DA 549
|
||||
.DA 186
|
||||
|
||||
.DA #S.CB.CMD.FILLRECT
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.C16
|
||||
.DA #7
|
||||
.DA 20
|
||||
.DA 10
|
||||
.DA 539
|
||||
.DA 181
|
||||
|
||||
.DA #S.CB.CMD.FILLRECT
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.C16
|
||||
.DA #4
|
||||
.DA 30
|
||||
.DA 15
|
||||
.DA 529
|
||||
.DA 176
|
||||
|
||||
.DA #S.CB.CMD.FILLRECT
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.MONO
|
||||
.DA #0
|
||||
.DA 40
|
||||
.DA 20
|
||||
.DA 519
|
||||
.DA 171
|
||||
.DA #2
|
||||
.DA 0 X1
|
||||
.DA 0 Y1
|
||||
.DA 559 X2
|
||||
.DA 191 Y2
|
||||
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
DrawLines.CB .DA #S.CB.CMD.DRAWLINE
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.C16
|
||||
.DA #1
|
||||
.DA 80
|
||||
.DA 191
|
||||
.DA 80+191
|
||||
.DA 191+191
|
||||
|
||||
.DA #S.CB.CMD.DRAWLINE
|
||||
.DA #S.CB.OP.XOR
|
||||
.DA #S.CB.MODE.MONO
|
||||
.DA #1
|
||||
.DA 90
|
||||
.DA 0
|
||||
.DA 140
|
||||
.DA 191
|
||||
|
||||
.DA #S.CB.CMD.DRAWLINE
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.MONO
|
||||
.DA #1
|
||||
.DA 100
|
||||
.DA 0
|
||||
.DA 100+191
|
||||
.DA 191
|
||||
|
||||
.DA #S.CB.CMD.DRAWLINE
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.C16
|
||||
.DA #15
|
||||
.DA 110
|
||||
.DA 0
|
||||
.DA 559
|
||||
.DA 191
|
||||
|
||||
.DA #S.CB.CMD.DRAWLINE
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.MONO
|
||||
.DA #1
|
||||
.DA 28
|
||||
.DA 0
|
||||
.DA 28
|
||||
.DA 191
|
||||
|
||||
.DA #S.CB.CMD.DRAWLINE
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.MONO
|
||||
.DA #1
|
||||
.DA 84
|
||||
.DA 0
|
||||
.DA 84
|
||||
.DA 191
|
||||
|
||||
.DA #S.CB.CMD.DRAWLINE
|
||||
.DA #S.CB.OP.XOR
|
||||
.DA #S.CB.MODE.MONO
|
||||
.DA #1
|
||||
.DA 0
|
||||
.DA 92
|
||||
.DA 559
|
||||
.DA 92
|
||||
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
BitBlT.CB .DA #S.CB.CMD.BITBLT
|
||||
CB.BitBlt .DA #S.CB.CMD.BITBLT
|
||||
.DA #S.CB.OP.SET
|
||||
.DA #S.CB.MODE.MONO
|
||||
.DA #0
|
||||
.DA 0 X1
|
||||
.DA 0 Y1
|
||||
.DA 140 X2
|
||||
.DA 149 y2
|
||||
.BS 2 DestX
|
||||
.DA 24 DestY
|
||||
.BS 2 W
|
||||
.BS 2 H
|
||||
.DA 130 DestX
|
||||
.DA 20 DestY
|
||||
.BS 2 SrcPtr
|
||||
.DA 0
|
||||
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
CB.DrawLine .DA #0
|
||||
.DA #S.CB.CMD.DRAWLINE
|
||||
.DA #S.CB.OP.XOR
|
||||
.DA #S.CB.MODE.MONO
|
||||
.DA #1
|
||||
.BS 2 X1
|
||||
.BS 2 Y1
|
||||
.BS 2 X2
|
||||
.BS 2 Y2
|
||||
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
|
|
Loading…
Reference in New Issue
Block a user