Kernel 0.9.1 : DHGR Driver, BitBLT, mouse pointer

This commit is contained in:
Rémy GIBERT 2017-11-30 17:33:33 +01:00
parent 37d8e6090b
commit 539c90cd07
14 changed files with 400 additions and 283 deletions

Binary file not shown.

Binary file not shown.

View File

@ -352,6 +352,6 @@ BASEH .HS 20.24.28.2C.30.34.38.3C
.HS 23.27.2B.2F.33.37.3B.3F
*--------------------------------------
MAN
SAVE /A2OSX.SRC/DRV/DHGR.DRV.T
SAVE /A2OSX.SRC/DRV/DHGR.DRV.G
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
ASM

View File

@ -12,6 +12,7 @@ AUTO 6
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/PRODOS.I
.INB /A2OSX.BUILD/INC/IO.I
.INB /A2OSX.BUILD/INC/GFX.I
.INB /A2OSX.BUILD/INC/GFX.EVE.I
.INB /A2OSX.BUILD/INC/LIBGUI.I
*--------------------------------------
@ -306,7 +307,7 @@ YAMultX stx GBYTE
*--------------------------------------
DRV.CS.END
*--------------------------------------
.INB /A2OSX.SRC/DRV/DHGR.DRV.T
.INB /A2OSX.SRC/DRV/DHGR.DRV.G
*--------------------------------------
CONTROL.SWTCHES
* sta CLRTEXT
@ -425,9 +426,10 @@ DSTAT .DA #0
.DA #0
.DA #91
*--------------------------------------
DEVSTAT.MODES .DA #S.CB.MODE.MONO+S.CB.MODE.C16
DEVSTAT.W .DA 560 X.SIZE
DEVSTAT.H .DA 192 Y.SIZE
.DA #S.CB.MODE.MONO+S.CB.MODE.C16
.DA #0 S
.DA 560 W
.DA 192 H
*--------------------------------------
MAN
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S

17
INC/GFX.I.txt Normal file
View File

@ -0,0 +1,17 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* GFX Devices
*--------------------------------------
S.DSTAT.GFX.F .EQ S.DSTAT
S.DSTAT.GFX.S .EQ S.DSTAT+1
S.DSTAT.GFX.W .EQ S.DSTAT+2
S.DSTAT.GFX.H .EQ S.DSTAT+4
S.DSTAT.GFX .EQ S.DSTAT+6
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/GFX.I

View File

@ -6,13 +6,14 @@ AUTO 6
.LIST OFF
.OP 65C02
*--------------------------------------
LIBGUI.InitGUI.A .EQ 4
LIBGUI.InitGUI .EQ 4
LIBGUI.CloseGUI .EQ 6
LIBGUI.Draw .EQ 8
LIBGUI.SetCursor.A .EQ 10
LIBGUI.SetCursorPos .EQ 12
LIBGUI.HideCursor .EQ 14
LIBGUI.ShowCursor .EQ 16
LIBGUI.ReadMouse .EQ 18
*--------------------------------------
S.CB.CMD .EQ 0
S.CB.CMD.SETPIXEL .EQ 0
@ -63,16 +64,12 @@ S.GC.H .EQ 14
S.GC .EQ 16
*--------------------------------------
CUR.T.ARROW .EQ 0
CUR.T.WAIT .EQ 2
CUR.T.PLUS .EQ 4
CUR.T.RESIZEX .EQ 6
CUR.T.RESIZEY .EQ 8
CUR.T.RESIZEXY .EQ 10
CUT.T.TEXT .EQ 12
*--------------------------------------
S.CUR.HotPointX .EQ 0
S.CUR.HotPointY .EQ 1
S.CUR.BM .EQ 2
CUR.T.RESIZEX .EQ 2
CUR.T.RESIZEY .EQ 4
CUR.T.RESIZEXY .EQ 6
CUR.T.CROSS .EQ 8
CUT.T.TEXT .EQ 10
CUR.T.WAIT .EQ 12
*--------------------------------------
S.BM.F .EQ 0
S.BM.F.BBP1 .EQ %00000001
@ -86,19 +83,25 @@ S.BM.MASK.OFS .EQ 6
*
S.BM .EQ 8
*--------------------------------------
S.MOUSE.S .EQ 0
S.MOUSE.X1 .EQ 0
S.MOUSE.Y1 .EQ 2
S.MOUSE.X2 .EQ 4
S.MOUSE.Y2 .EQ 6
S.MOUSE.S .EQ 8
S.MOUSE.S.UP .EQ %00000001
S.MOUSE.S.DOWN .EQ %00000010
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.X1 .EQ 1
S.MOUSE.Y1 .EQ 3
S.MOUSE.X2 .EQ 5
S.MOUSE.Y2 .EQ 7
S.MOUSE .EQ 9
*--------------------------------------
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
SAVE /A2OSX.BUILD/INC/LIBGUI.I
LOAD /A2OSX.SRC/LIB/LIBGUI.S

View File

@ -1,23 +0,0 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* NET Devices
*--------------------------------------
S.DSTAT.NET.FLAGS .EQ S.DSTAT
S.DSTAT.NET.FLAGS.ARPOFFLOAD .EQ %00000001
S.DSTAT.NET.FLAGS.IPOFFLOAD .EQ %00000010
S.DSTAT.NET.STATUS .EQ S.DSTAT+1
S.DSTAT.NET.STATUS.OK .EQ $80
S.DSTAT.NET.STATUS.FD .EQ $40
S.DSTAT.NET.STATUS.10 .EQ $01
S.DSTAT.NET.STATUS.100 .EQ $02
S.DSTAT.NET.STATUS.1000 .EQ $03
S.DSTAT.NET.MAC .EQ S.DSTAT+2
S.DSTAT.NET .EQ S.DSTAT+8
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/NET.I

23
INC/NIC.I.txt Normal file
View File

@ -0,0 +1,23 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* NIC Devices
*--------------------------------------
S.DSTAT.NIC.FLAGS .EQ S.DSTAT
S.DSTAT.NIC.FLAGS.ARPOFFLOAD .EQ %00000001
S.DSTAT.NIC.FLAGS.IPOFFLOAD .EQ %00000010
S.DSTAT.NIC.STATUS .EQ S.DSTAT+1
S.DSTAT.NIC.STATUS.OK .EQ $80
S.DSTAT.NIC.STATUS.FD .EQ $40
S.DSTAT.NIC.STATUS.10 .EQ $01
S.DSTAT.NIC.STATUS.100 .EQ $02
S.DSTAT.NIC.STATUS.1000 .EQ $03
S.DSTAT.NIC.MAC .EQ S.DSTAT+2
S.DSTAT.NIC .EQ S.DSTAT+8
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/NIC.I

59
LIB/LIBGUI.G.CUR.txt Normal file
View File

@ -0,0 +1,59 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
CUR.T .BS 1
CUR.bVisible .BS 1
CUR.Pos .BS S.RECT
*--------------------------------------
CUR.HotPoints .DA #0,#0 CUR.T.ARROW
*--------------------------------------
CUR.CB .DA #S.CB.CMD.BITBLT
.BS 1
.DA #S.CB.MODE.MONO
.DA #0
.BS 16
*--------------------------------------
CUR.SaveBuf .BS 39 13*3
*--------------------------------------
CUR.Arrow .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA CUR.Arrow.MASK-CUR.Arrow
.DA %000.00000000
.DA %000.00000010
.DA %000.00000110
.DA %000.00001110
.DA %000.00011110
.DA %000.00111110
.DA %000.01111110
.DA %000.11111110
.DA %001.11111110
.DA %010.01111110
.DA %000.11110010
.DA %000.11100000
.DA %000.00000000
CUR.Arrow.MASK .DA %111.11111100
.DA %111.11111000
.DA %111.11110000
.DA %111.11100000
.DA %111.11000000
.DA %111.10000000
.DA %111.00000000
.DA %110.00000000
.DA %100.00000000
.DA %000.00000000
.DA %000.00000000
.DA %110.00000000
.DA %110.00001111
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBGUI.G.CUR
LOAD /A2OSX.SRC/LIB/LIBGUI.S
ASM

View File

@ -5,15 +5,22 @@ INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* CLIPPING Functions:
* In:
* Control Block in CB.Cache
* Graphic Context in GC.Cache
*--------------------------------------
ClipPoint
ClipHLine
ClipVLine
ClipRect lda
*--------------------------------------
ClipLine.LEFT .EQ 1
ClipLine.RIGHT .EQ 2
ClipLine.BOTTOM .EQ 4
ClipLine.TOP .EQ 8
*--------------------------------------
* In:
* Control Block in CB.Cache
* Graphic Context in GC.Cache
*--------------------------------------
ClipLine jsr ClipLine.EncodeP1
jsr ClipLine.EncodeP2

View File

@ -5,17 +5,118 @@ INC 1
AUTO 6
.LIST OFF
*--------------------------------------
SetCursor.A
* Set X2,Y2,SrcPtr
*--------------------------------------
SetCursorPos
*--------------------------------------
HideCursor
*--------------------------------------
ShowCursor
SetCursor.A lda CUR.bVisible
bpl .1
jsr HideCursor
.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 #-1
clc
adc (ZPPtr1),y
sta CUR.CB+S.CB.X2
iny
lda /-1
adc (ZPPtr1),y
sta CUR.CB+S.CB.X2+1
iny S.BM.H
lda #-1
clc
adc (ZPPtr1),y
sta CUR.CB+S.CB.Y2
iny
lda /-1
adc (ZPPtr1),y
sta CUR.CB+S.CB.Y2+1
lda CUR.bVisible
bmi ShowCursor
rts
*--------------------------------------
* Set DestX,DestY
*--------------------------------------
SetCursorPos >STYA ZPPtr1
lda CUR.bVisible
bpl .1
jsr HideCursor
.1 ldy #S.RECT-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
rts
*--------------------------------------
HideCursor lda CUR.bVisible
bpl .9
lda #S.CB.OP.RESTORE
sta CUR.CB+S.CB.OP
stz CUR.bVisible
.9 rts
*--------------------------------------
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
dec CUR.bVisible
.9 rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/LIB/LIBGUI.S.CUR
LOAD /A2OSX.SRC/LIB/LIBGUI.S

View File

@ -24,7 +24,7 @@ Draw >PULLW ZPCmdPtr
.3 >LDYA ZPCmdPtr
jsr GoDev.YA
jsr GoDevGfx.YA
.7 lda (ZPCmdPtr) Get Cmd
tax
@ -69,7 +69,7 @@ DrawLine lda CB.Cache+S.CB.X2
lda #S.CB.CMD.VLINE
sta CB.Cache+S.CB.CMD
jmp GoDev DX=0 : VLIN Y1,Y2 At X1
jmp GoDevGfx DX=0 : VLIN Y1,Y2 At X1
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
* >SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2
@ -101,7 +101,7 @@ DrawLine lda CB.Cache+S.CB.X2
lda #S.CB.CMD.HLINE
sta CB.Cache+S.CB.CMD
jmp GoDev DY=0 : HLIN X1,X2 At Y1
jmp GoDevGfx DY=0 : HLIN X1,X2 At Y1
.3 >NOT16 DY set DY=-DY
lda #$ff
@ -109,7 +109,7 @@ DrawLine lda CB.Cache+S.CB.X2
.4 lda #S.CB.CMD.SETPIXEL
sta CB.Cache+S.CB.CMD
jsr GoDev
jsr GoDevGfx
lda DX
sec
@ -147,7 +147,7 @@ DrawLine.IncXY lda DX DX=DY
adc IY
sta CB.Cache+S.CB.Y1
jsr GoDev
jsr GoDevGfx
bra .1
.8 rts
@ -230,7 +230,7 @@ DrawLine.IncY lda DY
adc IY
sta CB.Cache+S.CB.Y1
jsr GoDev
jsr GoDevGfx
bra .1
.8 rts
@ -306,7 +306,7 @@ DrawLine.IncX lda DX
clc
adc IE
sta D
lda D+1k
lda D+1
adc IE+1
sta D+1
@ -314,7 +314,7 @@ DrawLine.IncX lda DX
bne .6
inc CB.Cache+S.CB.X1+1
.6 jsr GoDev
.6 jsr GoDevGfx
bra .1
.8 rts

View File

@ -11,6 +11,7 @@ AUTO 6
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/LIBGUI.I
.INB /A2OSX.BUILD/INC/GFX.I
*--------------------------------------
.MA SWAP16
lda ]1
@ -41,6 +42,7 @@ AUTO 6
:1 .EQ *
.EM
*--------------------------------------
ZPPtr1 .EQ ZPLIB
ZPDCPtr .EQ ZPLIB+2
ZPCmdPtr .EQ ZPLIB+4
*--------------------------------------
@ -60,42 +62,156 @@ CS.START cld
*--------------------------------------
.1 .DA LIB.LOAD
.DA LIB.UNLOAD
J.Cmds .DA InitGUI.A
.DA CloseGUI J.Cmds-12 !!!
.DA InitGUI
J.Cmds .DA CloseGUI J.Cmds-12 !!!
.DA Draw
.DA SetCursor.A
.DA SetCursorPos
.DA HideCursor
.DA ShowCursor
.DA ReadMouse
.DA DrawLine
L.DEVNAME.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
L.MouseClamp .DA MouseClamp
L.CB.Cache .DA CB.Cache
L.CUR.CB .DA CUR.CB
L.CUR.SaveBuf .DA CUR.SaveBuf
L.Cursors .DA CUR.Arrow
.DA 0
*--------------------------------------
LIB.LOAD
LIB.UNLOAD clc
rts
*--------------------------------------
InitGUI.A sta GC.Screen+S.GC.hDev
>SYSCALL GetDevByID.A
>STYA GoDev.Jmp+1
InitGUI lda GC.Screen+S.GC.hDev
beq .10
clc
.9 rts
.10 >LDYA L.DEVNAME.GFX
>SYSCALL GetDevByName.YA
bcs .9
stx GC.Screen+S.GC.hDev
>STYA GoDevGfx.Jmp+1
txa
ldx #DEVMGR.OPEN
jsr GoDevGfx.Jmp
.1 >LDYA L.DEVNAME.MOUSE
>SYSCALL GetDevByName.YA
bcc .2
inc DEVNAME.MOUSE+3
lda DEVNAME.MOUSE+3
cmp #'8'
bne .1
beq .3 No mouse found, skip mouse init
.2 stx hDevMouse
>STYA GoDevMouse+1
txa
ldx #DEVMGR.OPEN
jsr GoDevMouse
ldx #DEVMGR.CONTROL Mouse driver disturb graphic screen....
jsr GoDevGfx.Jmp
ldx #DEVMGR.STATUS get graphic mode and resolution....
jsr GoDevGfx.Jmp
>STYA ZPPtr1
ldy #S.DSTAT.GFX.W+1
lda (ZPPtr1),y
sta GC.Screen+S.GC.W+1
sta MouseClamp+3
lsr
sta CUR.Pos+S.RECT.X1+1
dey
lda (ZPPtr1),y
sta MouseClamp+2
sta GC.Screen+S.GC.W
ror
sta CUR.Pos+S.RECT.X1
ldy #S.DSTAT.GFX.H+1
lda (ZPPtr1),y
sta MouseClamp+7
sta GC.Screen+S.GC.H+1
lsr
sta CUR.Pos+S.RECT.Y1+1
dey
lda (ZPPtr1),y
sta MouseClamp+6
sta GC.Screen+S.GC.H
ror
sta CUR.Pos+S.RECT.Y1
>LDYA L.MouseClamp
ldx #DEVMGR.CONTROL
jsr GoDevMouse
>LDYA L.CUR.SaveBuf
>STYA CUR.CB+S.CB.DstPtr
lda #CUR.T.ARROW
jsr SetCursor.A
jsr ShowCursor
.3
clc
rts
*--------------------------------------
CloseGUI
stz GC.Screen+S.GC.hDev
CloseGUI lda hDevMouse
beq .1
ldx #DEVMGR.CLOSE
jsr GoDevMouse
.1 stz GC.Screen+S.GC.hDev
sec
rts
*--------------------------------------
GoDev >LDYA L.CB.Cache
GoDev.YA ldx #DEVMGR.WRITE
GoDev.Jmp jmp $ffff
ReadMouse >PULLW ZPPtr1
lda hDevMouse Mouse is active ?
beq .9
>LDYA ZPPtr1
ldx #DEVMGR.READBLOCK
jmp GoDevMouse
.9 sec
rts
*--------------------------------------
GoDevGfx >LDYA L.CB.Cache
GoDevGfx.YA ldx #DEVMGR.WRITE
GoDevGfx.Jmp jmp $ffff
*--------------------------------------
GoDevMouse jmp $ffff
*--------------------------------------
.INB /A2OSX.SRC/LIB/LIBGUI.S.DRAW
.INB /A2OSX.SRC/LIB/LIBGUI.S.CLIP
.INB /A2OSX.SRC/LIB/LIBGUI.S.CUR
*--------------------------------------
CS.END
*--------------------------------------
.INB /A2OSX.SRC/LIB/LIBGUI.G.CUR
*--------------------------------------
DEVNAME.GFX >CSTR "GFX"
DEVNAME.MOUSE >CSTR "MOU1"
*--------------------------------------
hDevMouse .BS 1
*--------------------------------------
DX .BS 2
DY .BS 2
@ -116,6 +232,8 @@ CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
.DA S.CB.DstPtr+1 GETRECTBUFSIZE
.DA S.CB.Y2+1 DRAWLINE
*--------------------------------------
MouseClamp .BS 8
*--------------------------------------
GC.Screen .BS S.GC
GC.Cache .BS S.GC
CB.Cache .BS S.CB

View File

@ -34,19 +34,13 @@ CS.START cld
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.LIBGUI .DA LIBGUI
L.DEVNAME.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
L.MSG.INIT .DA MSG.INIT
L.MouseClamp .DA MouseClamp
L.LIBGUI .DA LIBGUI
L.Filename .DA Filename
L.MouseData .DA MouseData
L.Rect.CB .DA Rect.CB
L.SetPixel.CB .DA SetPixel.CB
L.DrawLines.CB .DA DrawLines.CB
L.Filename .DA Filename
L.BitBlT.CB .DA BitBlT.CB
L.MousePtr.CB .DA MousePtr.CB
L.BM.Arrow .DA BM.Arrow
.DA 0
*--------------------------------------
CS.INIT >LDYA L.MSG.INIT
@ -54,70 +48,12 @@ CS.INIT >LDYA L.MSG.INIT
>LDYA L.LIBGUI
>SYSCALL LoadLib.YA
bcs .9
sta hLIBGUI
>LDYA L.DEVNAME.GFX
>SYSCALL GetDevByName.YA
bcc .10
rts
>LIBCALL hLIBGUI,LIBGUI.InitGUI
bcs .9
.10 stx hDevGFX
>STYA GoDevGFX+1
txa
ldx #DEVMGR.OPEN
jsr GoDevGFX
.11 >LDYA L.DEVNAME.MOUSE
>SYSCALL GetDevByName.YA
bcc .20
inc DEVNAME.MOUSE+3
lda DEVNAME.MOUSE+3
cmp #'8'
bne .11
beq .21 No mouse found, skip mouse init
.20 stx hDevMouse
>STYA GoDevMouse+1
ldx #DEVMGR.OPEN
jsr GoDevMouse
ldx #DEVMGR.CONTROL Mouse driver disturb graphic screen....
jsr GoDevGFX
ldx #DEVMGR.STATUS get graphic mode and resolution....
jsr GoDevGFX
>STYA ZPPtr1
ldy #S.DSTAT+1
lda (ZPPtr1),y
sta MouseClamp+2
iny
lda (ZPPtr1),y
sta MouseClamp+3
iny
lda (ZPPtr1),y
sta MouseClamp+6
iny
lda (ZPPtr1),y
sta MouseClamp+7
>LDYA L.MouseClamp
ldx #DEVMGR.CONTROL
jsr GoDevMouse
.21 lda hDevGFX
>LIBCALL hLIBGUI,LIBGUI.InitGUI.A
lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
>PUSHWI 0 Aux type
>PUSHBI $CB Type
>PUSHBI SYS.FOpen.R
@ -131,6 +67,10 @@ CS.INIT >LDYA L.MSG.INIT
jsr Destop.Paint
lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
clc
.9 rts
*--------------------------------------
@ -138,42 +78,18 @@ CS.RUN lda A2osX.ASCREEN GUI screen active ?
cmp #3
bne .8 no, exit....
lda hDevMouse Mouse is active ?
beq .4 go check KB
>PUSHW L.MouseData
>LIBCALL hLIBGUI,LIBGUI.ReadMouse
bcs .4
>LDYA L.MouseData
ldx #DEVMGR.READBLOCK
jsr GoDevMouse
bcs .4 go check KB
lda MouseData
lda MouseData+S.MOUSE.S
bit #S.MOUSE.S.MOVE
beq .1
lda MouseData+1
sta SetPixel.X
>PUSHW L.MouseData
>LIBCALL hLIBGUI,LIBGUI.SetCursorPos
lda MouseData+2
sta SetPixel.X+1
lda MouseData+3
sta SetPixel.Y
lda MouseData+4
sta SetPixel.Y+1
lda #0 S.CB.OP.XOR
sta SetPixel.OP
lda #S.CB.MODE.MONO
sta SetPixel.Mode
lda #1
sta SetPixel.Color
>PUSHW L.SetPixel.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
lda MouseData
lda MouseData+S.MOUSE.S
.1 bit #S.MOUSE.S.DOWN
beq .4
@ -195,47 +111,6 @@ CS.QUIT clc
Destop.Paint >PUSHW L.Rect.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
* >PUSHW L.DrawLines.CB
* >LIBCALL hLIBGUI,LIBGUI.Draw
>LDYA L.BM.Arrow
>STYA MousePtr.CB+S.CB.SrcPtr
>LDYAI 139
>STYA MousePtr.CB+S.CB.DestX
>PUSHW L.MousePtr.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
>LDYAI 7
>STYA MousePtr.CB+S.CB.DestX
>PUSHW L.MousePtr.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
>LDYAI 29
>STYA MousePtr.CB+S.CB.DestX
>PUSHW L.MousePtr.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
>LDYAI 51
>STYA MousePtr.CB+S.CB.DestX
>PUSHW L.MousePtr.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
>LDYAI 73
>STYA MousePtr.CB+S.CB.DestX
>PUSHW L.MousePtr.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
>LDYAI 95
>STYA MousePtr.CB+S.CB.DestX
>PUSHW L.MousePtr.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
>LDYAI 117
>STYA MousePtr.CB+S.CB.DestX
>PUSHW L.MousePtr.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
>LDYAI 105
>STYA BitBlT.CB+S.CB.DestX
>PUSHW L.BitBlt.CB
@ -255,19 +130,14 @@ Destop.Paint >PUSHW L.Rect.CB
*--------------------------------------
*--------------------------------------
*--------------------------------------
GoDevGFX jmp $ffff
GoDevMouse jmp $ffff
*--------------------------------------
CS.END
DEVNAME.GFX >CSTR "GFX"
DEVNAME.MOUSE >CSTR "MOU1"
LIBGUI >CSTR "libgui.o"
MSG.INIT >CSTR "GUI:Init...\r\n"
hLIBGUI .BS 1
hDevGFX .BS 1
hDevMouse .BS 1
MouseClamp .BS 8
MouseData .BS S.MOUSE
*--------------------------------------
Filename >CSTR "/A2OSX.BUILD/MARILYN"
*--------------------------------------
MouseData .DA S.MOUSE
*--------------------------------------
Rect.CB .DA #S.CB.CMD.FILLRECT
.DA #S.CB.OP.SET
@ -383,8 +253,6 @@ DrawLines.CB .DA #S.CB.CMD.DRAWLINE
.DA #0
*--------------------------------------
Filename >CSTR "/A2OSX.BUILD/MARILYN"
*--------------------------------------
BitBlT.CB .DA #S.CB.CMD.BITBLT
.DA #S.CB.OP.SET
.DA #S.CB.MODE.MONO
@ -399,64 +267,6 @@ BitBlT.CB .DA #S.CB.CMD.BITBLT
.DA 0
.DA #0
*--------------------------------------
MousePtr.CB .DA #S.CB.CMD.BITBLT
.DA #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE
.DA #S.CB.MODE.MONO
.DA #0
.DA 0 X1
.DA 0 Y1
.DA 10 X2
.DA 12 y2
.BS 2 DestX
.DA 1 DestY
.BS 2 SrcPtr
.DA 0
.DA #0
*--------------------------------------
SetPixel.CB .DA #S.CB.CMD.SETPIXEL
SetPixel.OP .BS 1
SetPixel.Mode .BS 1
SetPixel.Color .BS 1
SetPixel.X .BS 2
SetPixel.Y .BS 2
.DA #0
*--------------------------------------
BM.Arrow .DA #S.BM.F.BBP1
.DA #2 RowBytes
.DA 11 W
.DA 13 H
.DA BM.Arrow.MASK-BM.Arrow
BM.Arrow.DATA .DA %000.00000000
.DA %000.00000010
.DA %000.00000110
.DA %000.00001110
.DA %000.00011110
.DA %000.00111110
.DA %000.01111110
.DA %000.11111110
.DA %001.11111110
.DA %010.01111110
.DA %000.11110010
.DA %000.11100000
.DA %000.00000000
BM.Arrow.MASK .DA %111.11111100
.DA %111.11111000
.DA %111.11110000
.DA %111.11100000
.DA %111.11000000
.DA %111.10000000
.DA %111.00000000
.DA %110.00000000
.DA %100.00000000
.DA %000.00000000
.DA %000.00000000
.DA %110.00000000
.DA %110.00001111
*--------------------------------------
.DUMMY
.OR 0