mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-25 05:32:20 +00:00
9a7d20a7e1
FORMAT: new switches & checks SH:BREAK in FOR and WHILE ASM / S-C MASM: new directives, CString support and .HX LC / UC:bugfix DHGR.DRV:bugfix LIBGUI:wip CC:wip
381 lines
6.1 KiB
Plaintext
381 lines
6.1 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
*--------------------------------------
|
||
* Y,A = MBAR definition
|
||
*--------------------------------------
|
||
MBAR.New >STYA ZPPtr1 MBAR definition
|
||
>STYA ZPPtr2 for pass #2
|
||
|
||
jsr MBAR.GetSize
|
||
>SYSCALL2 GetMem
|
||
bcs .9
|
||
|
||
>STYA ZPObjPtr
|
||
|
||
phx hMBAR
|
||
|
||
lda #S.OBJ.T.MBAR
|
||
sta (ZPObjPtr) S.OBJ.T
|
||
|
||
lda #0
|
||
|
||
ldy #S.MBAR.Items-1
|
||
|
||
.1 sta (ZPObjPtr),y
|
||
dey
|
||
bne .1
|
||
|
||
jsr MBAR.GetData
|
||
|
||
pla hMBAR
|
||
clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
* ZPPtr1 = defintion
|
||
*--------------------------------------
|
||
MBAR.GetSize lda #S.MBAR.Items+1 Ending\0
|
||
sta Counter
|
||
stz Counter+1
|
||
|
||
.1 lda (ZPPtr1)
|
||
beq .8
|
||
|
||
ldy #$ff
|
||
|
||
.2 iny
|
||
lda (ZPPtr1),y
|
||
bne .2
|
||
|
||
tya
|
||
|
||
sec text Ending\0
|
||
|
||
inc
|
||
inc skip pMENU
|
||
jsr SkipAPtr1
|
||
|
||
lda #S.MBITEM
|
||
clc
|
||
adc Counter
|
||
sta Counter
|
||
bcc .1
|
||
|
||
inc Counter+1
|
||
bra .1
|
||
|
||
.8 >LDYA Counter
|
||
rts
|
||
*--------------------------------------
|
||
* ZPPtr2 = defintion
|
||
* ZPObjPtr = DstMBar
|
||
* ZPPtr1 = DstMBItem
|
||
*--------------------------------------
|
||
MBAR.GetData jsr MBAR.GetMBItems
|
||
|
||
.1 lda (ZPPtr2)
|
||
beq .8
|
||
|
||
lda #S.MBITEM.T.SUBMENU
|
||
jsr MBAR.AddByte
|
||
|
||
lda #0 S.MBITEM.S
|
||
jsr MBAR.AddByte
|
||
|
||
>LDYA ZPPtr2 pTEXT
|
||
ldx hSYSFON
|
||
jsr FON.GetTextSize
|
||
|
||
lda PREFS.XMargin
|
||
asl x2
|
||
clc
|
||
adc CB.CACHE+S.CB.SrcW
|
||
tay
|
||
|
||
lda #0
|
||
adc CB.CACHE+S.CB.SrcW+1
|
||
jsr MBAR.AddWord S.MBITEM.W
|
||
|
||
>LDYA ZPPtr2 pTEXT
|
||
jsr MBAR.AddWord
|
||
|
||
jsr SkipStrZPtr2 skip "TEXT\0"
|
||
|
||
lda (ZPPtr2)
|
||
jsr MBAR.AddByte pMENU
|
||
|
||
ldy #1
|
||
lda (ZPPtr2),y
|
||
jsr MBAR.AddByte pMENU+1
|
||
|
||
lda #2
|
||
jsr SkipAPtr2 stkip pMENU
|
||
bra .1
|
||
|
||
.8 sta (ZPPtr1)
|
||
rts
|
||
*--------------------------------------
|
||
MBAR.AddWord pha
|
||
|
||
tya
|
||
jsr MBAR.AddByte
|
||
pla
|
||
|
||
MBAR.AddByte sta (ZPPtr1)
|
||
inc ZPPtr1
|
||
bne .8
|
||
|
||
inc ZPPtr1+1
|
||
|
||
.8 rts
|
||
*--------------------------------------
|
||
* ZPWNDPtr parent WND
|
||
* MSG.X1, MSG.Y1
|
||
*--------------------------------------
|
||
MBAR.Enter ldy #S.WND.pMBAR
|
||
lda (ZPWNDPtr),y
|
||
>SYSCALL2 GetMemPtr
|
||
>STYA ZPObjPtr pMBAR
|
||
|
||
stz ZPPtr2
|
||
stz ZPPtr2+1
|
||
|
||
ldy #S.OBJ.X1
|
||
ldx #S.CB.X1
|
||
jsr CB.GetWndYCacheX
|
||
|
||
jsr MBAR.GetMBItems
|
||
|
||
.1 lda (ZPPtr1)
|
||
beq .3
|
||
|
||
jsr MBAR.SetX2 set X2 = X1 + W - 1
|
||
|
||
lda MSG+S.MSG.X1
|
||
cmp CB.Cache+S.CB.X1
|
||
lda MSG+S.MSG.X1+1
|
||
sbc CB.Cache+S.CB.X1+1
|
||
bcc .2
|
||
|
||
lda CB.Cache+S.CB.X2
|
||
cmp MSG+S.MSG.X1
|
||
lda CB.Cache+S.CB.X2+1
|
||
sbc MSG+S.MSG.X1+1
|
||
bcc .2
|
||
|
||
ldy #S.MBITEM.S in RECT....
|
||
lda (ZPPtr1),y
|
||
bmi .8 Already Selected, nothing to do
|
||
|
||
>LDYA ZPPtr1
|
||
>STYA ZPPtr2 save MBITEM to activate
|
||
|
||
.2 jsr MBAR.NextMBItem
|
||
bra .1
|
||
|
||
.3 lda ZPPtr2
|
||
ora ZPPtr2+1
|
||
bne MBAR.Set
|
||
|
||
.8 clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
MBAR.Leave clc
|
||
rts
|
||
*--------------------------------------
|
||
* ZPWNDPtr parent WND
|
||
* ZPObjPtr = MBAR
|
||
* ZPPtr2 = Item to activate
|
||
*--------------------------------------
|
||
MBAR.Reset stz ZPPtr2
|
||
stz ZPPtr2+1
|
||
|
||
MBAR.Set jsr MENU.DestroyAll
|
||
|
||
ldy #S.OBJ.X1
|
||
ldx #S.CB.X1
|
||
jsr CB.GetWndYCacheX
|
||
|
||
jsr MBAR.GetMBItems
|
||
|
||
jsr CB.GetBuf
|
||
bcs .9
|
||
|
||
.4 lda (ZPPtr1)
|
||
beq .7
|
||
|
||
jsr MBAR.SetX2 set X2 = X1 + W - 1
|
||
|
||
ldy #S.MBITEM.S
|
||
lda (ZPPtr1),y
|
||
bmi .5
|
||
|
||
ldx ZPPtr1
|
||
cpx ZPPtr2
|
||
bne .6
|
||
|
||
ldx ZPPtr1+1
|
||
cpx ZPPtr2+1
|
||
bne .6
|
||
|
||
ldx CB.Cache+S.CB.X1
|
||
stx Counter
|
||
ldx CB.Cache+S.CB.X1+1
|
||
stx Counter+1
|
||
|
||
.5 eor #S.MBITEM.S.SELECTED
|
||
sta (ZPPtr1),y
|
||
|
||
jsr MBAR.DrawMBItem
|
||
bcs .9
|
||
|
||
.6 jsr MBAR.NextMBItem set X1 = X2
|
||
bra .4
|
||
|
||
.7 jsr CB.FlushBuf
|
||
bcs .9
|
||
|
||
>LDYA Counter
|
||
>STYA DX
|
||
|
||
ldy #S.WND.MBarY2
|
||
lda (ZPWNDPtr),y
|
||
sta DY
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
sta DY+1
|
||
|
||
ldy #S.MBITEM.pMENU
|
||
lda (ZPPtr2),y
|
||
pha
|
||
iny
|
||
lda (ZPPtr2),y
|
||
ply
|
||
|
||
jsr MENU.New.I
|
||
bcs .9
|
||
|
||
jmp MENU.Draw
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
* ZPWNDPtr = parent WND
|
||
*--------------------------------------
|
||
MBAR.Draw >SYSCALL2 GetMemPtr
|
||
>STYA ZPObjPtr pMBAR
|
||
|
||
ldy #S.OBJ.X1
|
||
ldx #S.CB.X1
|
||
jsr CB.GetWndYCacheX
|
||
|
||
jsr CB.GetBuf
|
||
bcs .9
|
||
|
||
jsr MBAR.GetMBItems
|
||
|
||
.1 lda (ZPPtr1)
|
||
beq .8
|
||
|
||
jsr MBAR.SetX2 set X2 = X1 + W - 1
|
||
|
||
jsr MBAR.DrawMBItem
|
||
bcs .9
|
||
|
||
jsr MBAR.NextMBItem
|
||
bra .1
|
||
|
||
.8 jsr CB.X2ToX1
|
||
|
||
ldy #S.OBJ.X2
|
||
ldx #S.CB.X2
|
||
jsr CB.GetWndYCacheX
|
||
|
||
jsr MBAR.SetY1Y2
|
||
|
||
lda PREFS.MBarColor
|
||
jsr CB.FillRectMonoA
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
jmp CB.FlushBuf
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
MBAR.DrawMBItem ldy #S.MBITEM.S
|
||
lda (ZPPtr1),y
|
||
asl
|
||
|
||
lda PREFS.MBarColor
|
||
bcc .1
|
||
|
||
eor #$ff
|
||
|
||
.1 jsr CB.FillRectMonoA
|
||
|
||
jsr MBAR.SetY1Y2
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
lda PREFS.XMargin
|
||
jsr CB.AddA2X1
|
||
|
||
jsr CB.IncY1
|
||
|
||
ldy #S.MBITEM.pTEXT
|
||
lda (ZPPtr1),y
|
||
pha
|
||
iny
|
||
lda (ZPPtr1),y
|
||
ply
|
||
ldx hSYSFON
|
||
jmp DRAW.YAText
|
||
*--------------------------------------
|
||
MBAR.GetMBItems lda ZPObjPtr
|
||
clc
|
||
adc #S.MBAR.Items
|
||
sta ZPPtr1
|
||
|
||
lda ZPObjPtr+1
|
||
adc /S.MBAR.Items
|
||
sta ZPPtr1+1
|
||
rts
|
||
*--------------------------------------
|
||
MBAR.NextMBItem jsr CB.X2ToX1
|
||
|
||
lda #S.MBITEM
|
||
jmp SkipAPtr1
|
||
*--------------------------------------
|
||
MBAR.SetX2 ldy #S.MBITEM.W
|
||
lda (ZPPtr1),y
|
||
clc
|
||
adc CB.Cache+S.CB.X1
|
||
pha
|
||
|
||
iny
|
||
lda (ZPPtr1),y
|
||
adc CB.Cache+S.CB.X1+1
|
||
|
||
ply
|
||
bne .1
|
||
|
||
dec
|
||
|
||
.1 dey
|
||
|
||
sty CB.Cache+S.CB.X2
|
||
sta CB.Cache+S.CB.X2+1
|
||
|
||
rts
|
||
*--------------------------------------
|
||
MBAR.SetY1Y2 ldy #S.WND.MBarY1
|
||
ldx #S.CB.Y1
|
||
jsr CB.GetWndYCacheX
|
||
|
||
ldy #S.WND.MBarY2
|
||
ldx #S.CB.Y2
|
||
jmp CB.GetWndYCacheX
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/lib/libgui.s.mbar
|
||
LOAD usr/src/lib/libgui.s
|
||
ASM
|