Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-27 17:33:10 +01:00
parent d30216ca00
commit 9c02fb8bb5
6 changed files with 162 additions and 110 deletions

Binary file not shown.

View File

@ -3,21 +3,13 @@ NEW
*--------------------------------------
* drawline(short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int X2)
*--------------------------------------
DrawLine >PULLW CB.Cache+S.CB.Y2
>PULLW CB.Cache+S.CB.X2
>PULLW CB.Cache+S.CB.Y1
>PULLW CB.Cache+S.CB.X1
DrawLine jsr DRAW.PullY2X2Y1X1
>PULLB CB.Cache+S.CB.COLOR
>PULLB CB.Cache+S.CB.OP
>PULLA hWND
>SYSCALL2 GetMemPtr
>STYA ZPWNDPtr
jsr DRAW.ToGlobal
jsr DRAW.GetInnerWND for clipping
jsr DRAW.PullWND
lda CB.Cache+S.CB.X2
sec
sbc CB.Cache+S.CB.X1
@ -266,14 +258,45 @@ DrawLine.IncX lda DX
.8 rts
*--------------------------------------
* drawrectangle (short int OP, short int M, int X1, int Y1, int X2, int Y2)
* fillrectangle (short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int Y2)
*--------------------------------------
FillRectangle jsr DRAW.PullY2X2Y1X1
>PULLB CB.Cache+S.CB.COLOR
>PULLB CB.Cache+S.CB.OP
jsr DRAW.PullWND
lda #S.CB.CMD.FILLRECT
sta CB.Cache+S.CB.CMD
jsr CLIP.CB.Cache
bcs .8
jmp GFXWrite.CB
.8 rts
*--------------------------------------
* drawbitmap (short int OP, short int M, S.BM *bitmap, int X1, int Y1)
* drawbitmap (short int hWND, short int OP, short int M, S.BM *bitmap, int X1, int Y1)
*--------------------------------------
DrawBitMap clc
rts
DrawBitMap lda #S.CB.CMD.BITBLT
jsr CB.InitCacheA
jsr DRAW.PullY1X1
>PULLW CB.Cache+S.CB.SrcPtr
>PULLB CB.Cache+S.CB.M
>PULLB CB.Cache+S.CB.OP
jsr DRAW.PullWND
jsr CLIP.CB.Cache
bcs .8
jmp GFXWrite.CB
.8 rts
*--------------------------------------
DRAW.xBMAtDXDY >LDYA L.BMs,x
DRAW.yaBMAtDXDY >STYA ZPBMPtr Src BM
@ -312,10 +335,26 @@ DRAW.yaBMAtDXDY >STYA ZPBMPtr Src BM
jmp PutCBCache2CBBuf
*--------------------------------------
* drawtext (short int OP, short int hFONT, int X1, int Y1)
* drawtext (short int hWND, short int OP, short int hFONT, int X1, int Y1, char *str)
*--------------------------------------
DrawText clc
rts
DrawText lda #S.CB.CMD.DRAWTEXT2
jsr CB.InitCacheA
>PULLW CB.Cache+S.CB.TxtPtr
jsr DRAW.PullY1X1
>PULLB CB.Cache+S.CB.hFont
>PULLB CB.Cache+S.CB.OP
jsr DRAW.PullWND
jsr CLIP.CB.Cache
bcs .8
jmp GFXWrite.CB
.8 rts
*--------------------------------------
DRAW.YATextAtDXDY
phx
@ -347,6 +386,60 @@ DRAW.YATextAtDXDY
jmp PutCBCache2CBBuf
*--------------------------------------
DRAW.PullY2X2Y1X1
ldx #7
bra DRAW.PullX
DRAW.PullY1X1 ldx #3
DRAW.PullX >PULLA
sta CB.Cache+S.CB.X1,x
dex
bpl DRAW.PullX
rts
*--------------------------------------
DRAW.PullWND >PULLA hWND
>SYSCALL2 GetMemPtr
>STYA ZPWNDPtr
jsr DRAW.ToGlobal set CB.Cache to global coord.
*--------------------------------------
DRAW.GetInnerWND
ldy #S.OBJ.X1
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.X1
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.X1+1
ldy #S.WND.InnerY1
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.Y1
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.Y1+1
ldy #S.WND.InnerW
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.W
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.W+1
iny #S.WND.InnerH
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.H
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.H+1
>LDYA L.OBJ.Cache
jmp OBJ.SetX2Y2
*--------------------------------------
DRAW.ToGlobal >LDYA ZPWNDPtr
>STYA ZPPtr1
@ -392,41 +485,6 @@ DRAW.AddP1YtoCBX
sta CB.Cache+1,x
rts
*--------------------------------------
DRAW.GetInnerWND
ldy #S.OBJ.X1
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.X1
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.X1+1
ldy #S.WND.InnerY1
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.Y1
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.Y1+1
ldy #S.WND.InnerW
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.W
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.W+1
iny #S.WND.InnerH
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.H
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.H+1
>LDYA L.OBJ.Cache
jmp OBJ.SetX2Y2
*--------------------------------------
DrawCBBufToYA pha
phy

View File

@ -1,7 +1,46 @@
NEW
AUTO 3,1
*--------------------------------------
EVT.Get
EVT.GetMsg >PULLW ZPPtr1
lda A2osX.ASCREEN GUI screen active ?
cmp DCB.GFX+S.DCB.GFX.DEVID
bne .9 no, exit....
* sec
lda hDevMouse
beq .2
>PUSHA
>PUSHBI IOCTL.READ
>PUSHW L.MouseData
>SYSCALL2 IOCTL
bcs .2
ldy #S.MOUSE-1
.1 lda MouseData,y
sta (ZPPtr1),y
dey
bpl .1
* clc
.2 lda KBD
bmi .3
rts
.3 sta KBDSTROBE
and #$7F
.8 clc
rts
.9 sec
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.evt

View File

@ -237,7 +237,7 @@ MENU.Enter jsr MENU.GetDX
bit #S.MOUSE.S.CLK
beq .90
>DEBUG
* >DEBUG
jmp MENU.DestroyAll

View File

@ -119,7 +119,9 @@ MOU.CheckOverMenu
jsr MOU.InRectYA
bcs .2
jmp MENU.Enter
jsr MENU.Enter
clc
rts
.2 lda ZPMENUPtr
clc

View File

@ -16,7 +16,7 @@ NEW
.DUMMY
.OR ZPBIN
ZS.START
* MyPtr .BS 2
hWND .BS 1
ZS.END
.ED
*--------------------------------------
@ -42,11 +42,9 @@ CS.START cld
.DA CS.QUIT
L.LIBGUI .DA LIBGUI
L.MouseData .DA MouseData
L.LOGOFILE .DA LOGOFILE
L.WND.TITLE .DA WND.TITLE
L.WND.MBAR .DA WND.MBAR
L.WND.STATUS .DA WND.STATUS
L.WND.Test.fPaint .DA WND.Test.fPaint
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBGUI
@ -59,20 +57,11 @@ CS.INIT >LDYA L.LIBGUI
.9
CS.INIT.RTS rts
*--------------------------------------
CS.RUN >PUSHW L.LOGOFILE
>PUSHBI O.RDONLY
>PUSHBI $CB Type
>PUSHWZ Aux type
>SYSCALL LoadStkObj
bcs CS.INIT.RTS
stx hLogo
CS.RUN.LOOP >SLEEP
CS.RUN >SLEEP
>PUSHW L.MouseData
>LIBCALL hLIBGUI,LIBGUI.ReadMouse
bcs CS.RUN.LOOP
bcs CS.RUN
lda MouseData+S.MOUSE.S
bit #S.MOUSE.S.MOVE
@ -83,18 +72,12 @@ CS.RUN.LOOP >SLEEP
lda MouseData+S.MOUSE.S
.1 bit #S.MOUSE.S.CLK
beq .2
bra CS.RUN.LOOP
.2 bit #S.MOUSE.S.DCLK
beq CS.RUN.LOOP
.1 bit #S.MOUSE.S.DCLK
beq CS.RUN
jsr WND.Test
bra CS.RUN.LOOP
bra CS.RUN
clc
rts
@ -125,11 +108,6 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.
>PUSHWI C.WHITE
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>PUSHB hWND
>PUSHBI S.WND.BGBM
>PUSHW hLogo
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>PUSHB hWND
>PUSHBI S.WND.TITLE
>PUSHW L.WND.TITLE
@ -145,42 +123,17 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.
>PUSHW L.WND.STATUS
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>PUSHB hWND
>PUSHBI S.WND.fPaint
>PUSHW L.WND.Test.fPaint
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>STYA WND.Test.fPaint1+1
lda hWND
>LIBCALL hLIBGUI,LIBGUI.WND.Show
rts
*--------------------------------------
WND.Test.fPaint sta hWND
WND.Test.fPaint1
jsr $ffff Default WND.fPaint
* >PUSHB hWND
* >PUSHBI S.CB.OP.SET
* >PUSHBI C.BLACK
* >PUSHWI 10
* >PUSHWI 10
* >PUSHWI 200
* >PUSHWI 60
* >LIBCALL hLIBGUI,LIBGUI.DrawLine
rts
*--------------------------------------
CS.END
LIBGUI .AZ "libgui"
hLIBGUI .BS 1
*--------------------------------------
MouseData .BS S.MOUSE
*--------------------------------------
hLogo .BS 2 00xx
LOGOFILE .AZ "${ROOT}root/bmp/A2OSX.LOGO"
hWND .BS 1
WND.TITLE .AZ "Window Title"
*--------------------------------------
WND.MBAR .DA #.1-* next