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

View File

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

View File

@ -70,14 +70,9 @@ S.OBJ.X2 .EQ 12
S.OBJ.Y2 .EQ 14 S.OBJ.Y2 .EQ 14
S.OBJ.W .EQ 16 S.OBJ.W .EQ 16
S.OBJ.H .EQ 18 S.OBJ.H .EQ 18
S.OBJ.Parent .EQ 20 S.OBJ.Childs .EQ 20
S.OBJ.Childs .EQ 22
* *
S.OBJ .EQ 24 S.OBJ .EQ 22
*--------------------------------------
S.SCREEN.hDEV .EQ S.OBJ.Parent
*
S.SCREEN .EQ S.OBJ
*-------------------------------------- *--------------------------------------
S.WND.F.RESIZE .EQ %00000001 S.WND.F.RESIZE .EQ %00000001
S.WND.F.MOVE .EQ %00000010 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 DrawCursor.I sta CUR.CB+S.CB.OP
>LDYA L.SCR >LDYA L.WND.Screen
jsr OBJ.Get jsr OBJ.Get
>LDYA L.CUR.CB >LDYA L.CUR.CB

View File

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

View File

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

View File

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