Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-09-06 14:24:04 +02:00
parent 875009f09b
commit efab21a425
9 changed files with 56 additions and 39 deletions

Binary file not shown.

Binary file not shown.

View File

@ -222,20 +222,31 @@ LBUF.DrawAtY.AND.ORA
lda LBUF.MASK,x get MASK bits
ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
and (ZPBasePtr),y Clear screen at C1
cpx LBUF.C2
bne .1
ora LBUF.C2.MASK special case : C1=C2
and (ZPBasePtr),y
sta ZPTmpByte
lda LBUF.DATA,x
and LBUF.C1.DATA
and LBUF.C2.DATA
ora ZPTmpByte
sta (ZPBasePtr),y update screen
rts
.1 and (ZPBasePtr),y Clear screen at C1
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora ZPTmpByte ora with screen bits
sta (ZPBasePtr),y update screen
inx
cpx LBUF.C2
beq .2 C1=C2, go setup C2
bra .3
bcs .8 C1+1 > C2, we are done...
.1 ldy COL.BANK,x
.2 ldy COL.BANK,x
sta $C000,y
txa
lsr
@ -243,14 +254,15 @@ LBUF.DrawAtY.AND.ORA
lda (ZPBasePtr),y
and LBUF.MASK,x
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
sta (ZPBasePtr),y
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
.3 sta (ZPBasePtr),y update screen
inx
cpx LBUF.C2
bne .1
bne .2
.2 ldy COL.BANK,x
ldy COL.BANK,x
sta $C000,y
txa
lsr
@ -262,7 +274,7 @@ LBUF.DrawAtY.AND.ORA
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
ora ZPTmpByte
sta (ZPBasePtr),y update screen

View File

@ -554,6 +554,7 @@ DRV.CS.END
CONTROL.80C .DA #SETIOUDIS
.DA #CLRTEXT
* .DA #SETHIRES
.DA #CLR80DISP
.DA #SETAN3
.DA #CLRAN3

View File

@ -70,14 +70,9 @@ S.OBJ.X2 .EQ 12
S.OBJ.Y2 .EQ 14
S.OBJ.W .EQ 16
S.OBJ.H .EQ 18
S.OBJ.Parent .EQ 20
S.OBJ.Childs .EQ 22
S.OBJ.Childs .EQ 20
*
S.OBJ .EQ 24
*--------------------------------------
S.SCREEN.hDEV .EQ S.OBJ.Parent
*
S.SCREEN .EQ S.OBJ
S.OBJ .EQ 22
*--------------------------------------
S.WND.F.RESIZE .EQ %00000001
S.WND.F.MOVE .EQ %00000010

View File

@ -133,7 +133,7 @@ ShowCursor.I sta CUR.CB+S.CB.OP
DrawCursor.I sta CUR.CB+S.CB.OP
>LDYA L.SCR
>LDYA L.WND.Screen
jsr OBJ.Get
>LDYA L.CUR.CB

View File

@ -6,59 +6,63 @@ WND.Init >PUSHBI 0
>SYSCALL2 open
bcs .9
sta SCR+S.SCREEN.hDEV
sta WND.Screen+S.OBJ.hPARENT
>LDYA L.DCB.GFX
>STYA IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.GETDCB
sta IOCTL+S.IOCTL.STATCODE
>PUSHB SCR+S.SCREEN.hDEV
>PUSHB WND.Screen+S.OBJ.hPARENT
>PUSHBI IOCTL.STATUS
>PUSHW L.IOCTL
>SYSCALL2 IOCTL
.9 rts
*--------------------------------------
WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W
>STYA SCR+S.OBJ.W
>STYA WND.Screen+S.OBJ.W
>STYA WND.Desktop+S.OBJ.W
>STYA WND.SysBar+S.OBJ.W
lda SYSFON.H
clc
adc #6
sta WND.SysBar+S.OBJ.H
lda DCB.GFX+S.DCB.GFX.H
sta SCR+S.OBJ.H
sta WND.Screen+S.OBJ.H
sec
sbc WND.SysBar+S.OBJ.H
sta WND.Desktop+S.OBJ.H
sta WND.SysBar+S.OBJ.X1
lda DCB.GFX+S.DCB.GFX.H+1
sta WND.SysBar+S.OBJ.H+1
sbc #0
sta WND.Desktop+S.OBJ.H+1
sta WND.SysBar+S.OBJ.X1+1
>LDYA L.SCR
>LDYA L.WND.Screen
jsr OBJ.SetX2Y2
>LDYA L.WND.Desktop
>STYA SCR.Childs
>STYA WND.Screen.Childs
jsr OBJ.SetX2Y2
>LDYA L.WND.SysBar
>STYA SCR.Childs+2
>STYA WND.Screen.Childs+2
jsr OBJ.SetX2Y2
lda #CUR.T.ARROW
sta WND.Desktop+S.WND.hCUR
sta WND.SysBar+S.WND.hCUR
* sta $C057
rts
*--------------------------------------
WND.Quit lda SCR+S.SCREEN.hDEV
WND.Quit lda WND.Screen+S.OBJ.hPARENT
beq .8
pha
>PUSHBI IOCTL.CLOSE
>PUSHWZ
@ -73,12 +77,16 @@ WND.New >STYA ZPPtr1
>LDYAI S.WND
>SYSCALL2 getmem
bcs .9
>STYA ZPWNDPtr
ldy #S.WND-1
.1 lda (ZPPtr1),y
sta (ZPWNDPtr),y
dey
bpl .1
.9 rts
*--------------------------------------
WND.Paint >STYA ZPPtr1

View File

@ -128,7 +128,7 @@ L.IOCTL .DA IOCTL
L.DCB.GFX .DA DCB.GFX
L.MouseClamp .DA MouseClamp
L.CB.Cache .DA CB.Cache
L.SCR .DA SCR
L.WND.Screen .DA WND.Screen
L.WND.Desktop .DA WND.Desktop
L.WND.SysBar .DA WND.SysBar
*--------------------------------------
@ -270,14 +270,14 @@ CB.Get >STYA .1+1
GFXWrite.CB >LDYA L.CB.Cache
GFXWrite.YA pha
>PUSHB SCR+S.SCREEN.hDEV
>PUSHB WND.Screen+S.OBJ.hPARENT
>PUSHBI IOCTL.WRITE
pla
>PUSHYA
>SYSCALL2 IOCTL
rts
*--------------------------------------
GetScreenGC >LDYA L.SCR
GetScreenGC >LDYA L.WND.Screen
rts
*--------------------------------------
.INB usr/src/lib/libgui.s.bm
@ -335,10 +335,11 @@ MouseClamp .BS 8
CB.Cache .BS S.CB
OBJ.Cache .BS S.OBJ
*--------------------------------------
SCR .DA #S.OBJ.T.SCREEN
.BS S.SCREEN-1
WND.Screen .DA #S.OBJ.T.SCREEN
.BS S.WND-1
*--------------------------------------
SCR.Childs .BS 2 WND.Desktop
WND.Screen.Childs
.BS 2 WND.Desktop
.BS 2 WND.SysBar
.DA 0
*--------------------------------------

View File

@ -445,9 +445,9 @@ MEM.GetMemByID sta ZPMemMgrSPtr
sta ZPMemMgrSPtr+1
rts
*--------------------------------------
Mem.SetOwnerPS0 lda #0
.HS 2C BIT ABS
Mem.SetOwner lda CORE.LastPSID
.HS 2C BIT ABS
Mem.SetOwnerPS0 lda #0
ldy #S.MEM.OWNERPID
sta (ZPMemMgrSPtr),y
rts