NEW
  AUTO 3,1
				.LIST OFF
*--------------------------------------
* TLINE.New hParent,X1,Y1,W,pBuf,MaxLen	8
*--------------------------------------
TLINE.New		lda #S.OBJ.T.TLINE
				jsr OBJ.Create
				bcs .9

				jsr OBJ.PullBuf

				ldy #S.OBJ.F
				lda #S.OBJ.F.bHScroll+S.OBJ.F.bEdit
				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

				jsr CONT.Insert
				bcs .99
				
				lda hObj
*				clc
				rts				
	
.9				>POP 7

.99				rts
*--------------------------------------
TLINE.Run		ldy #S.OBJ.S
				lda (ZPObjPtr),y
				bpl .9					S.OBJ.S.bActive

				jsr OBJ.GetBuf

				lda (pStack)			Event
				cmp #C.DEL
				beq TLINE.RUN.DEL

				cmp #C.SPACE
				bcs .2

				cmp #C.BS
				beq TLINE.RUN.BS

				cmp #21					Forward Space
				beq TLINE.RUN.FS

.9				lda #0
				sec
				rts
*--------------------------------------
.2				ldy #S.OBJ.BufSize
				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 OBJ.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.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
