Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-10-20 08:01:04 +02:00
parent 11bfc18b6e
commit ed74a0e2a2
12 changed files with 732 additions and 457 deletions

Binary file not shown.

Binary file not shown.

View File

@ -3,7 +3,7 @@ NEW
*--------------------------------------
IO.D2.SeekTimeR .EQ 160 LIBBLKDEV Recalibration
IO.D2.SeekTimeF .EQ 140 LIBBLKDEV Track Formatter
IO.D2.SeekTimeB .EQ 140 LIBBLKDEV Boot Block
IO.D2.SeekTimeB .EQ 95 LIBBLKDEV Boot Block
IO.D2.SeekTimeP .EQ 75 ProDOS.FX initial
IO.D2.SeekTimeI .EQ 20 ProDOS.FX increment -> until > 128
*--------------------------------------

View File

@ -123,10 +123,10 @@ S.WND.hCUR .EQ S.OBJ+16
S.WND.TitleX1 .EQ S.OBJ+18
S.WND.TitleX2 .EQ S.OBJ+20
S.WND.TBarY2 .EQ S.OBJ+22
S.WND.MBarY1 .EQ S.OBJ+22
S.WND.MBarY1 .EQ S.OBJ+22
S.WND.MBarY2 .EQ S.OBJ+24
S.WND.InnerY1 .EQ S.OBJ+24
S.WND.InnerY2 .EQ S.OBJ+26
S.WND.InnerY1 .EQ S.OBJ+24
S.WND.InnerY2 .EQ S.OBJ+26
S.WND.SBarY1 .EQ S.OBJ+26
S.WND.InnerW .EQ S.OBJ+28
S.WND.InnerH .EQ S.OBJ+30
@ -152,8 +152,12 @@ 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.Selected .EQ S.OBJ+12
S.MENU.tOffset .EQ S.OBJ+13
S.MENU.kOffset .EQ S.OBJ+14
S.MENU.rOffset .EQ S.OBJ+16
*
S.MENU .EQ S.OBJ+12
S.MENU .EQ S.OBJ+18
*--------------------------------------
S.MITEM.NEXT .EQ 0
S.MITEM.F .EQ 1

View File

@ -374,7 +374,7 @@ BB.Seek lda BB.HdrTrk get track we're on
jsr BB.Wait
jsr BB.PhasesOff
bcs BB.Read ALWAYS
bra BB.Read
*--------------------------------------
BB.PhasesOff bit IO.D2.Ph0Off,x
nop

View File

@ -89,7 +89,27 @@ BM.Min.AND .HS FF0F
.HS 0F0F
.HS FF0F
*--------------------------------------
BM.Left
BM.Left .DA #S.BM.F.BBP1
.DA #1 RowBytes
.DA 7 W
.DA 7 Y
.DA BM.Left.AND-BM.Left
.DA #%0000000
.DA #%0010000
.DA #%0011000
.DA #%0011100
.DA #%0011000
.DA #%0010000
.DA #%0000000
BM.Left.AND .DA #%1001111
.DA #%1000111
.DA #%1000011
.DA #%1000001
.DA #%1000011
.DA #%1000111
.DA #%1001111
*--------------------------------------
BM.Right .DA #S.BM.F.BBP1
.DA #1 RowBytes
@ -113,9 +133,49 @@ BM.Right.AND .DA #%1111001
.DA #%1110001
.DA #%1111001
*--------------------------------------
BM.Up
BM.Up .DA #S.BM.F.BBP1
.DA #1 RowBytes
.DA 7 W
.DA 7 Y
.DA BM.Up.AND-BM.Up
.DA #%0000000
.DA #%0000000
.DA #%0001000
.DA #%0011100
.DA #%0111110
.DA #%0000000
.DA #%0000000
BM.Up.AND .DA #%1111111
.DA #%1110111
.DA #%1100011
.DA #%1000001
.DA #%0000000
.DA #%0000000
.DA #%1111111
*--------------------------------------
BM.Down
BM.Down .DA #S.BM.F.BBP1
.DA #1 RowBytes
.DA 7 W
.DA 7 Y
.DA BM.Down.AND-BM.Down
.DA #%0000000
.DA #%0000000
.DA #%0111110
.DA #%0011100
.DA #%0001000
.DA #%0000000
.DA #%0000000
BM.Down.AND .DA #%1111111
.DA #%0000000
.DA #%0000000
.DA #%1000001
.DA #%1100011
.DA #%1110111
.DA #%1111111
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.g.bm

View File

@ -272,6 +272,72 @@ DrawText clc
*--------------------------------------
*
*--------------------------------------
DRAW.YABMAtDXDY >STYA ZPBMPtr Src BM
lda #S.CB.CMD.BITBLT
jsr CB.InitCacheA
lda #S.CB.OP.MASK+S.CB.OP.ORA+S.CB.OP.COLOR
sta CB.Cache+S.CB.OP
lda #S.CB.M.C16
sta CB.Cache+S.CB.M
ldx #3
.1 lda DX,x
sta CB.Cache+S.CB.X1,x
dex
bpl .1
ldx #3
ldy #S.BM.W+3
.2 lda (ZPBMPtr),y
sta CB.Cache+S.CB.SrcW,x
dey
dex
bpl .2
lda ZPBMPtr
sta CB.Cache+S.CB.SrcPtr
lda ZPBMPtr+1
sta CB.Cache+S.CB.SrcPtr+1
jmp PutCBCache2CBBuf
*--------------------------------------
DRAW.YATextAtDXDY
phx
jsr CB.ClearCache
>STYA CB.Cache+S.CB.TxtPtr
plx
stx CB.Cache+S.CB.hFont
lda #S.CB.CMD.DRAWTEXT2
sta CB.Cache+S.CB.CMD
lda #0
ror
eor #S.CB.OP.INVERSE
ora #S.CB.OP.SET
* lda #S.CB.OP.XOR
sta CB.Cache+S.CB.OP
lda #S.CB.M.MONO
sta CB.Cache+S.CB.M
ldx #3
.1 lda DX,x DX,DY -> S.CB.X1,S.CB.Y1
sta CB.Cache+S.CB.X1,x
dex
bpl .1
jmp PutCBCache2CBBuf
*--------------------------------------
DRAW.ToGlobal >LDYA ZPWNDPtr
>STYA ZPPtr1

View File

@ -93,13 +93,18 @@ MENU.MBarInit >STYA ZPMENUPtr
*--------------------------------------
MENU.New ldy MENU.Stack.Top
cpy #MENU.MAX
bcs .90
bcc .10
jmp .90
>LDYAI S.MENU
.10 >LDYAI S.MENU
>SYSCALL2 getmem
bcs .99
>STYA ZPMENUPtr
txa hMenu
ldx MENU.Stack.Top
sta MENU.Stack,x
lda #S.OBJ.T.MENU
sta (ZPMENUPtr) S.OBJ.T
@ -119,7 +124,7 @@ MENU.New ldy MENU.Stack.Top
iny
sta (ZPMENUPtr),y
>PULLW ZPPtr1
>PULLW ZPRECTPtr Parent RECT
>PULLA
ldy #S.OBJ.Y1
@ -138,22 +143,24 @@ MENU.New ldy MENU.Stack.Top
lda ZPMENUPtr
clc
adc #S.MENU.pX1
sta ZPMENUPtr
bcc .2
sta ZPPtr1
inc ZPMENUPtr+1
lda ZPMENUPtr+1
adc /S.MENU.pX1
sta ZPPtr1+1
.2 ldy #S.RECT-1
ldy #S.RECT-1
.3 lda (ZPPtr1),y
sta (ZPMENUPtr),y
.3 lda (ZPRECTPtr),y
sta (ZPPtr1),y
dey
bpl .3
txa hMenu
jsr MENU.SetMenuSizePos
ldx MENU.Stack.Top
sta MENU.Stack,x
lda MENU.Stack,x
inc MENU.Stack.Top
clc
@ -163,25 +170,132 @@ MENU.New ldy MENU.Stack.Top
sec
.99 >POP 8
MENU.New.RTS rts
*--------------------------------------
* hMENU8, ItemID8, Prop8, Value16
*--------------------------------------
MENU.SetMItemProp
ldy #4
lda (pStack),y hMENU
>SYSCALL2 GetMemPtr
>STYA ZPMENUPtr
bra .7
jsr MENU.GetMItems
.1 lda (ZPPtr1)
beq .8
ldy #S.MITEM.F
lda (ZPPtr1),y
cmp #S.MITEM.F.SEP
beq .2
ldy #S.MITEM.ID
lda (ZPPtr1),y
ldy #3 ID8
cmp (pStack),y
beq .7
.2 jsr MENU.NextMItem
bra .1
.7 ldy #2 Prop8
lda (pStack),y
tay
>PULLA Value16
sta (ZPPtr1),y
iny
>PULLA
sta (ZPPtr1),y
.8 >RET 3
* ----------------------------------------------
* |Icon ChkMrk "Menu Item" KEYMOD1-KEYMOD2-KEY>|
* ----------------------------------------------
MENU.Show >SYSCALL2 GetMemPtr
>STYA ZPMENUPtr
jsr MENU.Save
bcs .9
jsr GetCBBuf
bcs MENU.New.RTS
ldy #S.MENU.MITEMS
lda (ZPMENUPtr),y
sta ZPPtr1
iny
lda (ZPMENUPtr),y
sta ZPPtr1+1
bcs .9
stz DX
stz DX+1
jsr MENU.ShowBorders
jsr MENU.GetMItems
jsr MENU.GetDYW
.6 lda (ZPPtr1)
beq .8
jsr MENU.GetDX
jsr MENU.ShowMItem
jsr MENU.NextMItem
bra .6
.8 >LDYA L.WND.Screen
jmp DrawCBPtrToYA1
.9 rts
*--------------------------------------
MENU.Enter jsr MENU.GetDX
jsr MENU.GetDYW
lda Counter W
clc
adc DX
sta IE IE = X2
lda Counter+1
adc DX+1
sta IE+1
jsr MENU.GetMItems
.1 lda (ZPPtr1)
beq .9
ldy #S.MITEM.F
lda (ZPPtr1),y
cmp #S.MITEM.F.SEP
beq .7
lda DY
sec
adc SYSFON.H
sta INE INE = Y2
lda DY+1
adc #0
sta INE+1
>LDYAI DX
jsr MOU.InRectYA
bcs .7
ldy #S.MITEM.ID
lda (ZPPtr1),y
ldy #S.MENU.Selected
sta (ZPMENUPtr),y
jsr GetCBBuf
jsr MENU.ShowMItem1
>LDYA L.WND.Screen
jmp DrawCBPtrToYA1
.7 jsr MENU.NextMItem
bra .1
.9 rts
*--------------------------------------
MENU.SetMenuSizePos
stz IY Icon Margin W
stz IE Max Text W
@ -192,37 +306,25 @@ MENU.Show >SYSCALL2 GetMemPtr
lda #2 2px Borders
sta DY Menu H
stz DY+1
jsr MENU.GetMItems
.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
jsr MENU.GetMItemW
jsr MENU.NextMItem
bra .1
.3 lda #2+MENU.LMargin+MENU.RMargin 2px Borders+5 LMARGIN (Checked) +5 RMARGIN (SubMenu)
.3 lda #2+MENU.LMargin+MENU.RMargin 2px Borders+5 LMARGIN (Checked) +5 RMARGIN (SubMenu)
clc
adc IY
adc IY Icon W
sta DX
bcc .30
inc DX+1
stz DX+1
.30 lda DX
lda DX
sec 1px sep
adc IE Text W
adc IE Max Text W
sta DX
lda DX+1
@ -231,7 +333,7 @@ MENU.Show >SYSCALL2 GetMemPtr
lda DX
sec 1px sep
adc INE Mod-Key W
adc INE Max Mod-Key W
sta DX
bcc .4
@ -247,18 +349,36 @@ MENU.Show >SYSCALL2 GetMemPtr
lda DY
sta (ZPMENUPtr),y
tax
iny
lda DY+1
sta (ZPMENUPtr),y
pha
txa
ldy #S.MENU.tOffset
lda IY
sta (ZPMENUPtr),y
iny #S.MENU.kOffset
lda IE
sta (ZPMENUPtr),y
iny
lda IE+1
sta (ZPMENUPtr),y
iny #S.MENU.rOffset
lda INE
sta (ZPMENUPtr),y
iny
lda INE+1
sta (ZPMENUPtr),y
ldy #S.OBJ.Y1
lda DY
clc
adc (ZPMENUPtr),y
tax
pla
iny
lda DY+1
adc (ZPMENUPtr),y
cpx WND.Screen+S.OBJ.H
@ -280,59 +400,13 @@ MENU.Show >SYSCALL2 GetMemPtr
.5 >LDYA ZPMENUPtr
jsr OBJ.SetX2Y2
jsr MENU.Save
bcs MENU.Show.RTS
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
MENU.Show.RTS rts
rts
*--------------------------------------
MENU.Show.GetW ldy #S.MITEM.F
MENU.GetMItemW ldy #S.MITEM.F
lda (ZPPtr1),y
cmp #S.MITEM.F.SEP
beq MENU.Show.RTS
beq .8
ldy #S.MITEM.pICON
lda (ZPPtr1),y
@ -371,151 +445,162 @@ MENU.Show.GetW ldy #S.MITEM.F
.8 rts
*--------------------------------------
MENU.Show.Borders
lda #S.CB.CMD.FILLRECT
jsr PutA2CBBuf
MENU.ShowBorders
lda #S.CB.CMD.HLINE
jsr CB.InitCacheA
lda #S.CB.OP.SET
jsr PutA2CBBuf
sta CB.Cache+S.CB.OP
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
sta CB.Cache+S.CB.M
lda PREFS.BORDERCOLOR
jmp PutA2CBBuf
sta CB.Cache+S.CB.COLOR
MENU.Show.Borders.Y
ldy #S.OBJ.X2+1
ldx #5
.1 lda (ZPMENUPtr),y
sta CB.Cache+S.CB.X1,x
dey
dex
bpl .1
lda CB.Cache+S.CB.Y1
sta CB.Cache+S.CB.Y2
lda CB.Cache+S.CB.Y1+1
sta CB.Cache+S.CB.Y2+1 top X1,Y1,X2,Y1
jsr PutCBCache2CBBuf
ldy #S.OBJ.Y2
lda (ZPMENUPtr),y
jsr PutA2CBBuf
sta CB.Cache+S.CB.Y1
sta CB.Cache+S.CB.Y2
iny
lda (ZPMENUPtr),y
jmp PutA2CBBuf
sta CB.Cache+S.CB.Y1+1
sta CB.Cache+S.CB.Y2+1 bottom X1,Y2,X2,Y2
jmp PutCBCache2CBBuf
*--------------------------------------
MENU.Show.Item ldy #S.MITEM.F
MENU.ShowMItem ldy #S.MITEM.F
lda (ZPPtr1),y
cmp #S.MITEM.F.SEP
bne .1
bne MENU.ShowMItem1
lda #S.CB.CMD.HLINE
jsr PutA2CBBuf
jsr CB.InitCacheA
lda #S.CB.OP.SET
jsr PutA2CBBuf
sta CB.Cache+S.CB.OP
lda #S.CB.M.MONO
jsr PutA2CBBuf
sta CB.Cache+S.CB.M
lda PREFS.BORDERCOLOR
jsr PutA2CBBuf
sta CB.Cache+S.CB.COLOR
ldy #S.OBJ.X1
jsr MENU.Show.Borders.Y
lda SYSFON.H
lsr
ldx #3
.1 lda DX,x
sta CB.Cache+S.CB.X1,x
dex
bpl .1
lda DX
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
adc Counter
sta CB.Cache+S.CB.X2
lda DX+1
adc Counter+1
sta CB.Cache+S.CB.X2+1
jmp PutCBCache2CBBuf
*--------------------------------------
.1 ldy #S.OBJ.X1
MENU.ShowMItem1 lda #S.CB.CMD.FILLRECT
jsr CB.InitCacheA
lda #S.CB.OP.SET
sta CB.Cache+S.CB.OP
lda #S.CB.M.MONO
sta CB.Cache+S.CB.M
ldy #S.MENU.Selected
lda (ZPMENUPtr),y
sec +1px Border
ldx PREFS.MENUCOLOR
ldy #S.MITEM.ID
eor (ZPPtr1),y
bne .15
txa
eor #C.WHITE
tax
.15 stx CB.Cache+S.CB.COLOR
ldx #3
.10 lda DX,x
sta CB.Cache+S.CB.X1,x
dex
bpl .10
lda DX
clc
adc Counter
sta CB.Cache+S.CB.X2
lda DX+1
adc Counter+1
sta CB.Cache+S.CB.X2+1
lda DY
sec
adc SYSFON.H
sta CB.Cache+S.CB.Y2
lda DY+1
adc #0
sta CB.Cache+S.CB.Y2+1
jsr PutCBCache2CBBuf
inc DY
bne .12
inc DY+1
.12 lda DX
clc
adc #MENU.LMargin TODO : Checked
sta DX
iny
lda (ZPMENUPtr),y
adc #0
bcc .11
sta DX+1
jsr MENU.GetIcon
.11 jsr MENU.GetIcon
beq .2
jsr DRAW.YABMAtDXDY
.2 lda DX
clc
adc IY Icon reserved W
ldy #S.MENU.tOffset
adc (ZPPtr1),y
sta DX
lda DX+1
adc #0
sta DX+1
bcc .21
jsr MENU.GetText
inc DX+1
.21 jsr MENU.GetText
ldx hSYSFON
jsr DRAW.YATextAtDXDY
lda DX
sec
adc IE
ldy #S.MENU.tOffset
adc (ZPPtr1),y
sta DX
lda DX+1
adc IE+1
iny
adc (ZPPtr1),y
sta DX+1
jsr MENU.GetKeyString
@ -531,17 +616,24 @@ MENU.Show.Item ldy #S.MITEM.F
lda DX
sec
adc INE
ldy #S.MENU.rOffset
adc (ZPPtr1),y
sta DX
lda DX+1
adc IE+1
sta DX+1
iny
adc (ZPPtr1),y
sta DX+1
ldx #BM.ID.RIGHT
>LDYA L.BMs,x
jsr DRAW.YABMAtDXDY
.8 clc
.8 lda DY
bne .80
dec DY+1
.80 dec DY
clc
rts
*--------------------------------------
MENU.GetIcon ldy #S.MITEM.pICON+1
@ -586,10 +678,8 @@ MENU.GetKeyString
.8 rts
*--------------------------------------
MENU.Save jsr CB.ClearCache
lda #S.CB.CMD.GETRECTBUFSIZE
sta CB.Cache+S.CB.CMD
MENU.Save lda #S.CB.CMD.GETRECTBUFSIZE
jsr CB.InitCacheA
ldy #S.OBJ.X1
ldx #0
@ -641,7 +731,12 @@ MENU.Destroy ldx MENU.Stack.Top
>SYSCALL GetMemPtr
>STYA ZPMENUPtr
jsr CB.ClearCache
bit CUR.bVisible
bpl .3
jsr HideCursor.I
.3 jsr CB.ClearCache
lda #S.CB.CMD.BITBLT
sta CB.Cache+S.CB.CMD
@ -682,10 +777,100 @@ MENU.Destroy ldx MENU.Stack.Top
lda MENU.Stack-1,x
>SYSCALL2 FreeMem
dec MENU.Stack.Top
bit CUR.bVisible
bpl .8
jsr ShowCursor.I
.8 clc
rts
*--------------------------------------
MENU.GetDX ldy #S.OBJ.X1
lda (ZPMENUPtr),y
clc
adc #1
sta DX
iny
lda (ZPMENUPtr),y
adc #0
sta DX+1
rts
*--------------------------------------
MENU.GetDYW ldy #S.OBJ.Y1
lda (ZPMENUPtr),y
clc
adc #1
sta DY
iny
lda (ZPMENUPtr),y
adc #0
sta DY+1
ldy #S.OBJ.W
lda (ZPMENUPtr),y
sec
sbc #3 2Px border + correction from W
sta Counter
iny
lda (ZPMENUPtr),y
sbc #0
sta Counter+1
rts
*--------------------------------------
MENU.FindMItemByID
jsr MENU.GetMItems
.1 lda (ZPPtr1)
beq .9
txa
ldy #S.MITEM.ID
cmp (ZPPtr1),y
beq .8
jsr MENU.NextMItem
bra .1
.8 clc
rts
.9 sec
rts
*--------------------------------------
MENU.GetMItems ldy #S.MENU.MITEMS
lda (ZPMENUPtr),y
sta ZPPtr1
iny
lda (ZPMENUPtr),y
sta ZPPtr1+1
rts
*--------------------------------------
MENU.NextMItem ldy #S.MITEM.F
lda (ZPPtr1),y
sec
eor #S.MITEM.F.SEP
beq .1
lda SYSFON.Hp2
clc
.1 adc DY
sta DY
bcc .2
inc DY+1
.2 lda (ZPPtr1)
clc
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 rts
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.menu
LOAD usr/src/lib/libgui.s

View File

@ -1,8 +1,7 @@
NEW
AUTO 3,1
*--------------------------------------
MOU.Init
.1 >PUSHBI 0
MOU.Init >PUSHBI 0
>LDYA L.DEVNAME.MOUSE
>SYSCALL2 open
bcc .2
@ -10,8 +9,9 @@ MOU.Init
inc DEVNAME.MOUSE+8
lda DEVNAME.MOUSE+8
cmp #'8'
bne .1
bne MOU.Init
* sec
rts
.2 sta hDevMouse
@ -66,7 +66,7 @@ MOU.ReadMouse >PULLW ZPPtr1
bne .9 no, exit....
lda hDevMouse
beq .9
beq .99 CS
>PUSHA
>PUSHBI IOCTL.READ
@ -86,42 +86,30 @@ MOU.ReadMouse >PULLW ZPPtr1
bit #S.MOUSE.S.MOVE
beq .8
.2 ldx MENU.Stack.Top
beq .3
lda MENU.Stack-1,x
jsr MOU.CheckOverMenu
bcc .8
jsr MENU.Destroy
bra .2
.9 sec
.99 rts
.3 jsr MOU.CheckOverWND
jsr MOU.CheckOverSysBut
bcc .8
.4 lda WND.SysBar+S.OBJ.Y1
jsr MOU.CheckOverWND
bcc .8
rts
ldy #S.MOUSE.Y1
cmp (ZPPtr1),y
lda WND.SysBar+S.OBJ.Y1+1
iny
sbc (ZPPtr1),y
bcs .7
jmp SYSBAR.Enter
.7 jmp SYSBAR.Leave
.8 clc
rts
.9 sec
.99 rts
*--------------------------------------
MOU.CheckOverMenu
.1 ldx MENU.Stack.Top
beq .9
lda MENU.Stack-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
>STYA ZPMENUPtr
pha
tya
clc
@ -130,17 +118,34 @@ MOU.CheckOverMenu
pla
adc /S.OBJ.X1
jsr MOU.InRectYA
bcc .8
bcs .2
lda ZPPtr1
jmp MENU.Enter
.2 lda ZPMENUPtr
clc
adc #S.MENU.pX1
tay
lda ZPPtr1+1
lda ZPMENUPtr+1
adc /S.MENU.pX1
jsr MOU.InRectYA
.8 rts
jsr MOU.InRectYA
bcc .8
jsr MENU.Destroy
bra .1
.9 sec
.8 rts
*--------------------------------------
MOU.CheckOverSysBut
>LDYA L.RECT.SysBut
jsr MOU.InRectYA
bcs .9
jmp SYSBUT.Enter
.9 jmp SYSBUT.Leave
*--------------------------------------
MOU.CheckOverWND
ldx WND.Stack.Top

View File

@ -1,47 +1,56 @@
NEW
AUTO 3,1
*--------------------------------------
SYSBAR.Enter ldy #S.MOUSE.X1
SYSBUT.Enter ldy #S.MOUSE.X1
lda (ZPPtr1),y
cmp WND.SysBar.A2osX.X2
cmp RECT.SysBut+S.RECT.X2
iny
lda (ZPPtr1),y
sbc WND.SysBar.A2osX.X2+1
sbc RECT.SysBut+S.RECT.X2+1
bcs .8
sec
ror WND.SYSBAR.bA2osX
ror WND.SYSBAR.bSysBut
jsr GetCBBuf
bcs .9
jsr SYSBAR.Show.A2osX
jsr SYSBAR.ShowSysBut
>LDYA L.WND.SysBar
jsr DrawCBPtrToYA1
>PUSHW WND.SysBar+S.OBJ.X1
>PUSHW WND.SysBar+S.OBJ.Y1
>PUSHW L.RECT.SysBut
>PUSHW L.RECT.SysBut Parent RECT
>PUSHW L.MENU.Sys
jsr MENU.New
bcs .9
sta hSysMenu
>PUSHA hSysMenu
>PUSHBI 6
>PUSHBI S.MITEM.pMENU
>PUSHW L.MENU.Sys.Settings
jsr MENU.SetMItemProp
lda hSysMenu
jsr MENU.Show
.8 clc
.9 rts
*--------------------------------------
SYSBAR.Leave bit WND.SYSBAR.bA2osX
SYSBUT.Leave bit WND.SYSBAR.bSysBut
bpl .8
stz WND.SYSBAR.bA2osX
stz WND.SYSBAR.bSysBut
jsr GetCBBuf
bcs .9
jsr SYSBAR.Show.A2osX
jsr SYSBAR.ShowSysBut
>LDYA L.WND.SysBar
@ -53,9 +62,11 @@ SYSBAR.Leave bit WND.SYSBAR.bA2osX
SYSBAR.Show jsr GetCBBuf
bcs .9
jsr SYSBAR.Show.A2osX
jsr SYSBAR.ShowSysBut
jsr SYSBAR.Show.W
jsr SYSBAR.ShowSysWNDs
jsr SYSBAR.ShowSysClk
>LDYA L.WND.SysBar
@ -63,232 +74,115 @@ SYSBAR.Show jsr GetCBBuf
.9 rts
*--------------------------------------
SYSBAR.Show.A2osX
SYSBAR.ShowSysBut
lda #S.CB.CMD.FILLRECT
jsr PutA2CBBuf
jsr CB.InitCacheA
lda #S.CB.OP.SET
jsr PutA2CBBuf
sta CB.Cache+S.CB.OP
lda #S.CB.M.MONO
jsr PutA2CBBuf
sta CB.Cache+S.CB.M
lda PREFS.SYSBARCOLOR
bit WND.SysBar.bA2osX
bit WND.SysBar.bSysBut
bpl .1
eor #$ff
.1 jsr PutA2CBBuf
.1 sta CB.Cache+S.CB.COLOR
lda #0 X1
jsr PutA2CBBuf
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y1
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y1+1
jsr PutA2CBBuf
lda WND.SysBar.A2osX.X2
jsr PutA2CBBuf
lda WND.SysBar.A2osX.X2+1
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y2
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y2+1
jsr PutA2CBBuf
ldx #S.RECT-1
lda WND.SysBar+S.OBJ.X1
.2 lda RECT.SysBut,x
sta CB.Cache+S.CB.X1,x
dex
bpl .2
jsr PutCBCache2CBBuf
lda RECT.SysBut+S.RECT.X1
clc
adc #4
sta DX
lda WND.SysBar+S.OBJ.X1+1
lda RECT.SysBut+S.RECT.X1+1
adc #0
sta DX+1
lda WND.SysBar+S.OBJ.Y1
lda RECT.SysBut+S.RECT.Y1
clc
adc #1
sta DY
lda WND.SysBar+S.OBJ.Y1+1
lda RECT.SysBut+S.RECT.Y1+1
adc #0
sta DY+1
>LDYA L.BM.Apple
jsr DRAW.YABMAtDXDY
lda WND.SysBar+S.OBJ.X1
lda RECT.SysBut+S.RECT.X1
clc
adc #21
sta DX
lda WND.SysBar+S.OBJ.X1+1
lda RECT.SysBut+S.RECT.X1+1
adc #0
sta DX+1
inc DY
bne .2
bne .3
inc DY+1
.2 lda WND.SysBar.bA2osX
.3 lda WND.SysBar.bSysBut
asl
>LDYA L.WND.SysBar.2osX
ldx hSYSFON
jsr DRAW.YATextAtDXDY
rts
jmp DRAW.YATextAtDXDY
*--------------------------------------
SYSBAR.Show.W lda #S.CB.CMD.FILLRECT
jsr PutA2CBBuf
SYSBAR.ShowSysWNDs
lda #S.CB.CMD.FILLRECT
jsr CB.InitCacheA
lda #S.CB.OP.SET
jsr PutA2CBBuf
sta CB.Cache+S.CB.OP
lda #S.CB.M.MONO
jsr PutA2CBBuf
sta CB.Cache+S.CB.M
lda PREFS.SYSBARCOLOR
jsr PutA2CBBuf
sta CB.Cache+S.CB.COLOR
lda WND.SysBar.W.X1
jsr PutA2CBBuf
lda WND.SysBar.W.X1+1
jsr PutA2CBBuf
ldx #S.RECT-1
lda WND.SysBar+S.OBJ.Y1
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y1+1
jsr PutA2CBBuf
lda WND.SysBar.W.X2
jsr PutA2CBBuf
lda WND.SysBar.W.X2+1
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y2
jsr PutA2CBBuf
lda WND.SysBar+S.OBJ.Y2+1
jmp PutA2CBBuf
*--------------------------------------
DRAW.YABMAtDXDY >STYA ZPBMPtr Src BM
lda #S.CB.CMD.BITBLT
jsr PutA2CBBuf
lda #S.CB.OP.MASK+S.CB.OP.ORA+S.CB.OP.COLOR
jsr PutA2CBBuf
lda #S.CB.M.C16
jsr PutA2CBBuf
lda #0
jsr PutA2CBBuf
ldx #4
ldy #0
.1 lda DX,y S.CB.X1,S.CB.Y1
jsr PutA2CBBuf
iny
.1 lda RECT.SysWNDs,x
sta CB.Cache+S.CB.X1,x
dex
bne .1
lda #0 S.CB.X2
jsr PutA2CBBuf
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.Y2
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.SrcX
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.SrcY
jsr PutA2CBBuf
ldx #4
ldy #S.BM.W
.2 lda (ZPBMPtr),y S.CB.SrcW,S.CB.SrcH
jsr PutA2CBBuf
iny
dex
bne .2
lda ZPBMPtr S.CB.SrcPtr
jsr PutA2CBBuf
lda ZPBMPtr+1
jsr PutA2CBBuf
lda #0 S.CB.DstPtr
jsr PutA2CBBuf
jsr PutA2CBBuf
rts
*--------------------------------------
DRAW.YATextAtDXDY
pha Src Text
phy
lda #S.CB.CMD.DRAWTEXT2
jsr PutA2CBBuf
bpl .1
jmp PutCBCache2CBBuf
*--------------------------------------
SYSBAR.ShowSysClk
lda #S.CB.CMD.FILLRECT
jsr CB.InitCacheA
lda #S.CB.OP.SET
sta CB.Cache+S.CB.OP
lda #0
ror
eor #$80
ora #S.CB.OP.SET
* lda #S.CB.OP.XOR
jsr PutA2CBBuf
lda #S.CB.M.MONO
jsr PutA2CBBuf
txa
jsr PutA2CBBuf S.CB.hFont
ldy #0
ldx #4
.1 lda DX,y DX,DY -> S.CB.X1,S.CB.Y1
jsr PutA2CBBuf
iny
sta CB.Cache+S.CB.M
lda PREFS.SYSBARCOLOR
sta CB.Cache+S.CB.COLOR
ldx #S.RECT-1
.1 lda RECT.SysClk,x
sta CB.Cache+S.CB.X1,x
dex
bne .1
lda #0
jsr PutA2CBBuf S.CB.X2
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.Y2
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.SrcX
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.SrcY
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.SrcW
jsr PutA2CBBuf
bpl .1
jsr PutA2CBBuf S.CB.SrcH
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.SrcPtr
jsr PutA2CBBuf
jsr PutA2CBBuf S.CB.DstPtr
jsr PutA2CBBuf
pla
jsr PutA2CBBuf S.CB.TxtPtr
pla
jmp PutA2CBBuf
jmp PutCBCache2CBBuf
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s.sysbar

View File

@ -20,7 +20,9 @@ WND.Init >PUSHBI 0
.9 rts
*--------------------------------------
WND.Setup stz WND.Stack.Top
WND.Setup
* stz WND.Stack.Top
* stz MENU.Stack.Top
>LDYA DCB.GFX+S.DCB.GFX.W
>STYA WND.Screen+S.OBJ.W
@ -36,7 +38,17 @@ WND.Setup stz WND.Stack.Top
sec
sbc WND.SysBar+S.OBJ.H
sta WND.Desktop+S.OBJ.H
sta WND.SysBar+S.OBJ.Y1
sta RECT.SysBut+S.RECT.Y1
sta RECT.SysWNDs+S.RECT.Y1
sta RECT.SysClk+S.RECT.Y1
lda DCB.GFX+S.DCB.GFX.H
dec
sta RECT.SysBut+S.RECT.Y2
sta RECT.SysWNDs+S.RECT.Y2
sta RECT.SysClk+S.RECT.Y2
>LDYA L.WND.Screen
>STYA WND.Desktop+S.OBJ.hPARENT
@ -56,15 +68,36 @@ WND.Setup stz WND.Stack.Top
lda CB.Cache+S.CB.SrcW
clc
adc #24 4 + BM width + 4
sta WND.SysBar.W.X1
sta RECT.SysBut+S.RECT.X2
sta RECT.SysWNDs+S.RECT.X1
>LDYA L.WND.Screen+S.OBJ.X2
>STYA WND.SysBar.W.X2
lda #CUR.T.ARROW
sta WND.Desktop+S.WND.hCUR
sta WND.SysBar+S.WND.hCUR
>LDYA L.WND.SysBar.Clk
ldx hSYSFON
jsr FON.GetTextSize
lda CB.Cache+S.CB.SrcW
sec for sbc below
adc #8 4 + 00:00 + 4
sta RECT.SysWNDs+S.RECT.X2
lda DCB.GFX+S.DCB.GFX.W
sec
sbc RECT.SysWNDs+S.RECT.X2
sta RECT.SysWNDs+S.RECT.X2
sta RECT.SysClk+S.RECT.X1
lda DCB.GFX+S.DCB.GFX.W+1
sbc #0
sta RECT.SysWNDs+S.RECT.X2+1
sta RECT.SysClk+S.RECT.X1+1
lda DCB.GFX+S.DCB.GFX.W
sec
sbc #0
sta RECT.SysClk+S.RECT.X2
lda DCB.GFX+S.DCB.GFX.W
sbc #0
sta RECT.SysClk+S.RECT.X2+1
jsr SYSBAR.Show
rts

View File

@ -86,17 +86,18 @@ ZPBMPtr .BS 2
ZPRECTPtr .BS 2
ZPPtr1 .BS 2
CLIP.Line.P1 .BS 1
CLIP.Line.P2 .BS 1
DX .BS 2
DY .BS 2
IY .BS 1
IE .BS 2
D .BS 2
INE .BS 2
D .BS 2
Counter .BS 2
CLIP.Line.P1 .BS 1
CLIP.Line.P2 .BS 1
IY .BS 1
hCBBuf .BS 1
ZPCBBufPtr .BS 2
@ -149,10 +150,12 @@ 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.WND.SysBar.Clk .DA WND.SysBar.Clk
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.MENU.Sys.Settings .DA MENU.Sys.Settings
*--------------------------------------
L.BMs .EQ *-2
L.BM.Apple .DA BM.Apple
@ -227,11 +230,13 @@ LIB.UNLOAD dec LibCount
.8 clc
rts
*--------------------------------------
CB.InitCacheA sta CB.Cache
*--------------------------------------
CB.ClearCache ldx #S.CB-1
.1 stz CB.Cache,x
dex
bpl .1
bne .1
rts
*--------------------------------------
@ -428,12 +433,9 @@ WND.Desktop .DA #S.OBJ.T.WND
*--------------------------------------
WND.SysBar .DA #S.OBJ.T.WND
.BS S.WND-1
WND.SysBar.A2osX.X2 .EQ *
WND.SysBar.W.X1 .BS 2
WND.SysBar.W.X2 .EQ *
WND.SysBar.Time.X1 .BS 2
WND.SysBar.bA2osX .BS 1
WND.SysBar.2osX .AZ "2osX"
WND.SysBar.Clk .AZ "00:00"
WND.SysBar.bSysBut .BS 1
*--------------------------------------
RECT.SysBut .BS S.RECT
*--------------------------------------
@ -441,6 +443,7 @@ RECT.SysWNDs .BS S.RECT
*--------------------------------------
RECT.SysClk .BS S.RECT
*--------------------------------------
hSysMenu .BS 1
MENU.Sys
.1 .DA #.2-* next
.DA #S.MITEM.F.ITEM F
@ -460,7 +463,7 @@ MENU.Sys
.3 .DA #.4-* next
.DA #S.MITEM.F.SUBMENU F
.DA #0 S
.DA #0 ID
.DA #4 ID
.DA 0 pICON
.DA 0 pMENU
.DA #0
@ -469,7 +472,7 @@ MENU.Sys
.4 .DA #.5-* next
.DA #S.MITEM.F.SUBMENU F
.DA #0 S
.DA #0 ID
.DA #6 ID
.DA 0 pICON
.DA 0 pMENU
.DA #0 KEYSTR
@ -500,15 +503,40 @@ MENU.Sys
.77 .AZ "Ctrl-R"
.8 .DA #0
*--------------------------------------
MENU.Sys.Settings
.1 .DA #.2-* next
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #62 ID
.DA 0 pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "Colors..."
.2 .DA #.3-* next
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #64 ID
.DA 0 pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "SubItem2..."
.3 .DA #0
*--------------------------------------
PREFS.BESTVIEWEDX .DA #$FC
PREFS.bSYSBARTOP .DA #0
PREFS.MBARXMARGIN .DA #5
PREFS.MENUCOLOR .DA #C.WHITE
PREFS.SYSBARCOLOR .DA #C.WHITE
PREFS.MBARXMARGIN .DA #5
PREFS.BORDERCOLOR .DA #C.BLACK
PREFS.TBARCOLORA .DA #C16.D.BLUE
PREFS.TBARCOLORI .DA #C16.L.BLUE
PREFS.TBARCOLORA .DA #C16.L.BLUE
PREFS.TBARCOLORI .DA #C16.AQUA
PREFS.MBARCOLOR .DA #C.WHITE
PREFS.SBARCOLOR .DA #C.WHITE
PREFS.DESKTOPCOLOR .DA #C16.D.BLUE
*--------------------------------------
MAN
SAVE usr/src/lib/libgui.s