Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-12 08:04:19 +02:00
parent 78e8988b94
commit 8f4e953ea2
9 changed files with 387 additions and 166 deletions

Binary file not shown.

View File

@ -65,6 +65,7 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
lda CB.Cache+S.CB.OP
.3 and #$F
beq .8
tax
jmp (J.LBUF.DrawAtY,x)
@ -87,7 +88,7 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
inx
bcc .5
rts
.8 rts
*--------------------------------------
LBUF.DrawAtY.SET
LBUF.DrawAtY.AND.SET

View File

@ -336,14 +336,14 @@ J.Cmds .DA SETPIXEL
.DA BITBLT
.DA GETRECTBUFSIZE
*--------------------------------------
J.LBUF.DrawAtY .DA LBUF.DrawAtY.XOR
J.LBUF.DrawAtY .DA $ffff
.DA LBUF.DrawAtY.XOR
.DA LBUF.DrawAtY.SET
.DA LBUF.DrawAtY.ORA
.DA $ffff
.DA LBUF.DrawAtY.AND.XOR
.DA LBUF.DrawAtY.AND.SET
.DA LBUF.DrawAtY.AND.ORA
* .DA $ffff
L.Color.Pixels .DA Color.Pixels
.DA 0 end or relocation
*--------------------------------------

View File

@ -52,9 +52,9 @@ S.CB.CMD.DRAWLINE .EQ 20
S.CB.CMD.DRAWTEXT2 .EQ 22
S.CB.CMD.OSD .EQ 128
S.CB.OP .EQ 1
S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen
S.CB.OP.SET .EQ 2 replace screen with bitmap
S.CB.OP.ORA .EQ 4 combine screen & bitmap -> Screen
S.CB.OP.XOR .EQ 2 screen EOR bitmap -> Screen
S.CB.OP.SET .EQ 4 replace screen with bitmap
S.CB.OP.ORA .EQ 6 combine screen & bitmap -> Screen
S.CB.OP.MASK .EQ %00001000 Apply BitMap mask before painting
S.CB.OP.SAVE .EQ %00010000 Save Screen to DstPtr before painting
S.CB.OP.RESTORE .EQ %00100000 Restore Screen From DstPtr

View File

@ -159,18 +159,20 @@ S.MITEM.F.SUBMENU .EQ 6
S.MITEM.S .EQ 2
S.MITEM.S.CHECKED .EQ %01000000
S.MITEM.S.DISABLED .EQ %10000000
S.MITEM.pICON .EQ 3
S.MITEM.pMENU .EQ 5
S.MITEM.KEYMOD .EQ 7
S.MITEM.ID .EQ 3
S.MITEM.pICON .EQ 4
S.MITEM.pMENU .EQ 6
S.MITEM.KEYMOD .EQ 6
S.MITEM.KEYMOD.CA .EQ 2
S.MITEM.KEYMOD.OA .EQ 4
S.MITEM.KEYMOD.CTRL .EQ 8
S.MITEM.KEY .EQ 8
S.MITEM.ID .EQ 9
S.MITEM.KEY .EQ 7
S.MITEM.TEXT .EQ 10 CSTR
S.MITEM.TEXT .EQ 8 CSTR
* ...
*--------------------------------------
BM.ID.APPLE .EQ 2
*--------------------------------------
S.BUT.F.DISABLED .EQ %10000000
*
S.BUT.S.PUSHED .EQ %10000000

View File

@ -84,7 +84,7 @@ MENU.MBarInit >STYA ZPMENUPtr
.8 lda #$80
ldy #S.MBAR.S
sta (ZPPtr1),y
sta (ZPMENUPtr),y
.80 clc
rts
@ -138,12 +138,15 @@ MENU.New >LDYAI S.MENU
MENU.New.RTS rts
*--------------------------------------
* ----------------------------------------------
* |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY>|
* ----------------------------------------------
MENU.Show >SYSCALL2 GetMemPtr
>STYA ZPMENUPtr
jsr GetCBBuf
bcs MENU.New.RTS
>DEBUG
ldy #S.MENU.MITEMS
lda (ZPMENUPtr),y
sta ZPPtr1
@ -151,7 +154,8 @@ MENU.Show >SYSCALL2 GetMemPtr
lda (ZPMENUPtr),y
sta ZPPtr1+1
* |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY > |
stz DX
stz DX+1
stz IY Icon Margin W
@ -160,17 +164,13 @@ MENU.Show >SYSCALL2 GetMemPtr
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
@ -188,8 +188,15 @@ MENU.Show >SYSCALL2 GetMemPtr
inc ZPPtr1+1
bra .1
.3 lda DX
.3 lda #12 2px Borders+5 LMARGIN (Checked) +5 RMARGIN (SubMenu)
clc
adc IY
sta DX
bcc .30
inc DX+1
.30 lda DX
sec 1px sep
adc IE Text W
sta DX
@ -198,27 +205,42 @@ MENU.Show >SYSCALL2 GetMemPtr
sta DX+1
lda DX
clc
sec 1px sep
adc INE Mod-Key W
sta DX
bcc .4
inc DX+1
.4 ldy #S.OBJ.Y1
lda (ZPMENUPtr),y
clc
adc DY
tax
.4 ldy #S.OBJ.W
sta (ZPMENUPtr),y
iny
lda (ZPMENUPtr),y
adc DY+1
lda DX+1
sta (ZPMENUPtr),y
iny #S.OBJ.H
lda DY
sta (ZPMENUPtr),y
tax
iny
lda DY+1
sta (ZPMENUPtr),y
pha
txa
ldy #S.OBJ.Y1
clc
adc (ZPMENUPtr),y
tax
pla
iny
adc (ZPMENUPtr),y
cpx WND.Screen+S.OBJ.H
sbc WND.Screen+S.OBJ.H+1
bcc .5
dey
ldy #S.OBJ.Y1
lda (ZPMENUPtr),y
* sec
@ -231,8 +253,49 @@ MENU.Show >SYSCALL2 GetMemPtr
sbc DY+1
sta (ZPMENUPtr),y
.5 jsr MENU.Show.Borders
.5 >LDYA ZPMENUPtr
jsr OBJ.SetX2Y2
jsr MENU.Show.Borders
ldy #S.MENU.MITEMS
lda (ZPMENUPtr),y
sta ZPPtr1
iny
lda (ZPMENUPtr),y
sta ZPPtr1+1
ldy #S.OBJ.Y1
lda (ZPMENUPtr),y
clc
adc #1
sta DY
iny
lda (ZPMENUPtr),y
adc #0
sta DY+1
.6 lda (ZPPtr1)
beq .8
jsr MENU.Show.Item
lda DY
clc
adc SYSFON.H
sta DY
bcc .7
inc DY+1
.7 lda (ZPPtr1)
clc
adc ZPPtr1
sta ZPPtr1
bcc .6
inc ZPPtr1+1
bra .6
.8 >LDYA L.WND.Screen
jmp DrawCBPtrToYA1
@ -249,31 +312,228 @@ MENU.Show.GetW ldy #S.MITEM.F
ora (ZPPtr1),y
beq .1
lda #16
sta DX
lda #17 Reserve space for Icon W + 1px SEP
sta IY
.1 lda #S.MITEM.TEXT
.1 jsr MENU.GetText
ldx hSYSFON
jsr FON.GetTextSize
ldx CB.Cache+S.CB.SrcW
cpx IE
lda CB.Cache+S.CB.SrcW+1
sbc IE+1
bcc .2
stx IE Set Max text W
lda CB.Cache+S.CB.SrcW+1
sta IE+1
.2 jsr MENU.GetKeyString
beq .8
>LDYA L.KEYSTRING
ldx hSYSFON
jsr FON.GetTextSize
lda CB.Cache+S.CB.SrcW
cmp INE
bcc .8
sta INE set Max Mod-key W
.8 rts
*--------------------------------------
MENU.Show.Borders
lda #S.CB.CMD.FILLRECT
jsr PutA2CBBuf
lda #S.CB.OP.SET
jsr PutA2CBBuf
lda #S.CB.M.MONO
jsr PutA2CBBuf
lda PREFS.MENUCOLOR
jsr PutA2CBBuf
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.Y2
jsr MENU.Show.Borders.Y
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.H
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
jmp MENU.Show.Borders.Y
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.Show.Item ldy #S.MITEM.F
lda (ZPPtr1),y
cmp #S.MITEM.F.SEP
bne .1
lda #S.CB.CMD.HLINE
jsr PutA2CBBuf
lda #S.CB.OP.SET
jsr PutA2CBBuf
lda #S.CB.M.MONO
jsr PutA2CBBuf
lda PREFS.BORDERCOLOR
jsr PutA2CBBuf
ldy #S.OBJ.X1
jsr MENU.Show.Borders.Y
lda SYSFON.H
lsr
clc
adc DY
jsr PutA2CBBuf
lda DY+1
adc #0
jsr PutA2CBBuf
ldy #S.OBJ.X2
jsr MENU.Show.Borders.Y
ldy #S.OBJ.Y1
jmp MENU.Show.Borders.Y
*--------------------------------------
.1 ldy #S.OBJ.X1
lda (ZPMENUPtr),y
sec +1px Border
adc #5 TODO : Checked
sta DX
iny
lda (ZPMENUPtr),y
adc #0
sta DX+1
jsr MENU.GetIcon
beq .2
jsr DRAW.YABMAtDXDY
.2 lda DX
clc
adc IY Icon reserved W
sta DX
lda DX+1
adc #0
sta DX+1
jsr MENU.GetText
ldx hSYSFON
jsr DRAW.YATextAtDXDY
jsr MENU.GetKeyString
beq .3
lda DX
sec
adc IE
sta DX
lda DX+1
adc IE+1
sta DX+1
>LDYA L.KEYSTRING
ldx hSYSFON
jsr DRAW.YATextAtDXDY
.3
clc
rts
*--------------------------------------
MENU.GetIcon ldy #S.MITEM.pICON+1
lda (ZPPtr1),y
bne .1
dey
lda (ZPPtr1),y
beq .8
tax
ldy L.BMs,x
lda L.BMs+1,x NON ZERO
.8 rts
.1 pha
dey
lda (ZPPtr1),y
tay
pla NON ZERO
rts
*--------------------------------------
MENU.GetText 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
rts
*--------------------------------------
MENU.GetKeyString
ldx #0
ldy #S.MITEM.KEYMOD
lda (ZPPtr1),y
@ -296,7 +556,7 @@ MENU.Show.GetW ldy #S.MITEM.F
lda #1
sta KEYSTRING,x
inx
lda #"-"
lda #'-'
sta KEYSTRING,x
inx
@ -308,108 +568,26 @@ MENU.Show.GetW ldy #S.MITEM.F
lda #2
sta KEYSTRING,x
inx
lda #"-"
lda #'-'
sta KEYSTRING,x
inx
.6 iny
lda (ZPPtr1),y
beq .8
beq .7
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
.7 stz KEYSTRING,x
txa
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
clc
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.menu

View File

@ -172,7 +172,7 @@ SYSBAR.Show.W lda #S.CB.CMD.FILLRECT
lda WND.SysBar+S.OBJ.Y2+1
jmp PutA2CBBuf
*--------------------------------------
DRAW.YABMAtDXDY >STYA ZPPtr1 Src BM
DRAW.YABMAtDXDY >STYA ZPBMPtr Src BM
lda #S.CB.CMD.BITBLT
jsr PutA2CBBuf
@ -211,16 +211,16 @@ DRAW.YABMAtDXDY >STYA ZPPtr1 Src BM
ldy #S.BM.W
.2 lda (ZPPtr1),y S.CB.SrcW,S.CB.SrcH
.2 lda (ZPBMPtr),y S.CB.SrcW,S.CB.SrcH
jsr PutA2CBBuf
iny
dex
bne .2
lda ZPPtr1 S.CB.SrcPtr
lda ZPBMPtr S.CB.SrcPtr
jsr PutA2CBBuf
lda ZPPtr1+1
lda ZPBMPtr+1
jsr PutA2CBBuf
lda #0 S.CB.DstPtr
@ -230,7 +230,8 @@ DRAW.YABMAtDXDY >STYA ZPPtr1 Src BM
rts
*--------------------------------------
DRAW.YATextAtDXDY
>STYA ZPPtr1 Src Text
pha Src Text
phy
lda #S.CB.CMD.DRAWTEXT2
jsr PutA2CBBuf
@ -252,7 +253,7 @@ DRAW.YATextAtDXDY
ldy #0
ldx #4
.1 lda DX,y S.CB.X1,S.CB.Y1
.1 lda DX,y DX,DY -> S.CB.X1,S.CB.Y1
jsr PutA2CBBuf
iny
dex
@ -277,22 +278,16 @@ DRAW.YATextAtDXDY
jsr PutA2CBBuf S.CB.SrcH
jsr PutA2CBBuf
lda ZPPtr1 S.CB.SrcPtr
jsr PutA2CBBuf
lda ZPPtr1+1
jsr PutA2CBBuf
lda #0 S.CB.DstPtr
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.SrcPtr
jsr PutA2CBBuf
lda ZPPtr1
jsr PutA2CBBuf S.CB.TxtPtr
lda ZPPtr1+1
jsr PutA2CBBuf S.CB.DstPtr
jsr PutA2CBBuf
rts
pla
jsr PutA2CBBuf S.CB.TxtPtr
pla
jmp PutA2CBBuf
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.sysbar

View File

@ -78,6 +78,7 @@ ZPCBPtr .BS 2
ZPObjPtr .BS 2
ZPWNDPtr .BS 2
ZPMENUPtr .BS 2
ZPBMPtr .BS 2
CLIP.Line.P1 .BS 1
CLIP.Line.P2 .BS 1
@ -146,6 +147,7 @@ L.WND.SysBar .DA WND.SysBar
L.WND.SysBar.2osX .DA WND.SysBar.2osX
L.MENU.Sys .DA MENU.Sys
*--------------------------------------
L.BMs .EQ *-2
L.BM.Apple .DA BM.Apple
L.BM.Close .DA BM.Close
L.BM.Max .DA BM.Max
@ -425,10 +427,10 @@ KEY.Ctrl .AZ "Ctrl-"
MENU.Sys .DA #.1-* next
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA 0 pICON
.DA #S.MITEM.KEYMOD.CA+S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CTRL
.DA #"A"
.DA #2 ID
.DA BM.ID.APPLE pICON
.DA #S.MITEM.KEYMOD.CA+S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CTRL
.DA #'A'
.AZ "About..."
.1 .DA #.2-* next
@ -437,13 +439,44 @@ MENU.Sys .DA #.1-* next
.2 .DA #.3-* next
.DA #S.MITEM.F.SUBMENU F
.DA #0 S
.DA #0 ID
.DA 0 pICON
.DA 0 pMENU
.AZ "Programs"
.3 .DA #.4-* next
.DA #S.MITEM.F.SUBMENU F
.DA #0 S
.DA #0 ID
.DA 0 pICON
.DA 0 pMENU
.AZ "Settings"
.3 .DA #0
.4 .DA #.5-* next
.DA #S.MITEM.F.SEP
.5 .DA #.6-* next
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #8 ID
.DA 0 pICON
.DA #0
.DA #0
.AZ "Search..."
.6 .DA #.7-* next
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #10 ID
.DA 0 pICON
.DA #S.MITEM.KEYMOD.OA
.DA #'R'
.AZ "Run..."
.7 .DA #0
*--------------------------------------
PREFS.BESTVIEWEDX .DA #$FC
PREFS.MENUCOLOR .DA #C.WHITE
PREFS.SYSBARCOLOR .DA #C.WHITE
PREFS.MBARXMARGIN .DA #5
PREFS.BORDERCOLOR .DA #C.BLACK

View File

@ -42,6 +42,7 @@ CS.START cld
.DA CS.QUIT
L.LIBGUI .DA LIBGUI
L.MouseData .DA MouseData
L.LOGOFILE .DA LOGOFILE
L.WND.TITLE .DA WND.TITLE
L.WND.MBAR .DA WND.MBAR
L.WND.STATUS .DA WND.STATUS
@ -53,11 +54,20 @@ CS.INIT >LDYA L.LIBGUI
sta hLIBGUI
* clc
.9 rts
.9
CS.INIT.RTS rts
*--------------------------------------
CS.RUN >LIBCALL hLIBGUI,LIBGUI.ShowCursor
>PUSHW L.LOGOFILE
>PUSHBI O.RDONLY
>PUSHBI $CB Type
>PUSHWZ Aux type
>SYSCALL LoadStkObj
bcs CS.INIT.RTS
stx hLogo
CS.RUN.LOOP >SLEEP
>PUSHW L.MouseData
@ -163,6 +173,8 @@ hLIBGUI .BS 1
*--------------------------------------
MouseData .BS S.MOUSE
*--------------------------------------
hLogo .BS 1
LOGOFILE .AZ "${ROOT}root/bmp/A2OSX.LOGO"
hWND .BS 1
WND.TITLE .AZ "Window Title"
*--------------------------------------