Kernel 0.9.1 : DHGR Driver, BitBLT, mouse pointer

This commit is contained in:
Rémy GIBERT 2017-12-01 16:53:29 +01:00
parent 2a2e0c6793
commit 9a9869f334
12 changed files with 332 additions and 318 deletions

Binary file not shown.

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*--------------------------------------

View File

@ -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
*--------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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