A2osX/BIN/EDIT.S.DLG.txt
2019-11-27 17:47:13 +01:00

697 lines
10 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
DLG.Open >STYA ZPPTR2
lda (ZPPTR2)
tay
lda #0
>SYSCALL getmem
bcs .99
>STYA ZPPTR1
txa
>STA.G hDLG
ldy #0
.1 lda (ZPPTR2),y
sta (ZPPTR1),y
iny
tya
cmp (ZPPTR2)
bne .1
jsr DLG.SetOrigin
sty TmpByte
jsr SCRN.GotoXY
bcs .9
ldy #S.DLG.Title
jsr DLG.DrawInvBar
.99 bcs .9
jsr SCRN.LineBufInitNorm
jsr DLG.VBarToLineBuf
ldy #S.DLG.W
lda (ZPPTR1),y
dec
tax
lda #C.SPACE
.3 jsr SCRN.ToLineBuf
dex
bne .3
jsr DLG.VBarToLineBuf
ldy #S.DLG.H
lda (ZPPTR1),y
dec
dec
tax
.4 phx
inc TmpByte
ldy #S.DLG.X
lda (ZPPTR1),y
tax
ldy TmpByte
jsr SCRN.GotoXY
bcs .9
jsr SCRN.LineBufOut
bcs .9
plx
dex
bne .4
inc TmpByte
ldy #S.DLG.X
lda (ZPPTR1),y
tax
ldy TmpByte
jsr SCRN.GotoXY
bcs .9
ldy #S.DLG.Status
jsr DLG.DrawInvBar
bcs .9
ldy #S.DLG.Ctrls
.5 lda (ZPPTR1),y
beq .8
phy
tya
jsr DLG.CTRL.Draw
ply
bcs .9
iny
bra .5
.8 ldy #S.DLG.Focus
lda (ZPPTR1),y
jsr DLG.CTRL.Focus
clc
.9 rts
*--------------------------------------
DLG.Run >SYSCALL getchar
bcs .9
cmp #3
beq .8
cmp #C.CR
beq .8
cmp #C.TAB
bne DLG.Run
jsr DLG.NextFocus
bcc DLG.Run
rts
.8 clc
.9
DLG.Run.RTS rts
*--------------------------------------
DLG.NextFocus ldy #S.DLG.Focus
lda (ZPPTR1),y get actual focused Ctrl
pha save it...
tax
.1 inx next one
.2 txa
tay
lda (ZPPTR1),y Get Ctrl
bne .3 end of list, get first
ldx #S.DLG.Ctrls
bra .2
.3 tay
lda (ZPPTR1),y Get Ctrl Type
beq .1 LBL
txa
ldy #S.DLG.Focus
sta (ZPPTR1),y
pla get old focused
phx save new focused
jsr DLG.CTRL.Focus
pla
jmp DLG.CTRL.Focus
*--------------------------------------
DLG.Close ldy #S.DLG.H
lda (ZPPTR1),y
sta TmpCount
ldy #S.DLG.Y
lda (ZPPTR1),y
sta TmpByte
.1 >LDA.G ScreenY
clc
ldy #S.DLG.Y
adc (ZPPTR1),y
sta TmpIndex
>LDA.G ScreenY+1
adc #0
sta TmpIndex+1
lda TmpIndex
ldx TmpIndex+1
jsr BUF.GetLineAX
bcs .8
lda TmpByte
jsr SCRN.UpdateLineAtALenY
inc TmpIndex
bne .2
inc TmpIndex+1
.2 inc TmpByte
dec TmpCount
bne .1
.8 clc
rts
*--------------------------------------
DLG.CTRL.Draw sta TmpByte A=CtrlID
tay
lda (ZPPTR1),y Ctrl Definition
tay
lda (ZPPTR1),y Ctrl Type
tax
jmp (J.DLG.CTRL.Draw,x)
*--------------------------------------
DLG.CTRL.Draw.LBL
jsr SCRN.LineBufInitNorm
jsr DLG.CTRL.GotoOrg
bcs .9
ldy TmpByte CtrlID
lda (ZPPTR1),y
tay
iny
iny
iny
.1 lda (ZPPTR1),y
beq .8
jsr SCRN.ToLineBuf
iny
bra .1
.8 jmp SCRN.LineBufOut
.9 rts
*--------------------------------------
DLG.CTRL.Draw.TB
jsr SCRN.LineBufInitNorm
jsr DLG.CTRL.GotoOrg
bcs .9
ldy TmpByte
lda (ZPPTR1),y
tay
iny
iny
iny
iny
iny
lda (ZPPTR1),y
tay
lda (pData),y
>SYSCALL getmemptr
>STYA ZPPTR2
lda #C.SPACE
jsr SCRN.ToLineBuf
ldy #0
.1 lda (ZPPTR2),y
beq .2
jsr SCRN.ToLineBuf
iny
bra .1
.2 tya
tax
ldy TmpByte
lda (ZPPTR1),y
tay
iny
iny
iny
iny
.3 txa
eor (ZPPTR1),y MAXCHAR
beq .8
lda #C.SPACE
jsr SCRN.ToLineBuf
inx
bra .3
.8 lda #C.SPACE
jsr SCRN.ToLineBuf
jmp SCRN.LineBufOut
.9 rts
*--------------------------------------
DLG.CTRL.Draw.OL
jsr SCRN.LineBufInitNorm
jsr DLG.CTRL.GotoOrg
bcs .9
ldy TmpByte
lda (ZPPTR1),y
tay
iny
iny
iny
iny
lda (ZPPTR1),y value
sta TmpCount
iny
.1 lda #"("
jsr SCRN.ToLineBuf
lda #"o"
cpx TmpCount
beq .2
lda #C.SPACE
.2 jsr SCRN.ToLineBuf
lda #")"
jsr SCRN.ToLineBuf
lda #C.SPACE
jsr SCRN.ToLineBuf
.3 lda (ZPPTR1),y
beq .4
jsr SCRN.ToLineBuf
iny
bra .3
.4 lda #C.SPACE
jsr SCRN.ToLineBuf
.8 jmp SCRN.LineBufOut
.9 rts
*--------------------------------------
DLG.CTRL.Draw.BUT
jsr SCRN.LineBufInitInv
jsr DLG.CTRL.GotoOrg
bcs .9
ldy TmpByte CtrlID
lda (ZPPTR1),y
tay
iny
iny
iny
iny
lda #C.SPACE
jsr SCRN.ToLineBuf
.1 lda (ZPPTR1),y
beq .8
jsr SCRN.ToLineBuf
iny
bra .1
.8 lda #C.SPACE
jsr SCRN.ToLineBuf
jmp SCRN.LineBufOut
.9 rts
*--------------------------------------
DLG.CTRL.Focus sta TmpByte A=CtrlID
tay
lda (ZPPTR1),y Ctrl Definition
tay
lda (ZPPTR1),y Ctrl Type
tax
jmp (J.DLG.CTRL.Focus,x)
*--------------------------------------
DLG.CTRL.Focus.LBL
clc
rts
DLG.CTRL.Focus.TB
jsr DLG.CTRL.GotoOrg
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .1
sec
.1 lda #C.SPACE
bcc .2
lda #'['
.2 >SYSCALL putchar
jsr DLG.CTRL.GotoEnd
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .3
sec
.3 lda #C.SPACE
bcc .4
lda #']'
.4 >SYSCALL putchar
ldy TmpByte CtrlID
lda (ZPPTR1),y
tay
iny skip Ctrl Type
lda (ZPPTR1),y
clc
ldy #S.DLG.X
adc (ZPPTR1),y
pha
ldy TmpByte CtrlID
lda (ZPPTR1),y
tay
iny
iny
iny
pla
sec +1
adc (ZPPTR1),y
tax
ldy TmpByte CtrlID
lda (ZPPTR1),y
tay
iny skip Ctrl Type
iny skip X
lda (ZPPTR1),y
clc
ldy #S.DLG.Y
adc (ZPPTR1),y
tay
jmp SCRN.GotoXY
DLG.CTRL.Focus.OL
jsr DLG.CTRL.GotoOrg
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .1
sec
.1 lda #'('
bcc .2
lda #'['
.2 >SYSCALL putchar
jsr DLG.CTRL.GotoEnd
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .3
sec
.3 lda #')'
bcc .4
lda #']'
.4 >SYSCALL putchar
clc
rts
DLG.CTRL.Focus.BUT
jsr DLG.CTRL.GotoOrg
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .1
sec
.1 lda #C.SPACE
bcc .2
lda #'['
.2 >SYSCALL putchar
jsr DLG.CTRL.GotoEnd
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .3
sec
.3 lda #C.SPACE
bcc .4
lda #']'
.4 >SYSCALL putchar
clc
rts
*--------------------------------------
DLG.CTRL.GotoOrg
clc
.HS B0 BCS
DLG.CTRL.GotoEnd
sec
php
ldy TmpByte CtrlID
lda (ZPPTR1),y
tay
iny skip Ctrl Type
lda (ZPPTR1),y
clc
ldy #S.DLG.X
adc (ZPPTR1),y
plp
bcc .1
>PUSHA
jsr DLG.CTRL.GetWitdh
sec
inc pData
adc (pData)
.1 tax
ldy TmpByte CtrlID
lda (ZPPTR1),y
tay
iny skip Ctrl Type
iny skip X
lda (ZPPTR1),y
clc
ldy #S.DLG.Y
adc (ZPPTR1),y
tay
jmp SCRN.GotoXY
*--------------------------------------
DLG.SetOrigin ldy #S.DLG.X
lda (ZPPTR1),y
bne .1
>LDA.G ScreenW
ldy #S.DLG.W
sec
sbc (ZPPTR1),y
lsr
ldy #S.DLG.X
sta (ZPPTR1),y
.1 tax
ldy #S.DLG.Y
lda (ZPPTR1),y
bne .2
>LDA.G ViewPortHm1
ldy #S.DLG.H
sec
sbc (ZPPTR1),y
lsr
ldy #S.DLG.Y
sta (ZPPTR1),y
.2 tay
rts
*--------------------------------------
DLG.CTRL.GetWitdh
ldy TmpByte CtrlID
lda (ZPPTR1),y
tay
lda (ZPPTR1),y
tax
jmp (J.DLG.CTRL.GetWitdh,x)
*--------------------------------------
DLG.CTRL.GetWitdh.LBL
clc
rts
DLG.CTRL.GetWitdh.TB
iny
iny
iny
iny
lda (ZPPTR1),y
rts
DLG.CTRL.GetWitdh.OL
lda #2
rts
iny
iny
iny
iny
ldx #0
.1 inx
iny
lda (ZPPTR1),y
bne .1
iny
lda (ZPPTR1),y
bne .1
txa
rts
DLG.CTRL.GetWitdh.BUT
iny
iny
iny
ldx #0
.1 inx
iny
lda (ZPPTR1),y
bne .1
txa
rts
*--------------------------------------
DLG.DrawInvBar phy
jsr SCRN.LineBufInitInv
ldy #S.DLG.W
lda (ZPPTR1),y
tax
ply
lda (ZPPTR1),y
tay
.1 lda (ZPPTR1),y
beq .11
jsr SCRN.ToLineBuf
dex
iny
bra .1
.11 lda #C.SPACE
.2 jsr SCRN.ToLineBuf
dex
bne .2
ldy #0
.3 lda SEQ.NORM,y
beq .4
jsr SCRN.ToLineBuf
iny
bra .3
.4 jsr DLG.VBarToLineBuf
jmp SCRN.LineBufOut
*--------------------------------------
DLG.VBarToLineBuf
lda #C.SO
jsr SCRN.ToLineBuf
lda #'x'
jsr SCRN.ToLineBuf
lda #C.SI
jmp SCRN.ToLineBuf
*--------------------------------------
MAN
SAVE USR/SRC/BIN/EDIT.S.DLG
LOAD USR/SRC/BIN/EDIT.S
ASM