2018-05-04 14:55:29 +00:00
|
|
|
|
NEW
|
2019-07-30 08:57:25 +00:00
|
|
|
|
AUTO 3,1
|
2018-05-04 14:55:29 +00:00
|
|
|
|
*--------------------------------------
|
2020-09-30 15:32:54 +00:00
|
|
|
|
MENU.MBarInit >STYA ZPMENUPtr
|
|
|
|
|
>STYA ZPPtr1
|
|
|
|
|
|
|
|
|
|
ldy #S.MBAR.S
|
|
|
|
|
lda (ZPPtr1),y
|
|
|
|
|
bmi .80
|
2020-09-15 14:48:35 +00:00
|
|
|
|
|
2020-09-29 15:37:26 +00:00
|
|
|
|
stz DX
|
|
|
|
|
stz DX+1
|
2020-10-01 06:08:33 +00:00
|
|
|
|
|
2020-09-29 15:37:26 +00:00
|
|
|
|
.1 lda (ZPPtr1)
|
|
|
|
|
beq .8
|
|
|
|
|
|
2020-09-30 15:32:54 +00:00
|
|
|
|
lda #S.MBAR.TEXT
|
|
|
|
|
clc
|
|
|
|
|
adc ZPPtr1
|
|
|
|
|
tay
|
|
|
|
|
lda ZPPtr1+1
|
|
|
|
|
adc #0
|
2020-09-29 15:37:26 +00:00
|
|
|
|
|
|
|
|
|
ldx hSYSFONB
|
|
|
|
|
jsr FON.GetTextSize
|
|
|
|
|
|
|
|
|
|
ldy #S.MBAR.X1
|
|
|
|
|
|
|
|
|
|
lda DX
|
|
|
|
|
sta (ZPPtr1),y
|
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda DX+1
|
|
|
|
|
sta (ZPPtr1),y
|
|
|
|
|
|
2020-10-01 06:08:33 +00:00
|
|
|
|
iny #S.MBAR.XT
|
2020-09-29 15:37:26 +00:00
|
|
|
|
|
|
|
|
|
lda DX
|
|
|
|
|
clc
|
2020-10-01 06:08:33 +00:00
|
|
|
|
adc PREFS.MBARXMARGIN
|
2020-09-29 15:37:26 +00:00
|
|
|
|
sta DX
|
|
|
|
|
sta (ZPPtr1),y
|
|
|
|
|
|
|
|
|
|
iny
|
2020-10-01 06:08:33 +00:00
|
|
|
|
|
2020-09-29 15:37:26 +00:00
|
|
|
|
lda DX+1
|
|
|
|
|
adc #0
|
|
|
|
|
sta DX+1
|
|
|
|
|
sta (ZPPtr1),y
|
2020-09-15 14:48:35 +00:00
|
|
|
|
|
2020-09-29 15:37:26 +00:00
|
|
|
|
lda DX
|
|
|
|
|
clc
|
2020-10-01 06:08:33 +00:00
|
|
|
|
adc CB.CACHE+S.CB.SrcW
|
2020-09-29 15:37:26 +00:00
|
|
|
|
sta DX
|
|
|
|
|
|
|
|
|
|
lda DX+1
|
2020-10-01 06:08:33 +00:00
|
|
|
|
adc CB.CACHE+S.CB.SrcW+1
|
2020-09-29 15:37:26 +00:00
|
|
|
|
sta DX+1
|
|
|
|
|
|
|
|
|
|
iny #S.MBAR.X2
|
|
|
|
|
|
|
|
|
|
lda DX
|
|
|
|
|
clc
|
2020-10-01 06:08:33 +00:00
|
|
|
|
adc PREFS.MBARXMARGIN
|
2020-09-29 15:37:26 +00:00
|
|
|
|
sta DX
|
|
|
|
|
sta (ZPPtr1),y
|
|
|
|
|
|
|
|
|
|
iny
|
2020-09-15 14:48:35 +00:00
|
|
|
|
|
2020-09-29 15:37:26 +00:00
|
|
|
|
lda DX+1
|
|
|
|
|
adc #0
|
|
|
|
|
sta DX+1
|
|
|
|
|
sta (ZPPtr1),y
|
|
|
|
|
|
|
|
|
|
lda (ZPPtr1)
|
2020-09-30 15:32:54 +00:00
|
|
|
|
clc
|
2020-09-29 15:37:26 +00:00
|
|
|
|
adc ZPPtr1
|
|
|
|
|
sta ZPPtr1
|
|
|
|
|
bcc .1
|
|
|
|
|
inc ZPPtr1+1
|
|
|
|
|
bra .1
|
|
|
|
|
|
|
|
|
|
.8 lda #$80
|
|
|
|
|
|
|
|
|
|
ldy #S.MBAR.S
|
2020-09-30 15:32:54 +00:00
|
|
|
|
sta (ZPPtr1),y
|
2020-09-15 14:48:35 +00:00
|
|
|
|
|
2020-09-30 15:32:54 +00:00
|
|
|
|
.80 clc
|
2020-09-15 14:48:35 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2020-10-09 06:02:45 +00:00
|
|
|
|
* MENU.New(int X, int Y, *MITEM mitems)
|
2020-09-07 20:40:50 +00:00
|
|
|
|
*--------------------------------------
|
2020-10-09 06:02:45 +00:00
|
|
|
|
MENU.New >LDYAI S.MENU
|
|
|
|
|
>SYSCALL2 getmem
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>STYA ZPMENUPtr
|
|
|
|
|
|
|
|
|
|
lda #S.OBJ.T.MENU
|
|
|
|
|
sta (ZPMENUPtr) S.OBJ.T
|
|
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
|
|
|
|
|
|
ldy #S.MENU-1
|
|
|
|
|
|
|
|
|
|
.1 sta (ZPMENUPtr),y
|
|
|
|
|
dey
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
>PULLA
|
2020-10-09 15:28:01 +00:00
|
|
|
|
ldy #S.MENU.MITEMS
|
2020-10-09 06:02:45 +00:00
|
|
|
|
sta (ZPMENUPtr),y
|
|
|
|
|
>PULLA
|
|
|
|
|
iny
|
|
|
|
|
sta (ZPMENUPtr),y
|
|
|
|
|
|
|
|
|
|
>PULLA
|
|
|
|
|
ldy #S.OBJ.Y1
|
|
|
|
|
sta (ZPMENUPtr),y
|
|
|
|
|
>PULLA
|
|
|
|
|
iny
|
|
|
|
|
sta (ZPMENUPtr),y
|
|
|
|
|
|
|
|
|
|
>PULLA
|
|
|
|
|
ldy #S.OBJ.X1
|
|
|
|
|
sta (ZPMENUPtr),y
|
|
|
|
|
>PULLA
|
|
|
|
|
iny
|
|
|
|
|
sta (ZPMENUPtr),y
|
|
|
|
|
|
2020-10-09 15:28:01 +00:00
|
|
|
|
txa hMenu
|
|
|
|
|
|
|
|
|
|
* clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.9 >POP 6
|
|
|
|
|
|
|
|
|
|
MENU.New.RTS rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
MENU.Show >SYSCALL2 GetMemPtr
|
|
|
|
|
>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)
|
2020-10-09 06:02:45 +00:00
|
|
|
|
sta DX
|
|
|
|
|
stz DX+1
|
2020-10-09 15:28:01 +00:00
|
|
|
|
|
|
|
|
|
lda #2 2px Borders
|
|
|
|
|
sta DY Menu H
|
2020-10-09 06:02:45 +00:00
|
|
|
|
stz DY+1
|
2020-10-09 15:28:01 +00:00
|
|
|
|
|
|
|
|
|
.1 lda (ZPPtr1)
|
|
|
|
|
beq .3
|
|
|
|
|
|
|
|
|
|
jsr MENU.Show.GetW
|
|
|
|
|
|
|
|
|
|
lda DY
|
|
|
|
|
clc
|
|
|
|
|
adc SYSFON.H
|
|
|
|
|
sta DY
|
|
|
|
|
bcc .2
|
|
|
|
|
inc DY+1
|
2020-10-09 06:02:45 +00:00
|
|
|
|
|
|
|
|
|
.2 lda (ZPPtr1)
|
2020-10-09 15:28:01 +00:00
|
|
|
|
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
|
2020-10-09 06:02:45 +00:00
|
|
|
|
|
2020-10-09 15:28:01 +00:00
|
|
|
|
.5 jsr MENU.Show.Borders
|
2020-10-09 06:02:45 +00:00
|
|
|
|
|
2020-10-09 15:28:01 +00:00
|
|
|
|
.8 >LDYA L.WND.Screen
|
|
|
|
|
jmp DrawCBPtrToYA1
|
2020-10-09 06:02:45 +00:00
|
|
|
|
|
2020-10-09 15:28:01 +00:00
|
|
|
|
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
|
2020-09-07 20:40:50 +00:00
|
|
|
|
|
|
|
|
|
rts
|
2020-10-09 15:28:01 +00:00
|
|
|
|
|
|
|
|
|
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
|
2018-05-09 14:57:05 +00:00
|
|
|
|
*--------------------------------------
|
2020-10-09 15:28:01 +00:00
|
|
|
|
MENU.Destroy
|
2020-10-09 06:02:45 +00:00
|
|
|
|
*--------------------------------------
|
2018-05-04 14:55:29 +00:00
|
|
|
|
MAN
|
2020-06-30 15:32:23 +00:00
|
|
|
|
SAVE usr/src/lib/libgui.s.menu
|
|
|
|
|
LOAD usr/src/lib/libgui.s
|
2018-05-04 14:55:29 +00:00
|
|
|
|
ASM
|