Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-09 17:28:01 +02:00
parent ec457a9392
commit 78e8988b94
6 changed files with 299 additions and 62 deletions

Binary file not shown.

View File

@ -146,25 +146,25 @@ S.MBAR.X2 .EQ 6
S.MBAR.MENU .EQ 8 S.MBAR.MENU .EQ 8
S.MBAR.TEXT .EQ 10 S.MBAR.TEXT .EQ 10
*-------------------------------------- *--------------------------------------
S.MENU.DEFS .EQ S.OBJ S.MENU.MITEMS .EQ S.OBJ
S.MENU.hSAVEBUF .EQ S.OBJ+2 S.MENU.hSAVEBUF .EQ S.OBJ+2
* *
S.MENU .EQ S.OBJ+4 S.MENU .EQ S.OBJ+4
*-------------------------------------- *--------------------------------------
S.MITEM.NEXT .EQ 0 S.MITEM.NEXT .EQ 0
S.MITEM.F .EQ 1 S.MITEM.F .EQ 1
S.MITEM.F.SEP .EQ 1 S.MITEM.F.SEP .EQ 2
S.MITEM.F.ITEM .EQ 2 S.MITEM.F.ITEM .EQ 4
S.MITEM.F.SUBMENU .EQ 3 S.MITEM.F.SUBMENU .EQ 6
S.MITEM.S .EQ 2 S.MITEM.S .EQ 2
S.MITEM.S.CHECKED .EQ %01000000 S.MITEM.S.CHECKED .EQ %01000000
S.MITEM.S.DISABLED .EQ %10000000 S.MITEM.S.DISABLED .EQ %10000000
S.MITEM.pICON .EQ 3 S.MITEM.pICON .EQ 3
S.MITEM.pMENU .EQ 5 S.MITEM.pMENU .EQ 5
S.MITEM.KEYMOD .EQ 7 S.MITEM.KEYMOD .EQ 7
S.MITEM.KEYMOD.CTRL .EQ %10000000 S.MITEM.KEYMOD.CA .EQ 2
S.MITEM.KEYMOD.OA .EQ %01000000 S.MITEM.KEYMOD.OA .EQ 4
S.MITEM.KEYMOD.CA .EQ %00100000 S.MITEM.KEYMOD.CTRL .EQ 8
S.MITEM.KEY .EQ 8 S.MITEM.KEY .EQ 8
S.MITEM.ID .EQ 9 S.MITEM.ID .EQ 9

View File

@ -96,7 +96,6 @@ MENU.New >LDYAI S.MENU
bcs .9 bcs .9
>STYA ZPMENUPtr >STYA ZPMENUPtr
* stx
lda #S.OBJ.T.MENU lda #S.OBJ.T.MENU
sta (ZPMENUPtr) S.OBJ.T sta (ZPMENUPtr) S.OBJ.T
@ -110,13 +109,11 @@ MENU.New >LDYAI S.MENU
bne .1 bne .1
>PULLA >PULLA
ldy #S.OBJ.S.MENU.DEFS ldy #S.MENU.MITEMS
sta (ZPMENUPtr),y sta (ZPMENUPtr),y
sta ZPPtr1
>PULLA >PULLA
iny iny
sta (ZPMENUPtr),y sta (ZPMENUPtr),y
sta ZPPtr1+1
>PULLA >PULLA
ldy #S.OBJ.Y1 ldy #S.OBJ.Y1
@ -127,30 +124,292 @@ MENU.New >LDYAI S.MENU
>PULLA >PULLA
ldy #S.OBJ.X1 ldy #S.OBJ.X1
and PREFS.BESTVIEWEDX
sta (ZPMENUPtr),y sta (ZPMENUPtr),y
>PULLA >PULLA
iny iny
sta (ZPMENUPtr),y sta (ZPMENUPtr),y
lda #2 1px Border txa hMenu
sta DX
sta DY
stz DX+1
stz DY+1
.2 lda (ZPPtr1) * clc
.8 clc
rts rts
.9 >POP 6 .9 >POP 6
rts MENU.New.RTS rts
*-------------------------------------- *--------------------------------------
MENU.Paint MENU.Show >SYSCALL2 GetMemPtr
MENU.Close >STYA ZPMENUPtr
jsr GetCBBuf
bcs MENU.New.RTS
>DEBUG
ldy #S.MENU.MITEMS
lda (ZPMENUPtr),y
sta ZPPtr1
iny
lda (ZPMENUPtr),y
sta ZPPtr1+1
* |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY > |
stz IY Icon Margin W
stz IE Max Text W
stz IE+1
stz INE Max Mod-Key W
lda #12 2px Borders+5 LMARGIN (Checked) +5 RMARGIN (SubMenu)
sta DX
stz DX+1
lda #2 2px Borders
sta DY Menu H
stz DY+1
.1 lda (ZPPtr1)
beq .3
jsr MENU.Show.GetW
lda DY
clc
adc SYSFON.H
sta DY
bcc .2
inc DY+1
.2 lda (ZPPtr1)
clc
adc ZPPtr1
sta ZPPtr1
bcc .1
inc ZPPtr1+1
bra .1
.3 lda DX
clc
adc IE Text W
sta DX
lda DX+1
adc IE+1
sta DX+1
lda DX
clc
adc INE Mod-Key W
sta DX
bcc .4
inc DX+1
.4 ldy #S.OBJ.Y1
lda (ZPMENUPtr),y
clc
adc DY
tax
iny
lda (ZPMENUPtr),y
adc DY+1
cpx WND.Screen+S.OBJ.H
sbc WND.Screen+S.OBJ.H+1
bcc .5
dey
lda (ZPMENUPtr),y
* sec
sbc DY
sta (ZPMENUPtr),y
iny
lda (ZPMENUPtr),y
sbc DY+1
sta (ZPMENUPtr),y
.5 jsr MENU.Show.Borders
.8 >LDYA L.WND.Screen
jmp DrawCBPtrToYA1
MENU.Show.RTS rts
*--------------------------------------
MENU.Show.GetW ldy #S.MITEM.F
lda (ZPPtr1),y
cmp #S.MITEM.F.SEP
beq MENU.Show.RTS
ldy #S.MITEM.pICON
lda (ZPPtr1),y
iny
ora (ZPPtr1),y
beq .1
lda #16
sta DX
.1 lda #S.MITEM.TEXT
clc
adc ZPPtr1
tay
lda ZPPtr1+1
adc #0
ldx hSYSFON
jsr FON.GetTextSize
lda CB.Cache+S.CB.SrcW
cmp IE
lda CB.Cache+S.CB.SrcW+1
sbc IE+1
bcc .2
lda CB.Cache+S.CB.SrcW
sta IE
lda CB.Cache+S.CB.SrcW+1
sta IE+1
.2 ldx #0
ldy #S.MITEM.KEYMOD
lda (ZPPtr1),y
beq .6
bit #S.MITEM.KEYMOD.CTRL
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 .8
sta KEYSTRING,x
inx
stz KEYSTRING,x
>LDYA L.KEYSTRING
ldx hSYSFON
jsr FON.GetTextSize
cpy INE
bcs .8
sty INE
.8 rts
*--------------------------------------
MENU.Show.Borders
lda #S.CB.CMD.HLINE TOP
jsr MENU.Show.Borders.H
ldy #S.OBJ.X1
jsr MENU.Show.Borders.Y
ldy #S.OBJ.Y1
jsr MENU.Show.Borders.Y
ldy #S.OBJ.X2
jsr MENU.Show.Borders.Y
ldy #S.OBJ.Y1
jsr MENU.Show.Borders.Y
lda #S.CB.CMD.VLINE LEFT
jsr MENU.Show.Borders.Y
ldy #S.OBJ.X1
jsr MENU.Show.Borders.Y
ldy #S.OBJ.Y1
jsr MENU.Show.Borders.Y
ldy #S.OBJ.X1
jsr MENU.Show.Borders.Y
ldy #S.OBJ.Y2
jsr MENU.Show.Borders.Y
lda #S.CB.CMD.VLINE RIGHT
jsr MENU.Show.Borders.H
ldy #S.OBJ.X2
jsr MENU.Show.Borders.Y
ldy #S.OBJ.Y1
jsr MENU.Show.Borders.Y
ldy #S.OBJ.X2
jsr MENU.Show.Borders.Y
ldy #S.OBJ.Y2
jsr MENU.Show.Borders.Y
lda #S.CB.CMD.HLINE BOTTOM
jsr MENU.Show.Borders.H
ldy #S.OBJ.X1
jsr MENU.Show.Borders.Y
ldy #S.OBJ.Y2
jsr MENU.Show.Borders.Y
ldy #S.OBJ.X2
jsr MENU.Show.Borders.Y
ldy #S.OBJ.Y2
jsr MENU.Show.Borders.Y
rts
MENU.Show.Borders.H
jsr PutA2CBBuf
lda #S.CB.OP.SET
jsr PutA2CBBuf
lda #S.CB.M.MONO
jsr PutA2CBBuf
lda PREFS.BORDERCOLOR
jmp PutA2CBBuf
MENU.Show.Borders.Y
lda (ZPMENUPtr),y
jsr PutA2CBBuf
iny
lda (ZPMENUPtr),y
jmp PutA2CBBuf
*--------------------------------------
MENU.Destroy
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/lib/libgui.s.menu SAVE usr/src/lib/libgui.s.menu

View File

@ -17,21 +17,17 @@ SYSBAR.Enter ldy #S.MOUSE.X1
bcs .9 bcs .9
jsr SYSBAR.Show.A2osX jsr SYSBAR.Show.A2osX
stz DX
stz DX+1
lda WND.SysBar+S.OBJ.Y1
sta DY
lda WND.SysBar+S.OBJ.Y1+1
sta DY+1
* >LDYA L.MENU.Sys
* jsr DRAW.YAMenuAtDXDY
* bcs .9
>LDYA L.WND.SysBar >LDYA L.WND.SysBar
jmp DrawCBPtrToYA1 jsr DrawCBPtrToYA1
>PUSHW WND.SysBar+S.OBJ.X1
>PUSHW WND.SysBar+S.OBJ.Y1
>PUSHW L.MENU.Sys
jsr MENU.New
bcs .9
jsr MENU.Show
.8 clc .8 clc
.9 rts .9 rts
@ -298,25 +294,6 @@ DRAW.YATextAtDXDY
rts rts
*-------------------------------------- *--------------------------------------
DRAW.YAMenuAtDXDY
>STYA ZPPtr1 Src Menu
stz IE popup W
stz IE+1
stz D popup H
stz D+1
.1 stz INE item W
stz INE+1
lda (ZPPtr1)
beq .8
.8 clc
rts
*--------------------------------------
MAN MAN
SAVE usr/src/lib/libgui.s.sysbar SAVE usr/src/lib/libgui.s.sysbar
LOAD usr/src/lib/libgui.s LOAD usr/src/lib/libgui.s

View File

@ -348,9 +348,6 @@ WND.Show >SYSCALL2 GetMemPtr
lda (ZPWNDPtr),y lda (ZPWNDPtr),y
sbc #0 sbc #0
sta (ZPWNDPtr),y sta (ZPWNDPtr),y
lda #0
jsr PutA2CBBuf
>LDYA L.WND.Desktop >LDYA L.WND.Desktop

View File

@ -134,6 +134,7 @@ 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
@ -388,6 +389,7 @@ 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
@ -418,12 +420,14 @@ 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 .DA #.1-* 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 0 pICON .DA 0 pICON
.DA #0 KEYMOD .DA #S.MITEM.KEYMOD.CA+S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CTRL
.DA #0 KEY .DA #"A"
.DA #2 ID .DA #2 ID
.AZ "About..." .AZ "About..."
@ -437,7 +441,7 @@ MENU.Sys .DA #.1-* next
.DA 0 pMENU .DA 0 pMENU
.AZ "Settings" .AZ "Settings"
.9 .DA #0 .3 .DA #0
*-------------------------------------- *--------------------------------------
PREFS.BESTVIEWEDX .DA #$FC PREFS.BESTVIEWEDX .DA #$FC
PREFS.SYSBARCOLOR .DA #C.WHITE PREFS.SYSBARCOLOR .DA #C.WHITE