Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-13 17:54:55 +02:00
parent da80a0ab54
commit 46f6a6bf09
8 changed files with 152 additions and 118 deletions

Binary file not shown.

View File

@ -135,16 +135,18 @@ CS.RUN jsr GFX.Open
lda #0 lda #0
sec sec
.9 rts .9
CS.RUN.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN.LOGO.SHOW CS.RUN.LOGO.SHOW
lda #S.CB.CMD.GETRECTBUFSIZE * lda #S.CB.CMD.GETRECTBUFSIZE
sta CB.LOGO+S.CB.CMD * sta CB.LOGO+S.CB.CMD
>LDYA L.CB.LOGO >LDYA L.CB.LOGO
jsr GFX.Write.YA jsr GFX.Write.YA
>SYSCALL NewStkObj >SYSCALL NewStkObj
bcs CS.RUN.RTS
stx CB.LOGO+S.CB.DstPtr stx CB.LOGO+S.CB.DstPtr
lda #S.CB.CMD.BITBLT lda #S.CB.CMD.BITBLT
@ -160,7 +162,7 @@ CS.RUN.LOGO.SHOW
lda (pPS),y lda (pPS),y
>SYSCALL FEOF >SYSCALL FEOF
bcs .99 bcs CS.RUN.RTS
tay tay
beq .80 beq .80
@ -171,7 +173,7 @@ CS.RUN.LOGO.SHOW
stz bVBL stz bVBL
lda #S.CB.OP.SET+S.CB.OP.COLOR+S.CB.OP.RESTORE lda #S.CB.OP.RESTORE
sta CB.LOGO+S.CB.OP sta CB.LOGO+S.CB.OP
>LDYA L.CB.LOGO >LDYA L.CB.LOGO
@ -208,29 +210,26 @@ CS.RUN.LOGO.SHOW
.5 sty CB.LOGO+S.CB.X1 .5 sty CB.LOGO+S.CB.X1
sta CB.LOGO+S.CB.X1+1 sta CB.LOGO+S.CB.X1+1
.6 lda CB.LOGO+S.CB.Y1 .6 lda CB.LOGO+S.CB.Y1
bit yDir bit yDir
bmi .8 bmi .8
inc inc
cmp #152 sta CB.LOGO+S.CB.Y1
bne .7 cmp #151
bne .1
.60 lda yDir
.7 lda yDir
eor #$ff eor #$ff
sta yDir sta yDir
bra .1 jmp .1
.7 sta CB.LOGO+S.CB.Y1
bra .1
.8 sec .8 sec
sbc #1 sbc #1
bcc .60
sta CB.LOGO+S.CB.Y1 sta CB.LOGO+S.CB.Y1
beq .7
jmp .1 jmp .1
.80 >SYSCALL GetChar .80 >SYSCALL GetChar
@ -238,8 +237,7 @@ CS.RUN.LOGO.SHOW
lda CB.LOGO+S.CB.DstPtr lda CB.LOGO+S.CB.DstPtr
>SYSCALL FreeStkObj >SYSCALL FreeStkObj
rts
.99 rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT lda (pEvent) CS.DOEVENT lda (pEvent)
bpl .9 bpl .9
@ -468,14 +466,14 @@ BM.Apple.AND .HS FFF0
.HS 0000 .HS 0000
.HS 0FF0 .HS 0FF0
*-------------------------------------- *--------------------------------------
CB.LOGO .DA #S.CB.CMD.BITBLT CB.LOGO .DA #S.CB.CMD.GETRECTBUFSIZE
.DA #S.CB.OP.SET+S.CB.OP.COLOR+S.CB.OP.SAVE .DA #S.CB.OP.SET+S.CB.OP.COLOR+S.CB.OP.SAVE
.DA #S.CB.M.C16 .DA #S.CB.M.C16
.DA #0 .DA #0
.DA 200 X1 .DA 200 X1
.DA 50 Y1 .DA 50 Y1
.DA 200+320 X2 For GETRECTBUFSIZE .DA 200+319 X2 For GETRECTBUFSIZE
.DA 50+40 XZ For GETRECTBUFSIZE .DA 50+39 Y2 For GETRECTBUFSIZE
.DA 0 SrcX .DA 0 SrcX
.DA 0 SrcY .DA 0 SrcY
.DA 320 SrcW .DA 320 SrcW

View File

@ -87,7 +87,10 @@ BITBLT >LDYA CB.Cache+S.CB.X1
BITBLT.0 bit #S.CB.OP.SAVE BITBLT.0 bit #S.CB.OP.SAVE
beq BITBLT.1 beq BITBLT.1
ldy CB.Cache+S.CB.DstPtr and #$f
bne .66
.66 ldy CB.Cache+S.CB.DstPtr
lda CB.Cache+S.CB.DstPtr+1 lda CB.Cache+S.CB.DstPtr+1
bne .1 bne .1

View File

@ -32,15 +32,23 @@ FILLRECT jsr HLINE
* 18 : S.CB.DstPtr = Size in Bytes to save this RECT * 18 : S.CB.DstPtr = Size in Bytes to save this RECT
*-------------------------------------- *--------------------------------------
GETRECTBUFSIZE >LDYA CB.Cache+S.CB.X1 GETRECTBUFSIZE >LDYA CB.Cache+S.CB.X1
jsr DIVMOD7YA jsr DIVMOD7YA
sta ZPTmpByte sta ZPTmpByte A = X1 div 7
>LDYA CB.Cache+S.CB.X2 >LDYA CB.Cache+S.CB.X2
jsr DIVMOD7YA jsr DIVMOD7YA
inc COL2 + 1 inc A = (X2 mod 7) + 1
sec sec
sbc ZPTmpByte (COL2+1)-COL1 sbc ZPTmpByte (COL2+1)-COL1
tax tax
>LDYA CB.Cache+S.CB.SrcH
lda CB.Cache+S.CB.Y2
sec
sbc CB.Cache+S.CB.Y1
tay
lda #0
jmp YAMultX jmp YAMultX
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -167,8 +167,8 @@ S.MITEM.KEYMOD.CA .EQ 2
S.MITEM.KEYMOD.OA .EQ 4 S.MITEM.KEYMOD.OA .EQ 4
S.MITEM.KEYMOD.CTRL .EQ 8 S.MITEM.KEYMOD.CTRL .EQ 8
S.MITEM.KEY .EQ 7 S.MITEM.KEY .EQ 7
S.MITEM.KEYSTR .EQ 8
S.MITEM.TEXT .EQ 8 CSTR S.MITEM.TEXT .EQ 9 CSTR
* ... * ...
*-------------------------------------- *--------------------------------------
BM.ID.APPLE .EQ 2 BM.ID.APPLE .EQ 2

View File

@ -91,7 +91,11 @@ MENU.MBarInit >STYA ZPMENUPtr
*-------------------------------------- *--------------------------------------
* MENU.New(int X, int Y, *MITEM mitems) * MENU.New(int X, int Y, *MITEM mitems)
*-------------------------------------- *--------------------------------------
MENU.New >LDYAI S.MENU MENU.New ldy MENU.Stack.Top
cpy #MENU.MAX
bcs .90
>LDYAI S.MENU
>SYSCALL2 getmem >SYSCALL2 getmem
bcs .9 bcs .9
@ -131,13 +135,17 @@ MENU.New >LDYAI S.MENU
txa hMenu txa hMenu
ldx MENU.Stack.Top
sta MENU.Stack,x
inc MENU.Stack.Top
* clc * clc
rts rts
.9 >POP 6
.90 lda #E.OOH
sec
.9 >POP 6
MENU.New.RTS rts MENU.New.RTS rts
*--------------------------------------
* ---------------------------------------------- * ----------------------------------------------
* |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY>| * |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY>|
* ---------------------------------------------- * ----------------------------------------------
@ -188,7 +196,7 @@ MENU.Show >SYSCALL2 GetMemPtr
inc ZPPtr1+1 inc ZPPtr1+1
bra .1 bra .1
.3 lda #12 2px Borders+5 LMARGIN (Checked) +5 RMARGIN (SubMenu) .3 lda #2+MENU.LMargin+MENU.RMargin 2px Borders+5 LMARGIN (Checked) +5 RMARGIN (SubMenu)
clc clc
adc IY adc IY
sta DX sta DX
@ -335,7 +343,6 @@ MENU.Show.GetW ldy #S.MITEM.F
.2 jsr MENU.GetKeyString .2 jsr MENU.GetKeyString
beq .8 beq .8
>LDYA L.KEYSTRING
ldx hSYSFON ldx hSYSFON
jsr FON.GetTextSize jsr FON.GetTextSize
@ -354,20 +361,22 @@ MENU.Save jsr CB.ClearCache
ldy #S.OBJ.X1 ldy #S.OBJ.X1
ldx #0 ldx #0
.1 lda (ZPMENUPtr),y .1 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.X1 sta CB.Cache+S.CB.X1,x
iny iny
inx inx
cpx #8 X1,Y1,X2,Y2 cpx #8 X1,Y1,X2,Y2
bne .1 bne .1
jsr GFXWrite.CB jsr GFXWrite.CB
>SYSCALL NewStkObj >SYSCALL NewStkObj
bcs .9 bcs .9
stx CB.Cache+S.CB.DstPtr stx CB.Cache+S.CB.DstPtr
txa
ldy #S.MENU.hSAVEBUF ldy #S.MENU.hSAVEBUF
sta (ZPMENUPtr),y sta (ZPMENUPtr),y
@ -376,20 +385,20 @@ MENU.Save jsr CB.ClearCache
lda #S.CB.OP.SAVE lda #S.CB.OP.SAVE
sta CB.Cache+S.CB.OP sta CB.Cache+S.CB.OP
ldy #S.OBJ.W ldy #S.OBJ.W
ldx #0 ldx #0
.2 lda (ZPMENUPtr),y .2 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.SrcW sta CB.Cache+S.CB.SrcW,x
iny iny
inx inx
cpx #4 W,H cpx #4 W,H
bne .2 bne .2
>DEBUG
jsr GFXWrite.CB jsr GFXWrite.CB
* clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -506,7 +515,7 @@ MENU.Show.Item ldy #S.MITEM.F
sec +1px Border sec +1px Border
adc #5 TODO : Checked adc #MENU.LMargin TODO : Checked
sta DX sta DX
iny iny
lda (ZPMENUPtr),y lda (ZPMENUPtr),y
@ -532,9 +541,6 @@ MENU.Show.Item ldy #S.MITEM.F
ldx hSYSFON ldx hSYSFON
jsr DRAW.YATextAtDXDY jsr DRAW.YATextAtDXDY
jsr MENU.GetKeyString
beq .3
lda DX lda DX
sec sec
adc IE adc IE
@ -543,7 +549,9 @@ MENU.Show.Item ldy #S.MITEM.F
adc IE+1 adc IE+1
sta DX+1 sta DX+1
>LDYA L.KEYSTRING jsr MENU.GetKeyString
beq .3
ldx hSYSFON ldx hSYSFON
jsr DRAW.YATextAtDXDY jsr DRAW.YATextAtDXDY
@ -582,56 +590,17 @@ MENU.GetText lda #S.MITEM.TEXT
rts rts
*-------------------------------------- *--------------------------------------
MENU.GetKeyString MENU.GetKeyString
ldx #0 ldy #S.MITEM.KEYSTR
lda (ZPPtr1),y
beq .8
ldy #S.MITEM.KEYMOD clc
lda (ZPPtr1),y adc ZPPtr1
beq .6 tay
lda ZPPtr1+1
bit #S.MITEM.KEYMOD.CTRL adc #0 !0
beq .4
.3 lda KEY.Ctrl,x
sta KEYSTRING,x
inx
cpx #6
bne .3
lda (ZPPtr1),y
.4 bit #S.MITEM.KEYMOD.OA
beq .5
lda #1
sta KEYSTRING,x
inx
lda #'-'
sta KEYSTRING,x
inx
lda (ZPPtr1),y
.5 bit #S.MITEM.KEYMOD.CA
beq .6
lda #2
sta KEYSTRING,x
inx
lda #'-'
sta KEYSTRING,x
inx
.6 iny
lda (ZPPtr1),y
beq .7
sta KEYSTRING,x
inx
.7 stz KEYSTRING,x .8 rts
txa
rts
*-------------------------------------- *--------------------------------------
MENU.Destroy MENU.Destroy

View File

@ -79,22 +79,68 @@ MOU.ReadMouse >PULLW ZPPtr1
bit #S.MOUSE.S.MOVE bit #S.MOUSE.S.MOVE
beq .8 beq .8
lda WND.SysBar+S.OBJ.Y1 ldx WND.Stack.Top
beq .2
* lda WND.Stack-1,x
* jsr MOU.InObjA
.2 lda WND.SysBar+S.OBJ.Y1
ldy #S.MOUSE.Y1 ldy #S.MOUSE.Y1
cmp (ZPPtr1),y cmp (ZPPtr1),y
lda WND.SysBar+S.OBJ.Y1+1 lda WND.SysBar+S.OBJ.Y1+1
iny iny
sbc (ZPPtr1),y sbc (ZPPtr1),y
bcs .1 bcs .7
jmp SYSBAR.Enter jmp SYSBAR.Enter
.1 jmp SYSBAR.Leave .7 jmp SYSBAR.Leave
.8 clc .8 clc
rts rts
.9 sec
.99 rts
*--------------------------------------
MOU.InObjA >SYSCALL GetMemPtr
MOU.InObjyA jsr OBJ.GetInCache
ldy #S.MOUSE.X1
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.X1
iny
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.X1+1
bcc .9
iny #S.MOUSE.Y1
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.Y1
iny
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.Y1+1
bcc .9
iny #S.MOUSE.X2
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.X2
iny
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.X2+1
bcs .99
iny #S.MOUSE.Y2
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.Y2
iny
lda (ZPPtr1),y
cmp OBJ.Cache+S.OBJ.Y2+1
rts
.9 sec .9 sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------

View File

@ -12,6 +12,9 @@ NEW
.INB inc/libgui.i .INB inc/libgui.i
*-------------------------------------- *--------------------------------------
WND.MAX .EQ 64 WND.MAX .EQ 64
MENU.MAX .EQ 4
MENU.LMargin .EQ 3
MENU.RMargin .EQ 3
*-------------------------------------- *--------------------------------------
.MA SWAP16 .MA SWAP16
lda ]1 lda ]1
@ -135,7 +138,6 @@ L.SYSX7 .DA SYSX7
L.SYSX7B .DA SYSX7B L.SYSX7B .DA SYSX7B
L.IOCTL .DA IOCTL L.IOCTL .DA IOCTL
L.DCB.GFX .DA DCB.GFX L.DCB.GFX .DA DCB.GFX
L.KEYSTRING .DA KEYSTRING
L.MouseClamp .DA MouseClamp L.MouseClamp .DA MouseClamp
L.CB.PTR .DA CB.PTR L.CB.PTR .DA CB.PTR
L.CB.Buf .DA CB.Buf L.CB.Buf .DA CB.Buf
@ -391,7 +393,6 @@ IOCTL .BS S.IOCTL
DCB.GFX .BS S.DCB.GFX DCB.GFX .BS S.DCB.GFX
MOUSEDATA .BS S.MOUSE MOUSEDATA .BS S.MOUSE
*-------------------------------------- *--------------------------------------
KEYSTRING .BS 11 Ctrl-O-C-K\0 (11 max)
MouseClamp .BS 8 MouseClamp .BS 8
*-------------------------------------- *--------------------------------------
CB.PTR .DA #S.CB.CMD.BITBLT CB.PTR .DA #S.CB.CMD.BITBLT
@ -404,6 +405,9 @@ CB.Buf .BS S.CB+1 +Ending 0
CB.Cache .BS S.CB CB.Cache .BS S.CB
OBJ.Cache .BS S.OBJ OBJ.Cache .BS S.OBJ
*-------------------------------------- *--------------------------------------
MENU.Stack.Top .BS 1
MENU.Stack .BS MENU.MAX
*--------------------------------------
WND.Stack.Top .BS 1 WND.Stack.Top .BS 1
WND.Stack .BS WND.MAX WND.Stack .BS WND.MAX
*-------------------------------------- *--------------------------------------
@ -422,58 +426,64 @@ WND.SysBar.Time.X1 .BS 2
WND.SysBar.bA2osX .BS 1 WND.SysBar.bA2osX .BS 1
WND.SysBar.2osX .AZ "2osX" WND.SysBar.2osX .AZ "2osX"
*-------------------------------------- *--------------------------------------
KEY.Ctrl .AZ "Ctrl-" MENU.Sys
*-------------------------------------- .1 .DA #.2-* next
MENU.Sys .DA #.1-* next
.DA #S.MITEM.F.ITEM F .DA #S.MITEM.F.ITEM F
.DA #0 S .DA #0 S
.DA #2 ID .DA #2 ID
.DA BM.ID.APPLE pICON .DA BM.ID.APPLE pICON
.DA #S.MITEM.KEYMOD.CA+S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CTRL .DA #S.MITEM.KEYMOD.CTRL+S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CA
.DA #'A' .DA #'A'
.DA #.11-.1
.AZ "About..." .AZ "About..."
.11 .AS "Ctrl-"
.1 .DA #.2-* next .DA #1,#'-',#2,#'-',#'A',#0
.DA #S.MITEM.F.SEP
.2 .DA #.3-* next .2 .DA #.3-* next
.DA #S.MITEM.F.SUBMENU F .DA #S.MITEM.F.SEP
.DA #0 S
.DA #0 ID
.DA 0 pICON
.DA 0 pMENU
.AZ "Programs"
.3 .DA #.4-* next .3 .DA #.4-* next
.DA #S.MITEM.F.SUBMENU F .DA #S.MITEM.F.SUBMENU F
.DA #0 S .DA #0 S
.DA #0 ID .DA #0 ID
.DA 0 pICON .DA 0 pICON
.DA 0 pMENU .DA 0 pMENU
.AZ "Settings" .DA #0
.AZ "Programs"
.4 .DA #.5-* next .4 .DA #.5-* next
.DA #S.MITEM.F.SUBMENU F
.DA #0 S
.DA #0 ID
.DA 0 pICON
.DA 0 pMENU
.DA #0 KEYSTR
.AZ "Settings"
.5 .DA #.6-* next
.DA #S.MITEM.F.SEP .DA #S.MITEM.F.SEP
.5 .DA #.6-* next .6 .DA #.7-* next
.DA #S.MITEM.F.ITEM F .DA #S.MITEM.F.ITEM F
.DA #0 S .DA #0 S
.DA #8 ID .DA #8 ID
.DA 0 pICON .DA 0 pICON
.DA #0 .DA #0
.DA #0 .DA #0
.DA #0 KEYSTR
.AZ "Search..." .AZ "Search..."
.6 .DA #.7-* next .7 .DA #.8-* next
.DA #S.MITEM.F.ITEM F .DA #S.MITEM.F.ITEM F
.DA #0 S .DA #0 S
.DA #10 ID .DA #10 ID
.DA 0 pICON .DA 0 pICON
.DA #S.MITEM.KEYMOD.OA .DA #S.MITEM.KEYMOD.CTRL+S.MITEM.KEYMOD.OA
.DA #'R' .DA #'R'
.DA #.77-.7
.AZ "Run..." .AZ "Run..."
.77 .AZ "Ctrl-R"
.7 .DA #0 .8 .DA #0
*-------------------------------------- *--------------------------------------
PREFS.BESTVIEWEDX .DA #$FC PREFS.BESTVIEWEDX .DA #$FC
PREFS.MENUCOLOR .DA #C.WHITE PREFS.MENUCOLOR .DA #C.WHITE