Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-15 08:16:45 +02:00
parent 46f6a6bf09
commit b69b58ea96
7 changed files with 172 additions and 78 deletions

Binary file not shown.

View File

@ -234,19 +234,7 @@ BITBLT.2 ldy #S.BM-1
inc BLT.BMMaskPtr+1
.4 ldx BLT.ScrBitOfs
beq BITBLT.LOOP0
ldy Shift.L.LO-1,x X = 1->6
sty ZPScrShiftPtr
ldy Shift.L.HI-1,x X = 1->6
sty ZPScrShiftPtr+1
lda Shift7BitsCol1,x get #%00001111, BM bits that go in Col1
sta BITBLT.LOOPx.2+1
sta BITBLT.LOOPx.6+1
lda Shift7BitsCol2,x get #%01110000, BM bits that go in Col2
sta BITBLT.LOOPx.3+1
sta BITBLT.LOOPx.7+1
jmp BITBLT.LOOPx
bne BITBLT.LOOPx
*------------ Shift 0
@ -313,14 +301,25 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
inc BLT.BMDataPtr+1
.5 jmp BITBLT.LOOP0
.5 bra BITBLT.LOOP0
.8 clc
rts
*--------------------------------------
BITBLT.LOOPx ldy Shift.L.LO-1,x X = 1->6
sty ZPScrShiftPtr
ldy Shift.L.HI-1,x X = 1->6
sty ZPScrShiftPtr+1
lda Shift7BitsCol1,x get #%00001111, BM bits that go in Col1
sta BITBLT.LOOPx.2+1
sta BITBLT.LOOPx.6+1
lda Shift7BitsCol2,x get #%01110000, BM bits that go in Col2
sta BITBLT.LOOPx.3+1
sta BITBLT.LOOPx.7+1
*------------ Shift 1->6 Comment : SCRBitOfs=X=3
BITBLT.LOOPx lda CB.Cache+S.CB.OP X = BLT.ScrBitOfs
BITBLT.LOOPx.0 lda CB.Cache+S.CB.OP X = BLT.ScrBitOfs
bit #S.CB.OP.MASK
beq BITBLT.LOOPx.4
@ -405,7 +404,7 @@ BITBLT.LOOPx.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites
inc BLT.BMDataPtr+1
.2 jmp BITBLT.LOOPx
.2 jmp BITBLT.LOOPx.0
.8 clc
rts

View File

@ -138,18 +138,22 @@ S.WND.fPaint .EQ S.OBJ+40
*
S.WND .EQ S.OBJ+42
*--------------------------------------
S.MBAR.NEXT .EQ 0
S.MBAR.S .EQ 1
S.MBAR.X1 .EQ 2
S.MBAR.XT .EQ 4
S.MBAR.X2 .EQ 6
S.MBAR.MENU .EQ 8
S.MBAR.TEXT .EQ 10
S.MBAR.NEXT .EQ 0
S.MBAR.S .EQ 1
S.MBAR.X1 .EQ 2
S.MBAR.XT .EQ 4
S.MBAR.X2 .EQ 6
S.MBAR.MENU .EQ 8
S.MBAR.TEXT .EQ 10
*--------------------------------------
S.MENU.MITEMS .EQ S.OBJ
S.MENU.hSAVEBUF .EQ S.OBJ+2
S.MENU.pX1 .EQ S.OBJ+4
S.MENU.pY1 .EQ S.OBJ+6
S.MENU.pX2 .EQ S.OBJ+8
S.MENU.pY2 .EQ S.OBJ+10
*
S.MENU .EQ S.OBJ+4
S.MENU .EQ S.OBJ+12
*--------------------------------------
S.MITEM.NEXT .EQ 0
S.MITEM.F .EQ 1

View File

@ -89,7 +89,7 @@ MENU.MBarInit >STYA ZPMENUPtr
.80 clc
rts
*--------------------------------------
* MENU.New(int X, int Y, *MITEM mitems)
* MENU.New(int X, int Y, *S.RECT parent *S.MITEM mitems)
*--------------------------------------
MENU.New ldy MENU.Stack.Top
cpy #MENU.MAX
@ -119,6 +119,8 @@ MENU.New ldy MENU.Stack.Top
iny
sta (ZPMENUPtr),y
>PULLW ZPPtr1
>PULLA
ldy #S.OBJ.Y1
sta (ZPMENUPtr),y
@ -132,6 +134,21 @@ MENU.New ldy MENU.Stack.Top
>PULLA
iny
sta (ZPMENUPtr),y
lda ZPMENUPtr
clc
adc #S.MENU.pX1
sta ZPMENUPtr
bcc .2
inc ZPMENUPtr+1
.2 ldy #S.RECT-1
.3 lda (ZPPtr1),y
sta (ZPMENUPtr),y
dey
bpl .3
txa hMenu
@ -144,7 +161,7 @@ MENU.New ldy MENU.Stack.Top
.90 lda #E.OOH
sec
.9 >POP 6
.9 >POP 10
MENU.New.RTS rts
* ----------------------------------------------
* |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY>|
@ -354,54 +371,6 @@ MENU.Show.GetW ldy #S.MITEM.F
.8 rts
*--------------------------------------
MENU.Save jsr CB.ClearCache
lda #S.CB.CMD.GETRECTBUFSIZE
sta CB.Cache+S.CB.CMD
ldy #S.OBJ.X1
ldx #0
.1 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.X1,x
iny
inx
cpx #8 X1,Y1,X2,Y2
bne .1
jsr GFXWrite.CB
>SYSCALL NewStkObj
bcs .9
stx CB.Cache+S.CB.DstPtr
txa
ldy #S.MENU.hSAVEBUF
sta (ZPMENUPtr),y
lda #S.CB.CMD.BITBLT
sta CB.Cache+S.CB.CMD
lda #S.CB.OP.SAVE
sta CB.Cache+S.CB.OP
ldy #S.OBJ.W
ldx #0
.2 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.SrcW,x
iny
inx
cpx #4 W,H
bne .2
jsr GFXWrite.CB
clc
.9 rts
*--------------------------------------
MENU.Show.Borders
lda #S.CB.CMD.FILLRECT
jsr PutA2CBBuf
@ -602,9 +571,104 @@ MENU.GetKeyString
.8 rts
*--------------------------------------
MENU.Destroy
MENU.Save jsr CB.ClearCache
lda #S.CB.CMD.GETRECTBUFSIZE
sta CB.Cache+S.CB.CMD
ldy #S.OBJ.X1
ldx #0
.1 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.X1,x
iny
inx
cpx #8 X1,Y1,X2,Y2
bne .1
jsr GFXWrite.CB
>SYSCALL NewStkObj
bcs .9
stx CB.Cache+S.CB.DstPtr
txa
ldy #S.MENU.hSAVEBUF
sta (ZPMENUPtr),y
lda #S.CB.CMD.BITBLT
sta CB.Cache+S.CB.CMD
lda #S.CB.OP.SAVE
sta CB.Cache+S.CB.OP
ldy #S.OBJ.W
ldx #0
.2 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.SrcW,x
iny
inx
cpx #4 W,H
bne .2
jsr GFXWrite.CB
clc
.9 rts
*--------------------------------------
MENU.Destroy ldx MENU.Stack.Top
beq .8
lda MENU.Stack-1,x
>SYSCALL GetMemPtr
>STYA ZPMENUPtr
jsr CB.ClearCache
lda #S.CB.CMD.BITBLT
sta CB.Cache+S.CB.CMD
lda #S.CB.OP.RESTORE
sta CB.Cache+S.CB.OP
ldy #S.OBJ.X1
ldx #0
.1 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.X1,x
iny
inx
cpx #8 X1,Y1,X2,Y2
bne .1
ldy #S.OBJ.W
ldx #0
.2 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.SrcW,x
iny
inx
cpx #4 W,H
bne .2
ldy #S.MENU.hSAVEBUF
lda (ZPMENUPtr),y
sta CB.Cache+S.CB.DstPtr
jsr GFXWrite.CB
lda CB.Cache+S.CB.DstPtr
>SYSCALL2 FreeStkObj
ldx MENU.Stack.Top
lda MENU.Stack-1,x
>SYSCALL2 FreeMem
dec MENU.Stack.Top
.8 clc
rts
*--------------------------------------
MAN

View File

@ -79,15 +79,27 @@ MOU.ReadMouse >PULLW ZPPtr1
bit #S.MOUSE.S.MOVE
beq .8
ldx WND.Stack.Top
beq .2
.1 ldx MENU.Stack.Top
beq .3
lda MENU.Stack-1,x
jsr MOU.InObjA
bcc .8
jsr MENU.Destroy
bra .1
.3 ldx WND.Stack.Top
beq .4
* lda WND.Stack-1,x
* jsr MOU.InObjA
.2 lda WND.SysBar+S.OBJ.Y1
.4 lda WND.SysBar+S.OBJ.Y1
ldy #S.MOUSE.Y1
cmp (ZPPtr1),y
@ -139,6 +151,11 @@ MOU.InObjyA jsr OBJ.GetInCache
iny
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.Y2+1
bcc .99
lda OBJ.Cache+
rts
.9 sec

View File

@ -23,6 +23,7 @@ SYSBAR.Enter ldy #S.MOUSE.X1
>PUSHW WND.SysBar+S.OBJ.X1
>PUSHW WND.SysBar+S.OBJ.Y1
>PUSHW L.RECT.SysBut
>PUSHW L.MENU.Sys
jsr MENU.New
bcs .9

View File

@ -147,6 +147,9 @@ L.WND.Screen .DA WND.Screen
L.WND.Desktop .DA WND.Desktop
L.WND.SysBar .DA WND.SysBar
L.WND.SysBar.2osX .DA WND.SysBar.2osX
L.RECT.SysBut .DA RECT.SysBut
L.RECT.SysWNDs .DA RECT.SysWNDs
L.RECT.SysClk .DA RECT.SysClk
L.MENU.Sys .DA MENU.Sys
*--------------------------------------
L.BMs .EQ *-2
@ -426,6 +429,12 @@ WND.SysBar.Time.X1 .BS 2
WND.SysBar.bA2osX .BS 1
WND.SysBar.2osX .AZ "2osX"
*--------------------------------------
RECT.SysBut .BS S.RECT
*--------------------------------------
RECT.SysWNDs .BS S.RECT
*--------------------------------------
RECT.SysClk .BS S.RECT
*--------------------------------------
MENU.Sys
.1 .DA #.2-* next
.DA #S.MITEM.F.ITEM F