Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-02 16:57:05 +02:00
parent 283ade3546
commit 3a3d82f7e6
8 changed files with 117 additions and 77 deletions

Binary file not shown.

View File

@ -7,7 +7,7 @@ LIBGUI.HideCursor .EQ 8
LIBGUI.ShowCursor .EQ 10
LIBGUI.UpdateCursor .EQ 12
LIBGUI.ReadMouse .EQ 14
LIBGUI.GetScreenGC .EQ 16
LIBGUI.DrawLine .EQ 16
LIBGUI.WND.New .EQ 18
LIBJUI.WND.Destroy .EQ 20
LIBGUI.WND.SetProp .EQ 22
@ -123,10 +123,12 @@ S.WND.BGBM .EQ S.OBJ+14
S.WND.hCUR .EQ S.OBJ+16
S.WND.TitleX1 .EQ S.OBJ+18
S.WND.TitleX2 .EQ S.OBJ+20
S.WND.TBAR.Y2 .EQ S.OBJ+22
S.WND.MBAR.Y1 .EQ S.OBJ+22
S.WND.MBAR.Y2 .EQ S.OBJ+24
S.WND.SBAR.Y1 .EQ S.OBJ+26
S.WND.TBarY2 .EQ S.OBJ+22
S.WND.MBarY1 .EQ S.OBJ+22
S.WND.MBarY2 .EQ S.OBJ+24
S.WND.InnerY1 .EQ S.OBJ+24
S.WND.InnerY2 .EQ S.OBJ+26
S.WND.SBarY1 .EQ S.OBJ+26
S.WND.InnerW .EQ S.OBJ+28
S.WND.InnerH .EQ S.OBJ+30
S.WND.DocW .EQ S.OBJ+32

View File

@ -9,7 +9,7 @@ NEW
* CC : CB.Cache clipped & visible
* CS : CB.Cache invisible
*--------------------------------------
CLIP.YA jsr CB.Get Put CB in cache
CLIP.YA jsr CB.GetInCache
CLIP.CB.Cache lda CB.Cache+S.CB.CMD
and #$7F remove S.CB.CMD.OSD

View File

@ -112,19 +112,21 @@ ShowCursor lda CUR.bVisible
HideCursor.I lda #S.CB.OP.RESTORE
bra DrawCursor.I
*--------------------------------------
ShowCursor.I sta CUR.CB+S.CB.OP
ldx CUR.T
ShowCursor.I ldx CUR.T
lda CUR.Pos+S.POINT.X
sec
sbc CUR.HotPoints,x
sta CUR.CB+S.CB.X1
lda CUR.Pos+S.POINT.X+1
sbc #0
sta CUR.CB+S.CB.X1+1
lda CUR.Pos+S.POINT.Y
sec
sbc CUR.HotPoints+1,x
sta CUR.CB+S.CB.Y1
lda CUR.Pos+S.POINT.Y+1
sbc #0
sta CUR.CB+S.CB.Y1+1
@ -134,7 +136,7 @@ ShowCursor.I sta CUR.CB+S.CB.OP
DrawCursor.I sta CUR.CB+S.CB.OP
>LDYA L.WND.Screen
jsr OBJ.Get
jsr OBJ.GetInCache
>LDYA L.CUR.CB
jsr CLIP.YA

View File

@ -1,38 +1,45 @@
NEW
AUTO 3,1
*--------------------------------------
DrawCBCacheToYA ldx L.CB.Cache
DrawCBBufToYA ldx L.CB.Buf
stx ZPCBPtr
ldx L.CB.Cache+1
ldx L.CB.Buf+1
stx ZPCBPtr+1
DrawCBPtrToYA jsr OBJ.Get
DrawCBPtrToYA jsr OBJ.GetInCache
bit CUR.bVisible
bpl .1
jsr HideCursor.I
.1 lda (ZPCBPtr)
beq .8
>LDYA ZPCBPtr
jsr CB.Get A = CB.CMD
jsr CB.GetInCache A = CB.CMD
cmp #S.CB.CMD.DRAWTEXT2
bne .2
bne .6
lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
sta CB.Cache+S.CB.CMD
jsr GFXWrite.CB
bcs .9
.2 jsr CLIP.CB.Cache
bcs .7
ldx CB.Cache+S.CB.CMD
cpx #S.CB.CMD.DRAWLINE
bcc .6 Native DRV Cmd
jsr Draw.Jmp
jsr CLIP.CB.Cache
bcs .2
jsr GFXWrite.CB
.2 lda CB.Cache+S.CB.SrcPtr
>SYSCALL2 FreeStkObj
bra .7
.6 jsr GFXWrite.CB
.6 jsr CLIP.CB.Cache
bcs .7
jsr GFXWrite.CB
.7 lda (ZPCBPtr) Get Cmd
lsr
@ -47,9 +54,16 @@ DrawCBPtrToYA jsr OBJ.Get
bra .1
.8 clc
.9 rts
.9 bit CUR.bVisible
bpl .99
php
pha
jsr ShowCursor.I
pla
plp
Draw.Jmp jmp (J.Cmds-S.CB.CMD.DRAWLINE,x)
.99 rts
*--------------------------------------
* In: Control Block in CB.Cache
* CMD
@ -61,7 +75,18 @@ Draw.Jmp jmp (J.Cmds-S.CB.CMD.DRAWLINE,x)
* X2
* Y2
*--------------------------------------
DrawLine lda CB.Cache+S.CB.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
>PULLB CB.Cache+S.CB.COLOR
>PULLB CB.Cache+S.CB.OP
>PULLA hWND
>SYSCALL2 GetMemPtr
>STYA ZPWNDPtr
lda CB.Cache+S.CB.X2
sec
sbc CB.Cache+S.CB.X1
sta DX
@ -182,11 +207,13 @@ DrawLine.IncY lda DY
sta INE+1
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda D+1 IF D < 0 ...
bmi .4
lda D D > 0 : D=D+INE
clc
adc INE
@ -196,8 +223,10 @@ DrawLine.IncY lda DY
sta D+1
inc CB.Cache+S.CB.X1 X1=X1+1
bne .5
inc CB.Cache+S.CB.X1+1
bra .5
.4 lda D D > 0 : D=D+IE
clc
adc IE
@ -205,12 +234,14 @@ DrawLine.IncY lda DY
lda D+1
adc IE+1
sta D+1
.5 lda CB.Cache+S.CB.Y1 Y1=Y1+IY
clc
adc IY
sta CB.Cache+S.CB.Y1
jsr GFXWrite.CB
bra .1
.8 rts
DrawLine.IncX lda DX
@ -251,11 +282,13 @@ DrawLine.IncX lda DX
sta INE+1
.1 inc Counter
bne .2
inc Counter+1
beq .8
.2 lda D+1 ID D < 0 ....
bmi .4
lda D D > 0 : D=D+INE
clc
adc INE
@ -268,6 +301,7 @@ DrawLine.IncX lda DX
adc IY
sta CB.Cache+S.CB.Y1
bra .5
.4 lda D D < 0 : D=D+IE
clc
adc IE
@ -277,18 +311,14 @@ DrawLine.IncX lda DX
sta D+1
.5 inc CB.Cache+S.CB.X1 X1=X1+1
bne .6
inc CB.Cache+S.CB.X1+1
.6 jsr GFXWrite.CB
bra .1
.8 rts
*--------------------------------------
DrawText2 jsr GFXWrite.CB
lda CB.Cache+S.CB.SrcPtr
>SYSCALL2 FreeStkObj
.9 rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.draw
LOAD usr/src/lib/libgui.s

View File

@ -217,7 +217,7 @@ WND.Show >SYSCALL2 GetMemPtr
iny
lda (ZPWNDPtr),y
ldy #S.WND.TBAR.Y2+1
ldy #S.WND.TBarY2+1
sta (ZPWNDPtr),y
txa
dey
@ -247,7 +247,7 @@ WND.Show >SYSCALL2 GetMemPtr
adc SYSFON.Hp2
sta Counter+1
ldy #S.WND.TBAR.Y2
ldy #S.WND.TBarY2
lda (ZPWNDPtr),y
clc
adc SYSFON.Hp2
@ -272,7 +272,7 @@ WND.Show >SYSCALL2 GetMemPtr
adc SYSFON.Hp2
sta Counter+1
ldy #S.WND.TBAR.Y2
ldy #S.WND.TBarY2
lda (ZPWNDPtr),y
clc
adc SYSFON.H
@ -281,7 +281,7 @@ WND.Show >SYSCALL2 GetMemPtr
iny
lda (ZPWNDPtr),y
adc #0
ldy #S.WND.MBAR.Y2+1
ldy #S.WND.MBarY2+1
sta (ZPWNDPtr),y
txa
dey
@ -310,7 +310,7 @@ WND.Show >SYSCALL2 GetMemPtr
iny
lda (ZPWNDPtr),y
sbc #0
ldy #S.WND.SBAR.Y1+1
ldy #S.WND.SBarY1+1
sta (ZPWNDPtr),y
txa
dey
@ -357,52 +357,58 @@ WND.fPaint
ldy #S.WND.BGBM+1
lda (ZPWNDPtr),y
bne .1
lda #S.CB.CMD.FILLRECT
sta CB.Cache+S.CB.COLOR
sta CB.Buf+S.CB.CMD
lda #S.CB.OP.SET
sta CB.Cache+S.CB.OP
sta CB.Buf+S.CB.OP
lda #S.CB.M.MONO
sta CB.Buf+S.CB.M
ldy #S.WND.BGCOLOR
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.COLOR
sta CB.Buf+S.CB.COLOR
ldy #S.OBJ.X1
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X1
sta CB.Buf+S.CB.X1
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X1+1
sta CB.Buf+S.CB.X1+1
ldy #S.WND.MBAR.Y2
ldy #S.WND.InnerY1
lda (ZPWNDPtr),y
clc
adc #1
sta CB.Cache+S.CB.Y1
sta CB.Buf+S.CB.Y1
iny
lda (ZPWNDPtr),y
adc #0
sta CB.Cache+S.CB.Y1+1
sta CB.Buf+S.CB.Y1+1
ldy #S.OBJ.X2
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X2
sta CB.Buf+S.CB.X2
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X2+1
sta CB.Buf+S.CB.X2+1
ldy #S.WND.SBAR.Y1
ldy #S.WND.InnerY2
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y2
sec
sbc #1
sta CB.Buf+S.CB.Y2
iny
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y2+1
sbc #0
sta CB.Buf+S.CB.Y2+1
stz S.CB.Y2+2 Ending 0
stz CB.Buf+S.CB.Y2+2 Ending 0
>LDYA L.WND.Screen
jmp DrawCBCacheToYA
jmp DrawCBBufToYA
.1 clc
rts
@ -728,7 +734,7 @@ WND.PaintTopBarBMAtAX
rts
*--------------------------------------
WND.PaintTopBarTitle
jsr CB.Clear
jsr CB.ClearCache
ldy #S.WND.TITLE
lda (ZPWNDPtr),y
@ -790,7 +796,7 @@ WND.PaintTopBarTitle
rts
*--------------------------------------
WND.PaintMBar jsr CB.Clear
WND.PaintMBar jsr CB.ClearCache
lda #S.CB.CMD.FILLRECT
sta CB.Cache+S.CB.CMD
@ -820,7 +826,7 @@ WND.PaintMBar jsr CB.Clear
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.X2+1
ldy #S.WND.MBAR.Y1
ldy #S.WND.MBarY1
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y1
@ -828,7 +834,7 @@ WND.PaintMBar jsr CB.Clear
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y1+1
iny #S.WND.MBAR.Y2
iny #S.WND.MBarY2
lda (ZPWNDPtr),y
sta CB.Cache+S.CB.Y2
@ -850,7 +856,7 @@ WND.PaintMBar jsr CB.Clear
.1 lda (ZPMENUPtr)
beq .8
jsr CB.Clear
jsr CB.ClearCache
lda #S.CB.CMD.DRAWTEXT2
sta CB.CACHE+S.CB.CMD
@ -877,7 +883,7 @@ WND.PaintMBar jsr CB.Clear
adc (ZPWNDPtr),y
sta CB.CACHE+S.CB.X1+1
ldy #S.WND.MBAR.Y1
ldy #S.WND.MBarY1
lda (ZPWNDPtr),y
clc
adc #1
@ -941,7 +947,7 @@ WND.PaintSBar lda #S.CB.CMD.HLINE
jsr PutA2CBBuf
jsr PutA2CBBuf
jsr CB.Clear S.CB.Y2
jsr CB.ClearCache S.CB.Y2
lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
sta CB.Cache+S.CB.CMD

View File

@ -119,7 +119,7 @@ CS.START cld
.DA ShowCursor
.DA UpdateCursor
.DA MOU.ReadMouse
.DA GetScreenGC
.DA DrawLine
.DA WND.New
.DA WND.Destroy
.DA WND.SetProp
@ -128,9 +128,6 @@ CS.START cld
.DA WND.Paint
L.WND.fPaint .DA WND.fPaint
*--------------------------------------
J.Cmds .DA DrawLine
.DA DrawText2
*--------------------------------------
J.MBAR .DA MBAR.New
.DA MBAR.Paint
.DA MBAR.Close
@ -158,6 +155,7 @@ L.SYSX7B .DA SYSX7B
L.IOCTL .DA IOCTL
L.DCB.GFX .DA DCB.GFX
L.MouseClamp .DA MouseClamp
L.CB.Buf .DA CB.Buf
L.CB.Cache .DA CB.Cache
L.WND.Screen .DA WND.Screen
L.WND.Desktop .DA WND.Desktop
@ -232,7 +230,7 @@ LIB.UNLOAD dec LibCount
.8 clc
rts
*--------------------------------------
OBJ.Get >STYA .1+1
OBJ.GetInCache >STYA .1+1
ldx #S.OBJ-1
@ -292,7 +290,7 @@ OBJ.SetX2Y2 >STYA ZPObjPtr
rts
*--------------------------------------
CB.Clear ldx #S.CB-1
CB.ClearCache ldx #S.CB-1
.1 stz CB.Cache,x
dex
@ -300,7 +298,7 @@ CB.Clear ldx #S.CB-1
rts
*--------------------------------------
CB.Get >STYA .1+1
CB.GetInCache >STYA .1+1
ldx #S.CB-1
@ -356,9 +354,6 @@ GFXWrite.YA pha
>PUSHYA
>SYSCALL2 IOCTL
rts
*--------------------------------------
GetScreenGC >LDYA L.WND.Screen
rts
*--------------------------------------
.INB usr/src/lib/libgui.s.bm
.INB usr/src/lib/libgui.s.but
@ -413,6 +408,7 @@ MOUSEDATA .BS S.MOUSE
*--------------------------------------
MouseClamp .BS 8
*--------------------------------------
CB.Buf .BS S.CB
CB.Cache .BS S.CB
OBJ.Cache .BS S.OBJ
*--------------------------------------

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
@ -56,7 +55,8 @@ CS.INIT >LDYA L.LIBGUI
* clc
.9 rts
*--------------------------------------
CS.RUN
CS.RUN >LIBCALL hLIBGUI,LIBGUI.ShowCursor
CS.RUN.LOOP >SLEEP
@ -116,7 +116,7 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.
>PUSHW MouseData+S.MOUSE.X1
>PUSHW MouseData+S.MOUSE.Y1
>PUSHWI 280
>PUSHWI 90
>PUSHWI 96
>LIBCALL hLIBGUI,LIBGUI.WND.New
bcs CS.QUIT.RTS
sta hWND
@ -136,13 +136,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.WND.SetProp
>LIBCALL hLIBGUI,LIBGUI.HideCursor
>PUSHB hWND
>PUSHBI S.WND.BGCOLOR
>PUSHWI C.WHITE
>LIBCALL hLIBGUI,LIBGUI.WND.SetProp
lda hWND
>LIBCALL hLIBGUI,LIBGUI.WND.Show
lda hWND
>LIBCALL hLIBGUI,LIBGUI.WND.Paint
>LIBCALL hLIBGUI,LIBGUI.ShowCursor
clc
.9 rts
*--------------------------------------