A2osX/LIB/LIBTUI.S.TLINE.txt

330 lines
5.0 KiB
Plaintext
Raw Normal View History

NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
* TLINE.New hParent,X1,Y1,W,pBuf,MaxLen 7
*--------------------------------------
TLINE.New jsr OBJ.Create A = Class
bcs .9
>PULLA
ldy #S.TLINE.MaxLen
sta (ZPObjPtr),y
ldy #S.TLINE.pBuf
jsr OBJ.PullWordY
stx ZPPtr1
sta ZPPtr1+1
ldy #S.OBJ.F
lda #S.OBJ.F.bHScroll+S.OBJ.F.bCursor
sta (ZPObjPtr),y
>PULLA
ldy #S.OBJ.W
sta (ZPObjPtr),y
iny S.OBJ.H
lda #1
sta (ZPObjPtr),y
ldy #S.OBJ.CurX
sta (ZPObjPtr),y
jsr OBJ.PullY1X1hParent
jmp OBJ.Insert
.9 >POP 7
rts
*--------------------------------------
TLINE.Destroy clc
rts
*--------------------------------------
TLINE.Run ldy #S.OBJ.S
lda (ZPObjPtr),y
bpl .9 S.OBJ.S.bActive
jsr TLINE.GetBuf
lda (pStack) Event
cmp #C.DEL
beq TLINE.RUN.DEL
cmp #C.SPACE
bcs .2
cmp #C.BS
beq TLINE.RUN.BS
cmp #C.FS
beq TLINE.RUN.FS
.9 lda #0
sec
rts
*--------------------------------------
.2 ldy #S.TLINE.MaxLen
lda (ZPObjPtr),y
ldy #S.TLINE.Len
cmp (ZPObjPtr),y
beq .8
lda (ZPObjPtr),y
inc
sta (ZPObjPtr),y
pha
ldy #S.TLINE.Ptr
lda (ZPObjPtr),y
sta TempW
inc
sta (ZPObjPtr),y
ply
.1 dey
lda (ZPPtr1),y
iny
sta (ZPPtr1),y
dey
cpy TempW
bne .1
lda (pStack)
ldy TempW
sta (ZPPtr1),y
jmp TLINE.SetViewPort
.8 lda #0
clc
rts
*--------------------------------------
TLINE.RUN.BS ldy #S.TLINE.Ptr
lda (ZPObjPtr),y
beq .8
dec
sta (ZPObjPtr),y
jmp TLINE.SetViewPort
.8 clc
rts
*--------------------------------------
TLINE.RUN.FS ldy #S.TLINE.Len
lda (ZPObjPtr),y
ldy #S.TLINE.Ptr
eor (ZPObjPtr),y
beq .8
lda (ZPObjPtr),y
inc
sta (ZPObjPtr),y
jmp TLINE.SetViewPort
.8 clc
rts
*--------------------------------------
TLINE.RUN.DEL ldy #S.TLINE.Ptr
lda (ZPObjPtr),y
beq .8
tay
.1 lda (ZPPtr1),y
dey
sta (ZPPtr1),y
tax
beq .2
iny
iny
bra .1
.2 ldy #S.TLINE.Len
lda (ZPObjPtr),y
dec
sta (ZPObjPtr),y
jmp TLINE.RUN.BS
.8 clc
rts
*--------------------------------------
TLINE.Draw jsr TLINE.GetBuf
ldx #C.SPACE
ldy #S.OBJ.S
lda (ZPObjPtr),y S.OBJ.S.bActive
bpl .1
ldx #'['
.1 txa
jsr LB.COut
ldy #S.TLINE.HScroll
lda (ZPObjPtr),y
beq .12
tax
.11 jsr TLINE.GetLineChar
beq .12
dex
bne .11
.12 ldy #S.OBJ.InnerW
lda (ZPObjPtr),y
tax
dex
dex
.2 jsr TLINE.GetLineChar
beq .3
jsr LB.COut
dex
bne .2
.3 txa
beq .5
lda #C.SPACE
.4 jsr LB.COut
dex
bne .4
.5 ldx #C.SPACE
ldy #S.OBJ.S
lda (ZPObjPtr),y S.OBJ.S.bActive
bpl .6
ldx #']'
.6 txa
jsr LB.COut
.8 clc
rts
*--------------------------------------
TLINE.Activate
TLINE.Deactivate
jmp OBJ.Draw.Body
*--------------------------------------
TLINE.GetBuf ldy #S.TLINE.pBuf
lda (ZPObjPtr),y
sta ZPPtr1
iny
lda (ZPObjPtr),y
sta ZPPtr1+1
rts
*--------------------------------------
TLINE.GetLineChar
lda (ZPPtr1)
beq .8
inc ZPPtr1
bne .8
inc ZPPtr1+1
.8 rts
*--------------------------------------
TLINE.SetViewPort
ldy #S.TLINE.Ptr
lda (ZPObjPtr),y
ldy #S.TLINE.HScroll
sec
sbc (ZPObjPtr),y
ldy #S.OBJ.CurX set CurX = Ptr - HScroll
inc +1
sta (ZPObjPtr),y
bcs .10 yes..
ldy #S.TLINE.Ptr no, set HScroll = Ptr
lda (ZPObjPtr),y
ldy #S.TLINE.HScroll
sta (ZPObjPtr),y
lda #0 set CurX = 0+1
bra .20
*--------------------------------------
.10 ldy #S.TLINE.HScroll
lda (ZPObjPtr),y
ldy #S.OBJ.InnerW
clc
adc (ZPObjPtr),y
dec
dec
ldy #S.TLINE.Ptr (HScroll + InnerW-2) > (Ptr + 1) ?
clc Ptr+1
sbc (ZPObjPtr),y
bcs .8 no...
ldy #S.OBJ.InnerW yes, set HScroll = Ptr - (InnerW - 1)
lda (ZPObjPtr),y
dec
dec
dec
sta TempW (InnerW - 1)
ldy #S.TLINE.Ptr
lda (ZPObjPtr),y
sec
sbc TempW
bcc .12 Ptr - (InnerW - 1) < 0
ldy #S.TLINE.HScroll
sta (ZPObjPtr),y
lda TempW set CurX = (InnerW - 1)
bra .20
.12 lda #0
ldy #S.TLINE.HScroll
sta (ZPObjPtr),y
.20 inc
ldy #S.OBJ.CurX
sta (ZPObjPtr),y
sec
ror bRepaintAll
.8 ldy #1 hObj
lda (pStack),y
>PUSHA
jsr OBJ.Draw.Body
inc pStack
bcs .9
lda #0
* clc
.9 rts
*--------------------------------------
MAN
SAVE usr/src/lib/libtui.s.tline
LOAD usr/src/lib/libtui.s
ASM