mirror of
https://github.com/A2osX/A2osX.git
synced 2024-12-01 14:50:10 +00:00
05ee4ce936
LIBTUI:bugfix & improvments (hyperlinks....) KERNEL:bugfix in fwrite() to socket CIFSD:NT_CREATE now set proper rights, better ERR codes GOPHER:Hyperlinks (wip)
1242 lines
19 KiB
Plaintext
1242 lines
19 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
.LIST OFF
|
||
*--------------------------------------
|
||
* TBOX.New hParent,X1,Y1,W,H,F,pBuf,BufSize 10
|
||
*--------------------------------------
|
||
TBOX.New lda #S.OBJ.T.TBOX
|
||
jsr OBJ.Create
|
||
bcs .9
|
||
|
||
jsr OBJ.PullBuf
|
||
|
||
>PULLA
|
||
ldy #S.OBJ.F
|
||
sta (ZPObjPtr),y
|
||
|
||
jsr OBJ.PullHW
|
||
|
||
jsr OBJ.PullY1X1hParent
|
||
|
||
jsr CONT.Insert
|
||
bcs .99
|
||
|
||
lda hObj
|
||
* clc
|
||
rts
|
||
|
||
.9 >POP 10
|
||
|
||
.99 rts
|
||
*--------------------------------------
|
||
TBOX.Run ldy #S.OBJ.S
|
||
lda (ZPObjPtr),y
|
||
bpl TBOX.RUN.Ignore
|
||
|
||
ldy #S.OBJ.F
|
||
lda (ZPObjPtr),y
|
||
and #S.OBJ.F.bEdit
|
||
bne TBOX.Run.RW
|
||
|
||
lda (pStack) Event
|
||
|
||
cmp #C.SPACE
|
||
beq .1
|
||
|
||
cmp #27
|
||
bcs TBOX.RUN.Ignore
|
||
|
||
asl
|
||
tax
|
||
jmp (J.TBOX.RUN.RO,x)
|
||
|
||
.1 jmp TBOX.RUN.GetLink
|
||
*--------------------------------------
|
||
TBOX.Run.RW lda (pStack) Event
|
||
|
||
cmp #C.SPACE
|
||
bcs .1
|
||
|
||
cmp #27
|
||
bcs TBOX.RUN.Ignore
|
||
|
||
asl
|
||
tax
|
||
jmp (J.TBOX.RUN.RW,x)
|
||
|
||
.1 cmp #C.DEL
|
||
beq .2
|
||
|
||
jsr TBOX.GetBuf
|
||
jsr TBOX.ToBuf1
|
||
bcs TBOX.RUN.Ignore Buffer full
|
||
|
||
jsr TBOX.RUN.FS1
|
||
bra .3
|
||
|
||
.2 jsr TBOX.GetBuf
|
||
|
||
jsr TBOX.Delete1
|
||
bcs TBOX.RUN.Ignore Buffer Empty
|
||
|
||
.3 bit bRepaintAll
|
||
bmi .4
|
||
|
||
jsr OBJ.CurUpdPos
|
||
|
||
jmp TBOX.DrawCurLine
|
||
|
||
.4 jmp TBOX.DrawAllLines
|
||
*--------------------------------------
|
||
TBOX.RUN.Ignore lda #0
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.PrevLink
|
||
|
||
|
||
TBOX.RUN.PrevLink.9
|
||
lda #0
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.NextLink
|
||
jsr TBOX.GetDocYInAX
|
||
|
||
jsr TBOX.GetLineAX will do GetBuf
|
||
bcs TBOX.RUN.PrevLink.9
|
||
|
||
jsr TBOX.SetLineAtDocX
|
||
|
||
.1 ldx #$ff
|
||
|
||
.2 inx
|
||
|
||
jsr TBOX.GetChar
|
||
beq .9
|
||
|
||
cmp #C.CR
|
||
beq .7
|
||
|
||
cmp #'['
|
||
bne .2
|
||
|
||
cmp (ZPPtr1) "[["
|
||
bne .2
|
||
|
||
jsr TBOX.RUN.SelectLink
|
||
|
||
.3 jsr TBOX.GetChar
|
||
beq .9
|
||
|
||
cmp #C.CR
|
||
beq .7
|
||
|
||
cmp #']'
|
||
bne .3
|
||
|
||
jsr TBOX.RUN.Link2pVar
|
||
|
||
jsr TBOX.SetViewPort
|
||
bit bRepaintAll
|
||
bmi .6
|
||
|
||
jsr OBJ.CurUpdPos
|
||
|
||
jsr TBOX.DrawCurLine
|
||
bra .60
|
||
|
||
.6 jsr TBOX.DrawAllLines
|
||
|
||
.60 lda #EV.HL.SELECTED
|
||
clc
|
||
rts
|
||
|
||
.7 ldy #S.TBOX.DocX
|
||
jsr OBJ.ZeroWordAtY
|
||
|
||
ldy #S.TBOX.DocY
|
||
jsr OBJ.IncWordAtY
|
||
bra .1
|
||
|
||
.9 lda #0
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.SelectLink
|
||
txa
|
||
sec skip first [
|
||
ldy #S.TBOX.DocX
|
||
adc (ZPObjPtr),y
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
lda #0
|
||
adc (ZPObjPtr),y
|
||
sta (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.BufPtr
|
||
jsr TBOX.SetTempCAtY
|
||
|
||
ldy #S.TBOX.SelBegin
|
||
jmp TBOX.SetTempCAtY
|
||
*--------------------------------------
|
||
TBOX.RUN.Link2pVar
|
||
ldy #S.TBOX.SelEnd
|
||
jsr TBOX.SetTempCAtY
|
||
|
||
ldy #S.OBJ.pVar
|
||
lda (ZPObjPtr),y
|
||
sta ZPPtr2
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
sta ZPPtr2+1
|
||
|
||
ldy #0
|
||
|
||
.1 jsr TBOX.GetChar
|
||
beq .8
|
||
|
||
cmp #C.CR
|
||
beq .8
|
||
|
||
cmp #']'
|
||
beq .8
|
||
|
||
sta (ZPPtr2),y
|
||
iny
|
||
bra .1
|
||
|
||
.8 lda #0
|
||
sta (ZPPtr2),y
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.GetLink
|
||
|
||
lda #EV.HL.PRESSED
|
||
clc
|
||
rts
|
||
|
||
lda #0
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.ScrollUp
|
||
jsr TBOX.GetBuf
|
||
|
||
ldy #S.TBOX.VScroll
|
||
lda (ZPObjPtr),y
|
||
clc
|
||
ldy #S.OBJ.InnerH
|
||
adc (ZPObjPtr),y
|
||
pha
|
||
|
||
ldy #S.TBOX.VScroll+1
|
||
lda (ZPObjPtr),y
|
||
ldy #S.OBJ.InnerH+1
|
||
adc (ZPObjPtr),y
|
||
plx
|
||
|
||
jsr TBOX.GetLineAX
|
||
bcs .8
|
||
|
||
ldy #S.TBOX.VScroll
|
||
jsr OBJ.IncWordAtY
|
||
|
||
jmp TBOX.DrawAllLines
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.ScrollDown
|
||
jsr TBOX.GetBuf
|
||
|
||
ldy #S.TBOX.VScroll+1
|
||
lda (ZPObjPtr),y
|
||
dey
|
||
ora (ZPObjPtr),y
|
||
beq .8
|
||
|
||
jsr OBJ.DecWordAtY
|
||
|
||
ldy #S.TBOX.DocY
|
||
jsr OBJ.DecWordAtY
|
||
|
||
jmp TBOX.DrawAllLines
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.SelBegin
|
||
ldy #S.TBOX.BufPtr
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.SelBegin+1
|
||
sta (ZPObjPtr),y
|
||
txa
|
||
dey
|
||
sta (ZPObjPtr),y
|
||
|
||
jmp TBOX.DrawAllLines
|
||
*--------------------------------------
|
||
TBOX.RUN.SelEnd ldy #S.TBOX.BufPtr
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.SelEnd+1
|
||
sta (ZPObjPtr),y
|
||
txa
|
||
dey
|
||
sta (ZPObjPtr),y
|
||
|
||
jmp TBOX.DrawAllLines
|
||
*--------------------------------------
|
||
TBOX.RUN.BS ldy #S.TBOX.BufPtr+1
|
||
lda (ZPObjPtr),y
|
||
dey
|
||
ora (ZPObjPtr),y
|
||
beq .9
|
||
|
||
jsr OBJ.DecWordAtY
|
||
|
||
jsr TBOX.GetBuf
|
||
|
||
lda (ZPPtr2)
|
||
cmp #C.CR
|
||
beq .2
|
||
|
||
ldy #S.TBOX.DocX
|
||
jsr OBJ.DecWordAtY
|
||
jmp TBOX.CheckViewPort
|
||
|
||
.2 ldy #S.TBOX.DocY
|
||
jsr OBJ.DecWordAtY
|
||
|
||
jmp TBOX.RUN.EOL
|
||
|
||
.9 sec
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.LF jsr TBOX.GetBuf
|
||
|
||
TBOX.RUN.LF1 jsr TBOX.GetDocYInAX
|
||
inx
|
||
bne .1
|
||
|
||
inc
|
||
|
||
.1 jsr TBOX.GetLineAX
|
||
bcs TBOX.RUN.VT.8
|
||
|
||
ldy #S.TBOX.DocY
|
||
jsr OBJ.IncWordAtY
|
||
bra TBOX.RUN.VT1
|
||
*--------------------------------------
|
||
TBOX.RUN.VT jsr TBOX.GetBuf
|
||
|
||
ldy #S.TBOX.DocY+1
|
||
lda (ZPObjPtr),y
|
||
dey
|
||
ora (ZPObjPtr),y
|
||
beq TBOX.RUN.VT.8
|
||
|
||
jsr OBJ.DecWordAtY
|
||
|
||
TBOX.RUN.VT1 jsr TBOX.GetDocYInAX
|
||
jsr TBOX.GetLineAX
|
||
|
||
jsr TBOX.GetLineLenInAXC
|
||
sta TempW
|
||
stx TempW+1
|
||
|
||
ldy #S.TBOX.DocX
|
||
cmp (ZPObjPtr),y
|
||
|
||
txa
|
||
iny
|
||
sbc (ZPObjPtr),y
|
||
bcs .1
|
||
|
||
lda TempW+1
|
||
sta (ZPObjPtr),y
|
||
dey
|
||
lda TempW
|
||
sta (ZPObjPtr),y
|
||
|
||
.1 ldy #S.TBOX.DocX
|
||
|
||
lda TempC
|
||
clc
|
||
adc (ZPObjPtr),y
|
||
tax
|
||
iny
|
||
lda TempC+1
|
||
adc (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.BufPtr+1
|
||
sta (ZPObjPtr),y
|
||
dey
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
|
||
jmp TBOX.CheckViewPort
|
||
|
||
TBOX.RUN.VT.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.FS jsr TBOX.GetBuf
|
||
|
||
TBOX.RUN.FS1 lda (ZPPtr2)
|
||
beq .8
|
||
|
||
tax
|
||
|
||
ldy #S.TBOX.BufPtr
|
||
jsr OBJ.IncWordAtY
|
||
|
||
ldy #S.TBOX.DocX
|
||
cpx #C.CR
|
||
bne .7
|
||
|
||
.1 jsr OBJ.ZeroWordAtY
|
||
|
||
ldy #S.TBOX.DocY
|
||
|
||
.7 jsr OBJ.IncWordAtY
|
||
|
||
jmp TBOX.CheckViewPort
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.SOL ldy #S.TBOX.DocX
|
||
jsr OBJ.ZeroWordAtY
|
||
|
||
jsr TBOX.GetDocYInAX
|
||
jsr TBOX.GetLineAX
|
||
|
||
ldy #S.TBOX.BufPtr
|
||
jsr TBOX.SetTempCAtY BufPtr at SOL
|
||
|
||
jmp TBOX.CheckViewPort
|
||
*--------------------------------------
|
||
TBOX.RUN.EOL jsr TBOX.GetDocYInAX
|
||
jsr TBOX.GetLineAX
|
||
jsr TBOX.GetLineLenInAXC
|
||
|
||
pha
|
||
|
||
ldy #S.TBOX.BufPtr
|
||
clc
|
||
adc TempC BufPtr at SOL+LineLen
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
adc TempC+1
|
||
sta (ZPObjPtr),y
|
||
|
||
pla
|
||
|
||
ldy #S.TBOX.DocX
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
|
||
jmp TBOX.CheckViewPort
|
||
*--------------------------------------
|
||
TBOX.RUN.CR jsr TBOX.GetBuf
|
||
jsr TBOX.ToBuf1
|
||
bcs .8 Buffer full
|
||
|
||
ldy #S.TBOX.DocX
|
||
jsr OBJ.ZeroWordAtY
|
||
|
||
jsr TBOX.RUN.LF1
|
||
|
||
jsr OBJ.CurUpdPos
|
||
|
||
bit bRepaintAll
|
||
bmi .1
|
||
|
||
jsr TBOX.DrawBottom
|
||
|
||
.1 jmp TBOX.DrawAllLines
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.PGUP
|
||
*--------------------------------------
|
||
TBOX.RUN.PGDN lda #0
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.QUIT lda #3 User Interrupt
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.RUN.Home ldy #S.TBOX.DocX
|
||
jsr OBJ.ZeroWordAtY
|
||
|
||
ldy #S.TBOX.DocY
|
||
jsr OBJ.ZeroWordAtY
|
||
|
||
ldy #S.TBOX.BufPtr
|
||
jsr OBJ.ZeroWordAtY
|
||
|
||
jmp TBOX.CheckViewPort
|
||
*--------------------------------------
|
||
TBOX.RUN.EraseCL
|
||
jsr TBOX.GetDocYInAX
|
||
jsr TBOX.GetLineAX
|
||
jsr TBOX.GetLineLenInAXC
|
||
jsr TBOX.DeleteAXC
|
||
|
||
jmp TBOX.RUN.VT1
|
||
*--------------------------------------
|
||
TBOX.RUN.EOF lda #$ff
|
||
tax
|
||
jsr TBOX.GetLineAX
|
||
|
||
ldy #S.TBOX.DocY
|
||
lda TempI
|
||
sta (ZPObjPtr),y
|
||
tax
|
||
|
||
lda TempI+1
|
||
iny
|
||
sta (ZPObjPtr),y
|
||
|
||
jsr TBOX.GetLineAX
|
||
jsr TBOX.GetLineLenInAXC
|
||
|
||
ldy #S.TBOX.DocX
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.BufCnt+1
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
dey
|
||
lda (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.BufPtr
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
|
||
jmp TBOX.CheckViewPort
|
||
*--------------------------------------
|
||
TBOX.DrawAllLines
|
||
ldy #1 hObj
|
||
lda (pStack),y
|
||
>PUSHA
|
||
|
||
jsr OBJ.Draw.Body
|
||
inc pStack
|
||
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.DrawBottom ldy #S.OBJ.InnerY
|
||
lda (ZPObjPtr),y
|
||
|
||
clc
|
||
|
||
ldy #S.OBJ.CurY
|
||
adc (ZPObjPtr),y
|
||
>PUSHA Start
|
||
|
||
ldy #S.OBJ.InnerH
|
||
lda (ZPObjPtr),y
|
||
|
||
sec
|
||
|
||
ldy #S.OBJ.CurY
|
||
sbc (ZPObjPtr),y
|
||
>PUSHA Count
|
||
|
||
ldy #S.OBJ.CurY
|
||
lda (ZPObjPtr),y Relative Y
|
||
>PUSHA
|
||
|
||
jmp OBJ.Draw.Lines
|
||
*--------------------------------------
|
||
TBOX.DrawCurLine
|
||
ldy #S.OBJ.InnerY
|
||
lda (ZPObjPtr),y
|
||
|
||
clc
|
||
|
||
ldy #S.OBJ.CurY
|
||
adc (ZPObjPtr),y
|
||
>PUSHA Start
|
||
|
||
lda #1
|
||
>PUSHA Count
|
||
|
||
ldy #S.OBJ.CurY
|
||
lda (ZPObjPtr),y Relative Y
|
||
>PUSHA
|
||
|
||
jmp OBJ.Draw.Lines
|
||
*--------------------------------------
|
||
* hyperlinks: [[text to show]targetUrl]
|
||
*--------------------------------------
|
||
TBOX.Draw ldy #S.TBOX.VScroll
|
||
lda (ZPObjPtr),y
|
||
clc
|
||
adc (pStack) Relative Y
|
||
tax
|
||
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
adc #0
|
||
|
||
jsr TBOX.GetLineAX
|
||
bcs .5
|
||
|
||
ldy #S.TBOX.HScroll
|
||
lda (ZPObjPtr),y
|
||
beq .12
|
||
|
||
tax
|
||
|
||
.1 jsr TBOX.GetLineChar
|
||
beq .5
|
||
|
||
cmp #C.CR
|
||
beq .5
|
||
|
||
dex
|
||
bne .1
|
||
|
||
.12 ldy #S.OBJ.InnerW
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
|
||
stz bTemp1 reset selection
|
||
stz bTemp2 reset Hyperlink
|
||
|
||
.2 jsr TBOX.CheckSel
|
||
|
||
jsr TBOX.GetLineChar
|
||
beq .3
|
||
|
||
cmp #C.CR
|
||
beq .3
|
||
|
||
jsr LB.COut
|
||
dex
|
||
bne .2
|
||
|
||
.3 txa
|
||
bne .6
|
||
|
||
clc
|
||
rts
|
||
|
||
.5 ldy #S.OBJ.InnerW
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
|
||
.6 jsr TBOX.ResetSel
|
||
|
||
lda #C.SPACE
|
||
|
||
.7 jsr LB.COut
|
||
dex
|
||
bne .7
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.Activate
|
||
*--------------------------------------
|
||
TBOX.Deactivate clc
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.SetProp jsr OBJ.SetProp
|
||
bcs .9
|
||
|
||
cpy #S.OBJ.pBuf
|
||
bne .8
|
||
|
||
ldy #S.TBOX.DocX
|
||
lda #0
|
||
|
||
.1 sta (ZPObjPtr),y
|
||
iny
|
||
cpy #S.TBOX.BufPtr+2
|
||
bcc .1
|
||
|
||
jsr OBJ.GetBuf
|
||
|
||
ldx #0
|
||
ldy #0
|
||
|
||
.2 lda (ZPPtr1),y
|
||
beq .3
|
||
|
||
iny
|
||
bne .2
|
||
|
||
inc ZPPtr1+1
|
||
inx
|
||
bra .2
|
||
|
||
.3 tya
|
||
ldy #S.TBOX.BufCnt
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
|
||
jmp OBJ.Draw.Body.I
|
||
|
||
.8 clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
TBOX.GetBuf jsr OBJ.GetBuf
|
||
|
||
ldy #S.TBOX.BufPtr
|
||
lda ZPPtr1
|
||
clc
|
||
adc (ZPObjPtr),y
|
||
sta ZPPtr2
|
||
|
||
lda ZPPtr1+1
|
||
iny
|
||
adc (ZPObjPtr),y
|
||
sta ZPPtr2+1
|
||
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.GetDocYInAX
|
||
ldy #S.TBOX.DocY
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.GetLineAX stx TempW
|
||
sta TempW+1 Req Line Num
|
||
|
||
jsr OBJ.GetBuf get pBuf in ZPPtr1
|
||
|
||
stz TempI Current Line Num
|
||
stz TempI+1
|
||
|
||
stz TempC Buffer Ofs
|
||
stz TempC+1
|
||
|
||
.1 lda TempI
|
||
eor TempW
|
||
bne .2
|
||
|
||
lda TempI+1
|
||
eor TempW+1
|
||
beq .8
|
||
|
||
.2 lda (ZPPtr1)
|
||
beq .9
|
||
|
||
jsr TBOX.GetLineLenInAXC
|
||
bcc .9
|
||
|
||
* sec
|
||
|
||
pha
|
||
|
||
adc TempC
|
||
sta TempC
|
||
txa
|
||
adc TempC+1
|
||
sta TempC+1
|
||
|
||
sec
|
||
|
||
pla
|
||
|
||
adc ZPPtr1
|
||
sta ZPPtr1
|
||
txa
|
||
adc ZPPtr1+1
|
||
sta ZPPtr1+1
|
||
|
||
inc TempI
|
||
bne .1
|
||
|
||
inc TempI+1
|
||
bra .1
|
||
|
||
.9 sec
|
||
rts
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.SetLineAtDocX
|
||
ldy #S.TBOX.DocX
|
||
lda (ZPObjPtr),y
|
||
clc
|
||
adc ZPPtr1
|
||
sta ZPPtr1
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
adc ZPPtr1+1
|
||
sta ZPPtr1+1
|
||
|
||
* clc
|
||
|
||
dey #S.TBOX.DocX
|
||
lda (ZPObjPtr),y
|
||
adc TempC
|
||
sta TempC
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
adc TempC+1
|
||
sta TempC+1
|
||
rts
|
||
*--------------------------------------
|
||
* TempC charPos
|
||
*--------------------------------------
|
||
TBOX.CheckSel ldy #S.TBOX.SelBegin
|
||
jsr TBOX.CmpTempCAtY
|
||
bcc TBOX.ResetSel
|
||
|
||
iny #S.TBOX.SelEnd
|
||
jsr TBOX.CmpTempCAtY
|
||
bcs TBOX.ResetSel
|
||
*--------------------------------------
|
||
TBOX.SetSel bit bTemp1
|
||
bmi .8
|
||
|
||
phx
|
||
ldx #SEQ.INVERSE-SEQS
|
||
jsr LB.SeqOut
|
||
plx
|
||
|
||
dec bTemp1
|
||
|
||
.8 rts
|
||
*--------------------------------------
|
||
TBOX.ResetSel bit bTemp1
|
||
bpl .8
|
||
|
||
phx
|
||
ldx #SEQ.NORMAL-SEQS
|
||
jsr LB.SeqOut
|
||
plx
|
||
|
||
stz bTemp1
|
||
|
||
.8 rts
|
||
*--------------------------------------
|
||
TBOX.GetLineChar
|
||
ldy #S.OBJ.F
|
||
lda (ZPObjPtr),y
|
||
and #S.OBJ.F.bEdit
|
||
bne TBOX.GetChar
|
||
|
||
bit bTemp2
|
||
bmi .1
|
||
|
||
jsr TBOX.GetChar
|
||
beq .8
|
||
|
||
cmp #'['
|
||
bne .8 NZ
|
||
|
||
cmp (ZPPtr1) "[["
|
||
bne .8 NZ
|
||
|
||
dec bTemp2
|
||
rts NZ
|
||
|
||
.1 jsr TBOX.GetChar
|
||
beq .8
|
||
|
||
cmp #'['
|
||
beq .1 skip 2nd [
|
||
|
||
cmp #']' "[[display]"
|
||
bne .8 NZ
|
||
|
||
stz bTemp2
|
||
|
||
.2 jsr TBOX.GetChar skip "link]"
|
||
beq .8
|
||
|
||
cmp #']'
|
||
bne .2
|
||
|
||
lda #']' NZ
|
||
|
||
.8 rts
|
||
*--------------------------------------
|
||
TBOX.GetChar lda (ZPPtr1)
|
||
beq .8
|
||
|
||
inc ZPPtr1
|
||
bne .1
|
||
|
||
inc ZPPtr1+1
|
||
|
||
.1 inc TempC
|
||
bne .8
|
||
|
||
inc TempC+1 NZ
|
||
|
||
.8 rts
|
||
*--------------------------------------
|
||
TBOX.CmpTempCAtY
|
||
lda TempC
|
||
cmp (ZPObjPtr),y
|
||
lda TempC+1
|
||
iny
|
||
sbc (ZPObjPtr),y
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.SetTempCAtY
|
||
lda TempC
|
||
sta (ZPObjPtr),y
|
||
lda TempC+1
|
||
iny
|
||
sta (ZPObjPtr),y
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.GetLineLenInAXC
|
||
lda ZPPtr1+1
|
||
pha
|
||
|
||
clc
|
||
|
||
ldy #0
|
||
ldx #0
|
||
|
||
.1 lda (ZPPtr1),y
|
||
beq .8
|
||
|
||
eor #C.CR
|
||
beq .7
|
||
|
||
iny
|
||
bne .1
|
||
|
||
inx
|
||
bra .1
|
||
|
||
.7 sec to skip CR
|
||
|
||
.8 pla
|
||
sta ZPPtr1+1
|
||
|
||
tya AX = len, CS if CR ended
|
||
|
||
rts
|
||
*--------------------------------------
|
||
TBOX.ToBuf1 ldy #S.TBOX.BufCnt
|
||
lda (ZPObjPtr),y
|
||
ldy #S.OBJ.BufSize
|
||
cmp (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.BufCnt+1
|
||
lda (ZPObjPtr),y
|
||
ldy #S.OBJ.BufSize+1
|
||
sbc (ZPObjPtr),y
|
||
bcs .9
|
||
|
||
dey ldy #S.TBOX.BufCnt
|
||
|
||
jsr OBJ.IncWordAtY
|
||
|
||
jsr TBOX.GetBuf
|
||
|
||
jsr TBOX.Insert1
|
||
|
||
lda (pStack)
|
||
sta (ZPPtr2)
|
||
|
||
.8 clc
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
TBOX.Insert1 lda #1
|
||
ldx #0
|
||
|
||
TBOX.InsertAX clc
|
||
adc ZPPtr2
|
||
sta ZPPtr3
|
||
txa
|
||
adc ZPPtr2+1
|
||
sta ZPPtr3+1
|
||
|
||
ldy #0
|
||
ldx #0
|
||
|
||
.1 lda (ZPPtr2),y
|
||
beq .4
|
||
|
||
iny
|
||
bne .1
|
||
|
||
inx
|
||
inc ZPPtr2+1
|
||
inc ZPPtr3+1
|
||
bra .1
|
||
|
||
.2 dex
|
||
|
||
.3 dey
|
||
|
||
lda (ZPPtr2),y
|
||
|
||
.4 sta (ZPPtr3),y
|
||
tya
|
||
bne .3
|
||
|
||
txa
|
||
bne .2
|
||
|
||
.8 rts
|
||
*--------------------------------------
|
||
TBOX.Delete1 lda #1
|
||
ldx #0
|
||
*--------------------------------------
|
||
TBOX.DeleteAX clc
|
||
TBOX.DeleteAXC adc ZPPtr2
|
||
sta ZPPtr3
|
||
txa
|
||
adc ZPPtr2+1
|
||
sta ZPPtr3+1
|
||
|
||
ldy #0
|
||
|
||
.1 lda (ZPPtr3),y
|
||
sta (ZPPtr2),y
|
||
beq .8
|
||
|
||
iny
|
||
bne .1
|
||
|
||
inc ZPPtr3+1
|
||
inc ZPPtr2+1
|
||
bra .1
|
||
|
||
.8 rts
|
||
*--------------------------------------
|
||
TBOX.CheckViewPort
|
||
jsr TBOX.SetViewPort
|
||
bit bRepaintAll
|
||
bpl .8
|
||
|
||
jmp TBOX.DrawAllLines
|
||
|
||
.8 jmp OBJ.CurUpdPos
|
||
*--------------------------------------
|
||
TBOX.SetViewPort
|
||
stz bRepaintAll
|
||
|
||
ldy #S.TBOX.DocX+1
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
dey
|
||
lda (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.HScroll
|
||
sec
|
||
sbc (ZPObjPtr),y
|
||
|
||
ldy #S.OBJ.CurX set CurX = DocX - HScroll
|
||
sta (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.HScroll+1
|
||
txa
|
||
sbc (ZPObjPtr),y DocX => HScroll ?
|
||
|
||
bcs .10 yes..
|
||
|
||
ldy #S.TBOX.DocX+1 no, set HScroll = DocX
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
dey
|
||
lda (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.HScroll
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
|
||
lda #0 set CurX = 0
|
||
|
||
bra .20
|
||
*--------------------------------------
|
||
.10 ldy #S.TBOX.HScroll+1
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
dey
|
||
lda (ZPObjPtr),y
|
||
|
||
ldy #S.OBJ.InnerW
|
||
clc
|
||
adc (ZPObjPtr),y
|
||
bcc .11
|
||
|
||
inx
|
||
|
||
.11 ldy #S.TBOX.DocX (HScroll + InnerW) > (DocX + 1) ?
|
||
clc DocX+1
|
||
sbc (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
sbc (ZPObjPtr),y
|
||
bcs .21 no...
|
||
|
||
ldy #S.OBJ.InnerW yes, set HScroll = DocX - (InnerW - 1)
|
||
lda (ZPObjPtr),y
|
||
dec
|
||
sta TempW (InnerW - 1)
|
||
|
||
ldy #S.TBOX.DocX
|
||
lda (ZPObjPtr),y
|
||
sec
|
||
sbc TempW
|
||
tax
|
||
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
sbc #0
|
||
bcc .12 DocX - (InnerW - 1) < 0
|
||
|
||
ldy #S.TBOX.HScroll+1
|
||
sta (ZPObjPtr),y
|
||
dey
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
|
||
lda TempW set CurX = (InnerW - 1)
|
||
|
||
bra .20
|
||
|
||
.12 lda #0
|
||
ldy #S.TBOX.HScroll+1
|
||
sta (ZPObjPtr),y
|
||
dey
|
||
sta (ZPObjPtr),y
|
||
|
||
.20 ldy #S.OBJ.CurX
|
||
sta (ZPObjPtr),y
|
||
|
||
dec bRepaintAll
|
||
*--------------------------------------
|
||
.21 ldy #S.TBOX.DocY+1
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
dey
|
||
lda (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.VScroll
|
||
sec
|
||
sbc (ZPObjPtr),y
|
||
|
||
ldy #S.OBJ.CurY set CurY = DocY - VScroll
|
||
sta (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.VScroll+1
|
||
txa
|
||
sbc (ZPObjPtr),y DocY => VScroll ?
|
||
bcs .30 yes..
|
||
|
||
ldy #S.TBOX.DocY+1 no, set VScroll = DocY
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
dey
|
||
lda (ZPObjPtr),y
|
||
|
||
ldy #S.TBOX.VScroll
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
|
||
lda #0 set CurY = 0
|
||
|
||
bra .40
|
||
*--------------------------------------
|
||
.30 ldy #S.TBOX.VScroll+1
|
||
lda (ZPObjPtr),y
|
||
tax
|
||
dey
|
||
lda (ZPObjPtr),y
|
||
|
||
ldy #S.OBJ.InnerH
|
||
clc
|
||
adc (ZPObjPtr),y
|
||
bcc .31
|
||
|
||
inx
|
||
|
||
.31 ldy #S.TBOX.DocY (VScroll + InnerH) > (DocY + 1) ?
|
||
clc DocY+1
|
||
sbc (ZPObjPtr),y
|
||
iny
|
||
txa
|
||
sbc (ZPObjPtr),y
|
||
bcs .41 no...
|
||
|
||
ldy #S.OBJ.InnerH yes, set VScroll = DocY - (InnerH - 1)
|
||
lda (ZPObjPtr),y
|
||
dec
|
||
sta TempW (InnerH - 1)
|
||
|
||
ldy #S.TBOX.DocY
|
||
lda (ZPObjPtr),y
|
||
sec
|
||
sbc TempW
|
||
tax
|
||
|
||
iny
|
||
lda (ZPObjPtr),y
|
||
sbc #0
|
||
bcc .32 DocY - (InnerH - 1) < 0
|
||
|
||
ldy #S.TBOX.VScroll+1
|
||
sta (ZPObjPtr),y
|
||
dey
|
||
txa
|
||
sta (ZPObjPtr),y
|
||
|
||
lda TempW set CurY = (InnerH - 1)
|
||
|
||
bra .40
|
||
|
||
.32 ldy #S.TBOX.VScroll
|
||
jsr OBJ.ZeroWordAtY
|
||
|
||
ldy #S.TBOX.DocY
|
||
lda (ZPObjPtr),y
|
||
|
||
.40 ldy #S.OBJ.CurY
|
||
sta (ZPObjPtr),y
|
||
|
||
dec bRepaintAll
|
||
|
||
.41 clc CLC RTS to jmp to
|
||
rts
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/lib/libtui.s.tbox
|
||
LOAD usr/src/lib/libtui.s
|
||
ASM
|