mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.9.1 : DHGR Driver, BitBLT, mouse pointer
This commit is contained in:
parent
37d8e6090b
commit
539c90cd07
Binary file not shown.
Binary file not shown.
@ -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
|
@ -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
17
INC/GFX.I.txt
Normal 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
|
@ -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
|
||||
|
@ -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
23
INC/NIC.I.txt
Normal 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
59
LIB/LIBGUI.G.CUR.txt
Normal 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
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
138
LIB/LIBGUI.S.txt
138
LIB/LIBGUI.S.txt
@ -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
|
||||
|
230
SBIN/GUI.S.txt
230
SBIN/GUI.S.txt
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user