A2osX/BIN/EDIT.S.DLG.txt

907 lines
12 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
jsr DLG.DrawTBar
.99 bcs .9
jsr SCRN.LineBufInitDLG
ldy #S.DLG.W
lda (ZPPTR1),y
dec
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
jsr DLG.DrawSBar
bcs .9
jmp DLG.CTRL.DrawAll
.9 rts
*--------------------------------------
DLG.Run jsr IO.GetCh
bcs .9
cmp #3
beq .8
cmp #C.CR
beq .8
cmp #C.TAB
beq DLG.NextFocus
pha
ldy #S.DLG.Focus
lda (ZPPTR1),y get actual focused Ctrl
tay
pla
jsr DLG.CTRL.CharIn
bra DLG.Run
.8 clc
.9 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
jsr DLG.CTRL.Focus
jmp DLG.Run
*--------------------------------------
DLG.Close ldy #S.DLG.Y
lda (ZPPTR1),y
sta TmpByte
>LDA.G ScreenY
clc
ldy #S.DLG.Y
adc (ZPPTR1),y
sta TmpIndex
>LDA.G ScreenY+1
adc #0
sta TmpIndex+1
ldy #S.DLG.H
lda (ZPPTR1),y
jsr SCRN.UpdateMain.1
bcs .9
>LDA.G hDLG
>SYSCALL FreeMem
>STZ.G hDLG
clc
.9 rts
*--------------------------------------
DLG.CTRL.DrawAll
ldy #S.DLG.Ctrls
.5 lda (ZPPTR1),y
beq .8
phy
jsr DLG.CTRL.Draw
ply
bcs .9
iny
bra .5
.8 ldy #S.DLG.Focus
lda (ZPPTR1),y
jmp DLG.CTRL.Focus
.9 rts
*--------------------------------------
DLG.CTRL.Draw sty TmpByte Y=CtrlID
lda (ZPPTR1),y Ctrl Definition
tay
lda (ZPPTR1),y Ctrl Type
tax
jmp (J.DLG.CTRL.Draw,x)
*--------------------------------------
DLG.CTRL.Draw.LBL
jsr SCRN.LineBufInitLBL
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.LineBufInitTB
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
txa
sta (ZPPTR1),y CURPOS
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.LineBufInitLBL
jsr DLG.CTRL.GotoOrg
bcs .9
ldy TmpByte
lda (ZPPTR1),y
tay S.DLG.Ctrl.OL
iny X
iny Y
iny shortcut
iny varptr
lda (ZPPTR1),y
phy
tay
lda (pData),y
ply
iny value
eor (ZPPTR1),y
tax
iny label
lda #'('
jsr SCRN.ToLineBuf
lda #C.SO
jsr SCRN.ToLineBuf
lda #'`'
cpx #0
beq .2
lda #C.SPACE
.2 jsr SCRN.ToLineBuf
lda #C.SI
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.LineBufInitBut
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 SCRN.LineBufInitTB
jsr DLG.CTRL.GotoOrg
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .1
sec
.1 lda #C.SPACE
bcc .2
lda #'['
.2 jsr SCRN.ToLineBuf
jsr DLG.CTRL.GotoEnd
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .3
sec
.3 lda #C.SPACE
bcc .4
lda #']'
.4 jsr SCRN.ToLineBuf
jsr SCRN.LineBufOut
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 SCRN.LineBufInitLBL
jsr DLG.CTRL.GotoOrg
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .1
sec
.1 lda #'('
bcc .2
lda #'['
.2 jsr SCRN.ToLineBuf
jsr DLG.CTRL.GotoEnd
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .3
sec
.3 lda #')'
bcc .4
lda #']'
.4 jsr SCRN.ToLineBuf
lda #C.BS
jsr SCRN.ToLineBuf
jsr SCRN.ToLineBuf
jmp SCRN.LineBufOut
DLG.CTRL.Focus.BUT
jsr SCRN.LineBufInitBut
jsr DLG.CTRL.GotoOrg
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .1
sec
.1 lda #C.SPACE
bcc .2
lda #'['
.2 jsr SCRN.ToLineBuf
jsr DLG.CTRL.GotoEnd
ldy #S.DLG.Focus
lda (ZPPTR1),y
eor TmpByte
bne .3
sec
.3 lda #C.SPACE
bcc .4
lda #']'
.4 jsr SCRN.ToLineBuf
jmp SCRN.LineBufOut
*--------------------------------------
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
clc
adc (pStack)
inc pStack
.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
DLG.CTRL.GotoXY >PUSHW LineBufPtr
>PUSHW L.MSG.GOTOXY
tya
inc
inc
>PUSHA
txa
inc
>PUSHA
>PUSHBI 2
>SYSCALL SPrintF
.2 lda (LineBufPtr)
beq .8
inc LineBufPtr
bne .2
inc LineBufPtr+1
bra .2
.8 rts
*--------------------------------------
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
inc
rts
DLG.CTRL.GetWitdh.OL
lda #2
rts
iny
iny
iny
iny
ldx #0
.1 inx
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.CTRL.CharIn sty TmpByte A=CtrlID
pha
lda (ZPPTR1),y Ctrl Definition
tay
lda (ZPPTR1),y Ctrl Type
tax
pla
jmp (J.DLG.CTRL.CharIn,x)
*--------------------------------------
DLG.CTRL.CharIn.LBL
sec
rts
*--------------------------------------
DLG.CTRL.CharIn.TB
cmp #C.DEL
beq .5
cmp #C.SPACE
bcc .9
pha
iny
iny
iny
lda (ZPPTR1),y CURPOS
iny
cmp (ZPPTR1),y MAXCHAR
beq .7
pha
inc
dey
sta (ZPPTR1),y CURPOS
iny
iny
lda (ZPPTR1),y hMem
tay
lda (pData),y
>SYSCALL GetMemPtr
>STYA ZPPTR2
ply
pla
pha
sta (ZPPTR2),y
iny
lda #0
sta (ZPPTR2),y
pla
>SYSCALL PutChar
clc
rts
.5 iny
iny
iny
lda (ZPPTR1),y CURPOS
beq .8
dec
sta (ZPPTR1),y
pha
iny
iny
lda (ZPPTR1),y hMem
tay
lda (pData),y
>SYSCALL GetMemPtr
>STYA ZPPTR2
ply
lda #0
sta (ZPPTR2),y
lda #C.DEL
>SYSCALL PutChar
clc
rts
.7 pla
.8 clc
rts
.9 sec
rts
*--------------------------------------
DLG.CTRL.CharIn.OL
cmp #C.SPACE
bne .8
iny X
iny Y
iny shortcut
iny varptr
lda (ZPPTR1),y
pha
iny value
lda (ZPPTR1),y
ply
sta (pData),y
jmp DLG.CTRL.DrawAll
.8 clc
rts
*--------------------------------------
DLG.CTRL.CharIn.BUT
clc
rts
*--------------------------------------
DLG.DrawTBar ldx #SEQ.DLG.TBAR-SEQS
jsr SCRN.LineBufInit
ldy #S.DLG.W
lda (ZPPTR1),y
dec
dec
tax
ldy #S.DLG.Title
lda (ZPPTR1),y
tay
.1 lda (ZPPTR1),y
beq .11
jsr SCRN.ToLineBuf
dex
beq .3
iny
bra .1
.11 lda #C.SPACE
.2 jsr SCRN.ToLineBuf
dex
bne .2
.3 ldx #SEQ.DLG.TBAR.E-SEQS
jsr SCRN.SEQS.ToLineBuf
.4 jmp SCRN.LineBufOut
*--------------------------------------
DLG.DrawSBar ldx #SEQ.DLG.SBAR-SEQS
jsr SCRN.LineBufInit
ldy #S.DLG.W
lda (ZPPTR1),y
dec
dec
tax
ldy #S.DLG.Status
lda (ZPPTR1),y
tay
.1 lda (ZPPTR1),y
beq .11
jsr SCRN.ToLineBuf
dex
beq .3
iny
bra .1
.11 lda #C.SPACE
.2 jsr SCRN.ToLineBuf
dex
bne .2
.3 ldx #SEQ.DLG.SBAR.E-SEQS
jsr SCRN.SEQS.ToLineBuf
.4 jmp SCRN.LineBufOut
*--------------------------------------
DLG.VBarToLineBuf
ldy #0
.1 lda SEQ.DLG.VBAR,y
beq .8
jsr SCRN.ToLineBuf
iny
bra .1
.8 rts
*--------------------------------------
MAN
SAVE usr/src/bin/edit.s.dlg
LOAD usr/src/bin/edit.s
ASM