Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-26 07:38:50 +01:00
parent 7b10d2318d
commit fec70d8a4b
14 changed files with 543 additions and 588 deletions

Binary file not shown.

Binary file not shown.

View File

@ -8,10 +8,10 @@ LIBGUI.ShowCursor .EQ 10
LIBGUI.UpdateCursor .EQ 12
LIBGUI.ReadMouse .EQ 14
LIBGUI.DrawLine .EQ 16
LIBGUI.WND.New .EQ 18
LIBJUI.WND.Destroy .EQ 20
LIBGUI.WND.SetProp .EQ 22
LIBGUI.WND.GetProp .EQ 24
LIBGUI.OBJ.SetProp .EQ 18
LIBGUI.OBJ.GetProp .EQ 20
LIBGUI.WND.New .EQ 22
LIBJUI.WND.Destroy .EQ 24
LIBGUI.WND.Show .EQ 26
LIBGUI.WND.Paint .EQ 28
*--------------------------------------

View File

@ -6,6 +6,7 @@ CUR.bVisible .BS 1
CUR.Pos .BS S.POINT
*--------------------------------------
CUR.HotPoints .DA #0,#0 CUR.T.ARROW
.DA #6,#6 CUR.T.MOVE
.DA #7,#4 CUR.ResizeX
.DA #6,#5 CUR.ResizeY
.DA #5,#5 CUR.ResizeXY1

View File

@ -227,9 +227,7 @@ CLIP.Line.RIGHT .EQ 2
CLIP.Line.BOTTOM .EQ 4
CLIP.Line.TOP .EQ 8
*--------------------------------------
CLIP.Line
* >DEBUG
jsr CLIP.Line.EncodeP1
CLIP.Line jsr CLIP.Line.EncodeP1
jsr CLIP.Line.EncodeP2
.1 lda CLIP.Line.P1
@ -340,7 +338,7 @@ CLIP.Line.EncodeP2
CLIP.Line.EncodeX.AX
pha
>SCMPAX OBJ.Cache+S.OBJ.X1
bmi .1
bpl .1
tya
ora #CLIP.Line.LEFT
@ -349,17 +347,18 @@ CLIP.Line.EncodeX.AX
.1 pla
>SCMPAX OBJ.Cache+S.OBJ.X2
bpl .8
bmi .8
tya
ora #CLIP.Line.RIGHT
.8 rts
.8 tya
rts
*--------------------------------------
CLIP.Line.EncodeY.AX
pha
>SCMPAX OBJ.Cache+S.OBJ.Y1
bmi .1
bpl .1
tya
ora #CLIP.Line.TOP
@ -368,12 +367,13 @@ CLIP.Line.EncodeY.AX
.1 pla
>SCMPAX OBJ.Cache+S.OBJ.Y2
bpl .8
bmi .8
tya
ora #CLIP.Line.BOTTOM
.8 rts
.8 tya
rts
*--------------------------------------
CB.Cache.SetX2Y2
lda CB.Cache+S.CB.SrcW

View File

@ -8,6 +8,7 @@ UpdateCursor lda CUR.T
inc
cmp #CUR.T.WAIT+12
bne SetCursor
lda #CUR.T.WAIT
*--------------------------------------
* Set X2,Y2,SrcPtr

View File

@ -15,7 +15,8 @@ DrawLine >PULLW CB.Cache+S.CB.Y2
>STYA ZPWNDPtr
jsr DRAW.ToGlobal
jsr DRAW.GetInnerW
jsr DRAW.GetInnerWND for clipping
lda CB.Cache+S.CB.X2
sec
@ -265,12 +266,17 @@ DrawLine.IncX lda DX
.8 rts
*--------------------------------------
* drawbitmap (short int OP, S.BM *bitmap, int X1, int Y1)
* drawrectangle (short int OP, short int M, int X1, int Y1, int X2, int Y2)
*--------------------------------------
*--------------------------------------
* drawbitmap (short int OP, short int M, S.BM *bitmap, int X1, int Y1)
*--------------------------------------
DrawBitMap clc
rts
*--------------------------------------
DRAW.YABMAtDXDY >STYA ZPBMPtr Src BM
DRAW.xBMAtDXDY >LDYA L.BMs,x
DRAW.yaBMAtDXDY >STYA ZPBMPtr Src BM
lda #S.CB.CMD.BITBLT
jsr CB.InitCacheA
@ -386,7 +392,9 @@ DRAW.AddP1YtoCBX
sta CB.Cache+1,x
rts
*--------------------------------------
DRAW.GetInnerW ldy #S.OBJ.X1
DRAW.GetInnerWND
ldy #S.OBJ.X1
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.X1
iny
@ -394,6 +402,7 @@ DRAW.GetInnerW ldy #S.OBJ.X1
sta OBJ.Cache+S.OBJ.X1+1
ldy #S.WND.InnerY1
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.Y1
iny
@ -401,6 +410,7 @@ DRAW.GetInnerW ldy #S.OBJ.X1
sta OBJ.Cache+S.OBJ.Y1+1
ldy #S.WND.InnerW
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.W
iny
@ -410,7 +420,6 @@ DRAW.GetInnerW ldy #S.OBJ.X1
iny #S.WND.InnerH
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.H
iny
lda (ZPWNDPtr),y
sta OBJ.Cache+S.OBJ.H+1
@ -428,14 +437,10 @@ DrawCBPtrToYA1 pha
jsr DrawCBPtrToYA
lda hCBBuf
stz hCBBuf
>SYSCALL FreeMem
rts
*--------------------------------------
DrawCBBufToYA ldx L.CB.Buf
stx ZPCBPtr
ldx L.CB.Buf+1
stx ZPCBPtr+1
DrawCBPtrToYA bit CUR.bVisible
bpl .10

View File

@ -572,7 +572,7 @@ MENU.ShowMItem1 lda #S.CB.CMD.FILLRECT
.11 jsr MENU.GetIcon
beq .2
jsr DRAW.YABMAtDXDY
jsr DRAW.yaBMAtDXDY
.2 lda DX
clc
@ -623,8 +623,7 @@ MENU.ShowMItem1 lda #S.CB.CMD.FILLRECT
sta DX+1
ldx #BM.ID.RIGHT
>LDYA L.BMs,x
jsr DRAW.YABMAtDXDY
jsr DRAW.xBMAtDXDY
.8 lda DY
bne .80

View File

@ -12,7 +12,7 @@ MOU.Init >PUSHBI 0
bne MOU.Init
* sec
rts
rts
.2 sta hDevMouse
@ -60,14 +60,14 @@ MOU.Quit lda hDevMouse
rts
*--------------------------------------
MOU.ReadMouse >PULLW ZPPtr1
lda A2osX.ASCREEN GUI screen active ?
cmp DCB.GFX+S.DCB.GFX.DEVID
bne .9 no, exit....
lda hDevMouse
beq .99 CS
>PUSHA
>PUSHBI IOCTL.READ
>PUSHW L.MouseData
@ -75,15 +75,14 @@ MOU.ReadMouse >PULLW ZPPtr1
bcs .99
ldy #S.MOUSE-1
.1 lda MouseData,y
sta (ZPPtr1),y
dey
bpl .1
ldy #S.MOUSE.S
lda (ZPPtr1),y
bit #S.MOUSE.S.MOVE
lda MouseData+S.MOUSE.S
bit #S.MOUSE.S.MOVE+S.MOUSE.S.CLK
beq .8
jsr MOU.CheckOverMenu
@ -95,19 +94,19 @@ MOU.ReadMouse >PULLW ZPPtr1
jsr MOU.CheckOverWND
bcc .8
.8 clc
rts
.9 sec
.99 rts
*--------------------------------------
MOU.CheckOverMenu
.1 ldx MENU.Stack.Top
beq .9
lda MENU.Stack-1,x
>SYSCALL GetMemPtr
>STYA ZPMENUPtr
pha
@ -119,7 +118,7 @@ MOU.CheckOverMenu
adc /S.OBJ.X1
jsr MOU.InRectYA
bcs .2
jmp MENU.Enter
.2 lda ZPMENUPtr
@ -131,11 +130,11 @@ MOU.CheckOverMenu
jsr MOU.InRectYA
bcc .8
jsr MENU.Destroy
bra .1
.9 sec
.8 rts
*--------------------------------------
@ -144,7 +143,7 @@ MOU.CheckOverSysBut
jsr MOU.InRectYA
bcs .9
jmp SYSBUT.Enter
.9 jsr SYSBUT.Leave
sec
rts
@ -152,13 +151,13 @@ MOU.CheckOverSysBut
MOU.CheckOverWND
ldx WND.Stack.Top
beq .9
.1 stx WND.Stack.Idx
lda WND.Stack-1,x
>SYSCALL GetMemPtr
>STYA ZPWNDPtr
ldy #S.OBJ.F
lda (ZPWNDPtr),y
@ -167,7 +166,7 @@ MOU.CheckOverWND
jsr MOU.ChkWNDBorders
bcc .99
.2 lda ZPWNDPtr
clc
adc #S.OBJ.X1
@ -176,21 +175,25 @@ MOU.CheckOverWND
adc #0
jsr MOU.InRectYA
bcs .7
ldy #S.WND.TBarY2
bcs .7 not over this WND
lda MouseData+S.MOUSE.S
bit #S.MOUSE.S.CLK
beq .22
jsr WND.Bring2Front
.22 ldy #S.WND.TBarY2
lda (ZPWNDPtr),y
cmp MouseData+S.MOUSE.Y1
iny
lda (ZPWNDPtr),y
sbc MouseData+S.MOUSE.Y1+1
bcc .3
lda #CUR.T.MOVE
jsr SetCursor
clc
rts
bcc .3 not in TBAR
bra .5
.3 iny #S.WND.MBarY2
lda (ZPWNDPtr),y
@ -198,16 +201,31 @@ MOU.CheckOverWND
iny
lda (ZPWNDPtr),y
sbc MouseData+S.MOUSE.Y1+1
bcc .6
lda #CUR.T.CROSS
bcc .4 not in MBAR
bra .5
.4 iny #S.WND.SBarY1
lda (ZPWNDPtr),y
cmp MouseData+S.MOUSE.Y1
iny
lda (ZPWNDPtr),y
sbc MouseData+S.MOUSE.Y1+1
bcs .6 not in TBAR
.5 lda #CUR.T.ARROW
jsr SetCursor
clc
rts
.6 lda #CUR.T.WAIT
jsr SetCursor
clc
rts
@ -224,7 +242,7 @@ MOU.CheckOverWND
*--------------------------------------
MOU.ChkWNDBorders
stz IY
ldy #S.OBJ.X1
lda (ZPWNDPtr),y
sec
@ -240,7 +258,7 @@ MOU.ChkWNDBorders
lda #CUR.T.RESIZEX
sta IY
.1 ldy #S.OBJ.Y1
lda (ZPWNDPtr),y
sec
@ -259,10 +277,10 @@ MOU.ChkWNDBorders
lda #CUR.T.RESIZEXY1
jmp SetCursor
.2 lda #CUR.T.RESIZEY
sta IY
.3 ldy #S.OBJ.X2
lda (ZPWNDPtr),y
clc
@ -275,12 +293,12 @@ MOU.ChkWNDBorders
adc #0
eor MouseData+S.MOUSE.X2+1
bne .5
lda IY
beq .4
lda #CUR.T.RESIZEXY2
jmp SetCursor
jmp SetCursor
.4 lda #CUR.T.RESIZEX
sta IY
@ -300,7 +318,7 @@ MOU.ChkWNDBorders
lda #CUR.T.RESIZEXY1
.6 jmp SetCursor
.7 lda IY
bne .6
@ -310,23 +328,23 @@ MOU.ChkWNDBorders
MOU.InRectYA >STYA ZPRECTPtr
ldy #S.RECT.X1
lda MouseData+S.MOUSE.X1
cmp (ZPRECTPtr),y
iny
lda MouseData+S.MOUSE.X1+1
sbc (ZPRECTPtr),y
bcc .9
iny #S.RECT.Y1
lda MouseData+S.MOUSE.Y1
cmp (ZPRECTPtr),y
iny
lda MouseData+S.MOUSE.Y1+1
sbc (ZPRECTPtr),y
bcc .9
iny #S.RECT.X2
lda (ZPRECTPtr),y
@ -335,8 +353,8 @@ MOU.InRectYA >STYA ZPRECTPtr
lda (ZPRECTPtr),y
sbc MouseData+S.MOUSE.X1+1
bcc .9
iny #S.RECT.Y2
iny #S.RECT.Y2
lda (ZPRECTPtr),y
cmp MouseData+S.MOUSE.Y1
@ -344,12 +362,12 @@ MOU.InRectYA >STYA ZPRECTPtr
lda (ZPRECTPtr),y
sbc MouseData+S.MOUSE.Y1+1
bcc .9
clc
rts
.9 sec
.99 rts
.99 rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.mou

58
LIB/LIBGUI.S.OBJ.txt Normal file
View File

@ -0,0 +1,58 @@
NEW
AUTO 3,1
*--------------------------------------
OBJ.New
*--------------------------------------
* hOBJ, Prop8, Value16
*--------------------------------------
OBJ.SetProp ldy #3
lda (pStack),y hOBJ
>SYSCALL2 GetMemPtr
>STYA ZPObjPtr
ldy #2
lda (pStack),y
tay
lda (ZPObjPtr),y
pha old value
>PULLA
sta (ZPObjPtr),y
iny
lda (ZPObjPtr),y
tax
>PULLA
sta (ZPObjPtr),y
txa
ply
>RET 2
*--------------------------------------
* hOBJ, Prop8
*--------------------------------------
OBJ.GetProp >PULLA
pha
>PULLA
>SYSCALL2 GetMemPtr
>STYA ZPObjPtr
ply
lda (ZPObjPtr),y
pha
iny
lda (ZPObjPtr),y
ply
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.obj
LOAD usr/src/lib/libgui.s
ASM

View File

@ -114,8 +114,8 @@ SYSBAR.ShowSysBut
adc #0
sta DY+1
>LDYA L.BM.Apple
jsr DRAW.YABMAtDXDY
ldx #BM.ID.APPLE
jsr DRAW.xBMAtDXDY
lda RECT.SysBut+S.RECT.X1
clc

File diff suppressed because it is too large Load Diff

View File

@ -126,10 +126,10 @@ CS.START cld
.DA UpdateCursor
.DA MOU.ReadMouse
.DA DrawLine
.DA OBJ.SetProp
.DA OBJ.GetProp
.DA WND.New
.DA WND.Destroy
.DA WND.SetProp
.DA WND.GetProp
.DA WND.Show
.DA WND.Paint
L.WND.fPaint .DA WND.fPaint
@ -143,7 +143,6 @@ L.DCB.GFX .DA DCB.GFX
L.MouseClamp .DA MouseClamp
L.MouseData .DA MouseData
L.CB.PTR .DA CB.PTR
L.CB.Buf .DA CB.Buf
L.CB.Cache .DA CB.Cache
L.OBJ.Cache .DA OBJ.Cache
L.WND.Screen .DA WND.Screen
@ -232,7 +231,7 @@ LIB.UNLOAD dec LibCount
.8 clc
rts
*--------------------------------------
CB.InitCacheA sta CB.Cache
CB.InitCacheA sta CB.Cache+S.CB.CMD
*--------------------------------------
CB.ClearCache ldx #S.CB-1
@ -253,7 +252,12 @@ CB.GetInCache >STYA .1+1
rts
*--------------------------------------
GetCBBuf >LDYAI 512
GetCBBuf clc
ldx hCBBuf
bne .9
>LDYAI 512
>SYSCALL GetMem
bcs .9
@ -272,23 +276,18 @@ PutCBCache2CBBuf
ldx #0
.1 lda CB.Cache,x
jsr PutA2CBBuf
inx
sta (ZPCBBufPtr)
inc ZPCBBufPtr
bne .2
inc ZPCBBufPtr+1
.2 inx
dey
bpl .1
rts
*--------------------------------------
PutAX2CBBuf jsr PutA2CBBuf
txa
PutA2CBBuf sta (ZPCBBufPtr)
inc ZPCBBufPtr
bne .8
inc ZPCBBufPtr+1
.8 rts
*--------------------------------------
GFXWrite.CB >PUSHB WND.Screen+S.OBJ.hPARENT
>PUSHBI IOCTL.WRITE
>PUSHW L.CB.Cache
@ -367,6 +366,7 @@ OBJ.SetX2Y2 >STYA ZPPtr1
.INB usr/src/lib/libgui.s.mbar
.INB usr/src/lib/libgui.s.menu
.INB usr/src/lib/libgui.s.mou
.INB usr/src/lib/libgui.s.obj
.INB usr/src/lib/libgui.s.pat
.INB usr/src/lib/libgui.s.sysbar
.INB usr/src/lib/libgui.s.text
@ -418,13 +418,13 @@ CB.PTR .DA #S.CB.CMD.BITBLT
.DA #0
.BS S.CB-4
*--------------------------------------
CB.Buf .BS S.CB+1 +Ending 0
CB.Cache .BS S.CB
OBJ.Cache .BS S.OBJ
*--------------------------------------
MENU.Stack.Top .BS 1
MENU.Stack .BS MENU.MAX
*--------------------------------------
WND.hWND .BS 1
WND.Stack.Idx .BS 1
WND.Stack.Top .BS 1
WND.Stack .BS WND.MAX
@ -559,8 +559,8 @@ PREFS.MBARXMARGIN .DA #5
PREFS.MENUCOLOR .DA #C.WHITE
PREFS.SYSBARCOLOR .DA #C.WHITE
PREFS.BORDERCOLOR .DA #C.BLACK
PREFS.TBARCOLORA .DA #C16.L.BLUE
PREFS.TBARCOLORI .DA #C16.AQUA
PREFS.TBARCOLORA .DA #C16.D.BLUE
PREFS.TBARCOLORI .DA #C16.L.BLUE
PREFS.MBARCOLOR .DA #C.WHITE
PREFS.SBARCOLOR .DA #C.WHITE
PREFS.DESKTOPCOLOR .DA #C16.D.BLUE

View File

@ -46,33 +46,35 @@ 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
>SYSCALL LoadLib
bcs .9
sta hLIBGUI
* clc
* clc
.9
CS.INIT.RTS rts
*--------------------------------------
CS.RUN >LIBCALL hLIBGUI,LIBGUI.ShowCursor
>PUSHW L.LOGOFILE
>PUSHBI O.RDONLY
>PUSHBI O.RDONLY
>PUSHBI $CB Type
>PUSHWZ Aux type
>SYSCALL LoadStkObj
bcs CS.INIT.RTS
stx hLogo
CS.RUN.LOOP >SLEEP
>PUSHW L.MouseData
>LIBCALL hLIBGUI,LIBGUI.ReadMouse
bcs .8
bcs CS.RUN.LOOP
lda MouseData+S.MOUSE.S
bit #S.MOUSE.S.MOVE
@ -86,27 +88,18 @@ CS.RUN.LOOP >SLEEP
.1 bit #S.MOUSE.S.CLK
beq .2
* >LDA.G CUR.T
* inc
* inc
* cmp #CUR.T.WAIT+2
* bne .11
* lda #CUR.T.ARROW
*.11 >STA.G CUR.T
* >LIBCALL hLIBGUI,LIBGUI.SetCursor
* jmp CS.RUN.LOOP
bra CS.RUN.LOOP
.2 bit #S.MOUSE.S.DCLK
beq .8
jsr WND.Test
.8 jmp CS.RUN.LOOP
beq CS.RUN.LOOP
jsr WND.Test
bra CS.RUN.LOOP
clc
rts
rts
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9
@ -120,7 +113,7 @@ CS.QUIT clc
CS.QUIT.RTS rts
*--------------------------------------
WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.MIN
>PUSHW MouseData+S.MOUSE.X1
>PUSHW MouseData+S.MOUSE.Y1
>PUSHWI 280
@ -128,41 +121,50 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.
>LIBCALL hLIBGUI,LIBGUI.WND.New
bcs CS.QUIT.RTS
sta hWND
>PUSHA A = hWND
>PUSHBI S.WND.BGCOLOR
>PUSHWI C.WHITE
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>PUSHB hWND
>PUSHBI S.WND.TITLE
>PUSHW L.WND.TITLE
>LIBCALL hLIBGUI,LIBGUI.WND.SetProp
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>PUSHB hWND
>PUSHBI S.WND.MBAR
>PUSHW L.WND.MBAR
>LIBCALL hLIBGUI,LIBGUI.WND.SetProp
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>PUSHB hWND
>PUSHBI S.WND.STATUS
>PUSHW L.WND.STATUS
>LIBCALL hLIBGUI,LIBGUI.WND.SetProp
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
>PUSHB hWND
>PUSHBI S.WND.BGCOLOR
>PUSHWI C.WHITE
>LIBCALL hLIBGUI,LIBGUI.WND.SetProp
>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
lda hWND
>LIBCALL hLIBGUI,LIBGUI.WND.Paint
rts
*--------------------------------------
WND.Test.fPaint sta hWND
WND.Test.fPaint1
jsr $ffff
>PUSHB hWND
>PUSHBI S.CB.OP.SET
>PUSHBI C.BLACK
>PUSHWI 0
>PUSHWI 0
>PUSHWI 300
>PUSHWI 80
>PUSHWI 10
>PUSHWI 10
>PUSHWI 200
>PUSHWI 60
>LIBCALL hLIBGUI,LIBGUI.DrawLine
rts
@ -184,7 +186,7 @@ WND.MBAR .DA #.1-* next
.DA 0 XT
.DA 0 X2
.DA 0 MENU
.AZ "File"
.AZ "File"
.1 .DA #.2-* next
.DA #0 status