2021-04-15 20:52:08 +00:00
|
|
|
|
NEW
|
|
|
|
|
AUTO 3,1
|
|
|
|
|
.LIST OFF
|
|
|
|
|
.OP 65C02
|
|
|
|
|
.OR $2000
|
|
|
|
|
.TF lib/libtui
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.INB inc/macros.i
|
|
|
|
|
.INB inc/a2osx.i
|
2021-08-13 18:34:20 +00:00
|
|
|
|
.INB inc/net.telnet.i
|
2021-04-15 20:52:08 +00:00
|
|
|
|
.INB inc/libtui.i
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.DUMMY
|
|
|
|
|
.OR ZPLIB
|
2021-08-13 18:34:20 +00:00
|
|
|
|
hScrn .BS 1
|
2021-04-29 11:56:34 +00:00
|
|
|
|
.BS 1
|
2021-08-13 18:34:20 +00:00
|
|
|
|
ZPScrnPtr .BS 2
|
2021-04-15 20:52:08 +00:00
|
|
|
|
ZPObjPtr .BS 2
|
|
|
|
|
ZPPtr1 .BS 2
|
|
|
|
|
.ED
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* File Header (16 Bytes)
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CS.START cld
|
|
|
|
|
jmp (.1,x)
|
|
|
|
|
.DA #$61 6502,Level 1 (65c02)
|
|
|
|
|
.DA #1 BIN Layout Version 1
|
|
|
|
|
.DA 0
|
|
|
|
|
.DA CS.END-CS.START
|
|
|
|
|
.DA 0
|
|
|
|
|
.DA 0
|
|
|
|
|
.DA 0
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* Relocation Table
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.1 .DA LIB.LOAD
|
|
|
|
|
.DA LIB.UNLOAD
|
2021-08-13 18:34:20 +00:00
|
|
|
|
.DA LIB.Open
|
|
|
|
|
.DA LIB.Close
|
|
|
|
|
.DA LIB.LBOXNew
|
2021-04-29 11:56:34 +00:00
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
L.SEQ.TERMCAP .DA SEQ.TERMCAP
|
2021-04-29 11:56:34 +00:00
|
|
|
|
L.SEQ.INIT .DA SEQ.INIT
|
2021-08-13 18:34:20 +00:00
|
|
|
|
L.FMT.ESCCSI.R .DA FMT.ESCCSI.R
|
2021-04-15 20:52:08 +00:00
|
|
|
|
.DA 0
|
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.LOAD lda LibCnt
|
|
|
|
|
bne .8
|
|
|
|
|
|
|
|
|
|
>LDYAI 256
|
|
|
|
|
>SYSCALL2 GetMem
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
stx hLineBuf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.8 inc LibCnt
|
|
|
|
|
clc
|
|
|
|
|
.9 rts
|
2021-04-15 20:52:08 +00:00
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.UNLOAD dec LibCnt
|
|
|
|
|
bne .8
|
|
|
|
|
|
|
|
|
|
lda hLineBuf
|
|
|
|
|
>SYSCALL2 FreeMem
|
|
|
|
|
|
|
|
|
|
.8 clc
|
2021-04-15 20:52:08 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.Open >LDYAI S.SCRN
|
|
|
|
|
>SYSCALL2 GetMem
|
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
>STYA ZPScrnPtr
|
|
|
|
|
txa
|
|
|
|
|
>PUSHA
|
|
|
|
|
|
|
|
|
|
lda #0
|
2021-04-29 11:56:34 +00:00
|
|
|
|
|
2021-08-13 18:34:20 +00:00
|
|
|
|
ldy #S.SCRN-1
|
2021-04-29 11:56:34 +00:00
|
|
|
|
|
2021-08-13 18:34:20 +00:00
|
|
|
|
.10 sta (ZPScrnPtr),y
|
|
|
|
|
dey
|
|
|
|
|
bpl .10
|
2021-04-29 11:56:34 +00:00
|
|
|
|
|
2021-08-13 18:34:20 +00:00
|
|
|
|
jsr CheckCh.Reset
|
|
|
|
|
|
|
|
|
|
>LDYA L.SEQ.TERMCAP
|
|
|
|
|
>SYSCALL2 puts
|
|
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
|
>PUSHA
|
|
|
|
|
|
|
|
|
|
.1 >SLEEP
|
|
|
|
|
|
|
|
|
|
ldy #1
|
|
|
|
|
lda (pStack),y
|
|
|
|
|
jsr GetScrn
|
|
|
|
|
|
|
|
|
|
jsr CheckCh
|
|
|
|
|
bcs .97
|
|
|
|
|
|
|
|
|
|
beq .2
|
|
|
|
|
|
|
|
|
|
>SYSCALL2 PutChar
|
|
|
|
|
bcs .97
|
|
|
|
|
|
|
|
|
|
.2 ldy #S.OBJ.W
|
|
|
|
|
lda (ZPScrnPtr),y
|
|
|
|
|
bne .8
|
|
|
|
|
|
|
|
|
|
lda (pStack)
|
|
|
|
|
dec
|
|
|
|
|
sta (pStack)
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
lda #80
|
|
|
|
|
|
|
|
|
|
ldy #S.OBJ.W
|
|
|
|
|
sta (ZPScrnPtr),y
|
|
|
|
|
|
|
|
|
|
lda #24
|
|
|
|
|
iny S.OBJ.H
|
|
|
|
|
sta (ZPScrnPtr),y
|
|
|
|
|
|
|
|
|
|
.8 inc pStack
|
|
|
|
|
|
|
|
|
|
>LDYA ZPScrnPtr
|
|
|
|
|
jsr LIB.SetObjX2Y2
|
|
|
|
|
|
|
|
|
|
>PULLA hScrn
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.97 inc pStack
|
|
|
|
|
inc pStack
|
|
|
|
|
|
|
|
|
|
.98 pha
|
|
|
|
|
lda hScrn
|
|
|
|
|
>SYSCALL2 FreeMem
|
|
|
|
|
pla
|
|
|
|
|
sec
|
|
|
|
|
|
|
|
|
|
.99 rts
|
2021-04-15 20:52:08 +00:00
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.Close >SYSCALL2 FreeMem
|
|
|
|
|
|
|
|
|
|
clc
|
2021-04-15 20:52:08 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.LBOXNew >PULLW ZPPtr1 Params
|
2021-04-29 11:56:34 +00:00
|
|
|
|
|
2021-08-13 18:34:20 +00:00
|
|
|
|
>PULLA hScrn
|
|
|
|
|
jsr GetScrn
|
2021-04-15 20:52:08 +00:00
|
|
|
|
|
|
|
|
|
>LDYAI S.LBOX
|
2021-08-13 18:34:20 +00:00
|
|
|
|
>SYSCALL2 GetMem
|
2021-04-15 20:52:08 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>STYA ZPObjPtr
|
|
|
|
|
|
|
|
|
|
lda #S.OBJ.T.LBOX
|
|
|
|
|
sta (ZPObjPtr)
|
|
|
|
|
|
2021-04-29 11:56:34 +00:00
|
|
|
|
ldy #S.OBJ.P
|
2021-08-13 18:34:20 +00:00
|
|
|
|
lda hScrn
|
2021-04-29 11:56:34 +00:00
|
|
|
|
sta (ZPObjPtr),y
|
|
|
|
|
|
|
|
|
|
iny #S.OBJ.F
|
2021-08-13 18:34:20 +00:00
|
|
|
|
lda #S.OBJ.F.bHBorder+S.OBJ.F.bVBorder
|
|
|
|
|
sta (ZPObjPtr),y
|
|
|
|
|
|
|
|
|
|
ldy #S.OBJ.X1
|
2021-04-15 20:52:08 +00:00
|
|
|
|
|
|
|
|
|
.1 lda (ZPPtr1),y
|
|
|
|
|
sta (ZPObjPtr),y
|
2021-08-13 18:34:20 +00:00
|
|
|
|
iny
|
2021-04-15 20:52:08 +00:00
|
|
|
|
cpy #S.OBJ.H+1
|
|
|
|
|
bne .1
|
|
|
|
|
|
2021-08-13 18:34:20 +00:00
|
|
|
|
|
|
|
|
|
|
2021-04-15 20:52:08 +00:00
|
|
|
|
.8 txa
|
|
|
|
|
clc
|
|
|
|
|
.9 rts
|
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.LBOXSetData >SYSCALL2 GetMemPtr
|
2021-04-29 11:56:34 +00:00
|
|
|
|
>STYA ZPObjPtr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rts
|
2021-04-15 20:52:08 +00:00
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.LBOXFocus
|
2021-04-15 20:52:08 +00:00
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.LBOXRun
|
2021-04-15 20:52:08 +00:00
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.LBOXClose
|
2021-04-15 20:52:08 +00:00
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.SetObjX2Y2 >STYA ZPObjPtr
|
|
|
|
|
|
2021-04-15 20:52:08 +00:00
|
|
|
|
ldy #S.OBJ.X1
|
|
|
|
|
jsr .1
|
|
|
|
|
|
|
|
|
|
ldy #S.OBJ.Y1
|
|
|
|
|
|
|
|
|
|
.1 clc
|
|
|
|
|
|
|
|
|
|
lda (ZPObjPtr),y
|
|
|
|
|
iny
|
|
|
|
|
iny S.OBJ.W/H
|
|
|
|
|
adc (ZPObjPtr),y
|
|
|
|
|
iny
|
|
|
|
|
iny S.OBJ.X2/Y2
|
|
|
|
|
sta (ZPObjPtr),y
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LIB.DrawFrame
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CheckCh ldy #S.PS.hStdIn
|
|
|
|
|
lda (pPS),y
|
|
|
|
|
>SYSCALL2 FEOF
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
tay
|
|
|
|
|
bne .18
|
|
|
|
|
|
|
|
|
|
>SYSCALL2 GetChar
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
tax
|
|
|
|
|
|
|
|
|
|
ldy #S.SCRN.bEscMode
|
|
|
|
|
lda (ZPScrnPtr),y
|
|
|
|
|
beq .20
|
|
|
|
|
|
|
|
|
|
bmi .40 IAC mode
|
|
|
|
|
|
|
|
|
|
iny S.SCRN.InBufPtr
|
|
|
|
|
lda (ZPScrnPtr),y
|
|
|
|
|
|
|
|
|
|
cpx #'[' CSI ?
|
|
|
|
|
bne .10
|
|
|
|
|
|
|
|
|
|
cmp #S.SCRN.InBufPtr
|
|
|
|
|
bne .49 buffer not empty...bad SEQ
|
|
|
|
|
|
|
|
|
|
.10 jsr CheckCh.ToBuf
|
|
|
|
|
bcs .49 Buffer Full
|
|
|
|
|
|
|
|
|
|
cpx #'['
|
|
|
|
|
beq .18
|
|
|
|
|
|
|
|
|
|
cpx #64
|
|
|
|
|
bcs CheckCh.ESCSEQ if CC, not a letter...SEQ is incomplete
|
|
|
|
|
|
|
|
|
|
.18 lda #0
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.20 cpx #C.ESC
|
|
|
|
|
bne .30
|
|
|
|
|
|
|
|
|
|
inc A = $01
|
|
|
|
|
|
|
|
|
|
jsr CheckCh.SetMode
|
|
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.30 cpx #IAC
|
|
|
|
|
bne .38
|
|
|
|
|
|
|
|
|
|
dec A = $FF
|
|
|
|
|
jsr CheckCh.SetMode
|
|
|
|
|
|
|
|
|
|
inx X = 0
|
|
|
|
|
|
|
|
|
|
.38 txa
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.40 jsr CheckCh.ToBuf
|
|
|
|
|
bcs .49 Buffer Full
|
|
|
|
|
|
|
|
|
|
cpy #S.SCRN.InBuf First char...
|
|
|
|
|
beq .48
|
|
|
|
|
|
|
|
|
|
ldy #S.SCRN.InBuf
|
|
|
|
|
lda (ZPScrnPtr),y
|
|
|
|
|
cmp #SB
|
|
|
|
|
bne CheckCh.IACSEQ
|
|
|
|
|
|
|
|
|
|
cpx #SE
|
|
|
|
|
bne .48
|
|
|
|
|
|
|
|
|
|
bra CheckCh.IACSEQ
|
|
|
|
|
|
|
|
|
|
.49 jsr CheckCh.Reset
|
|
|
|
|
|
|
|
|
|
.48 lda #0
|
|
|
|
|
clc
|
|
|
|
|
.9 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CheckCh.ESCSEQ cmp #S.SCRN.InBuf+2
|
|
|
|
|
bcs .2
|
|
|
|
|
|
|
|
|
|
ldy #ESC.Out-ESC.In-1
|
|
|
|
|
txa
|
|
|
|
|
|
|
|
|
|
.1 cmp ESC.In,y
|
|
|
|
|
beq .7
|
|
|
|
|
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
bra .6
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* \e[xxx;yyyR
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
.2 cpx #'R' Response to cursor position query?
|
|
|
|
|
bne .6
|
|
|
|
|
|
|
|
|
|
lda #S.SCRN.InBuf+1 skip ESC [
|
|
|
|
|
jsr GetScrnOfs
|
|
|
|
|
>PUSHYA
|
|
|
|
|
|
|
|
|
|
>PUSHW L.FMT.ESCCSI.R
|
|
|
|
|
|
|
|
|
|
lda #S.OBJ.H
|
|
|
|
|
jsr GetScrnOfs
|
|
|
|
|
>PUSHYA
|
|
|
|
|
|
|
|
|
|
lda #S.OBJ.W
|
|
|
|
|
jsr GetScrnOfs
|
|
|
|
|
>PUSHYA
|
|
|
|
|
|
|
|
|
|
>PUSHBI 4 2 pointers
|
|
|
|
|
>SYSCALL2 sscanf
|
|
|
|
|
|
|
|
|
|
.6 ldx #0
|
|
|
|
|
bra .8
|
|
|
|
|
|
|
|
|
|
.7 ldx ESC.Out,y
|
|
|
|
|
|
|
|
|
|
.8 jsr CheckCh.Reset
|
|
|
|
|
|
|
|
|
|
txa
|
|
|
|
|
clc
|
|
|
|
|
.9 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CheckCh.IACSEQ
|
|
|
|
|
>DEBUG
|
|
|
|
|
jsr CheckCh.Reset
|
|
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CheckCh.Reset lda #0
|
|
|
|
|
|
|
|
|
|
CheckCh.SetMode ldy #S.SCRN.bEscMode
|
|
|
|
|
sta (ZPScrnPtr),y
|
|
|
|
|
|
|
|
|
|
iny Y = S.SCRN.InBufPtr
|
|
|
|
|
tya
|
|
|
|
|
sta (ZPScrnPtr),y
|
|
|
|
|
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
CheckCh.ToBuf ldy #S.SCRN.InBufPtr
|
|
|
|
|
lda (ZPScrnPtr),y
|
|
|
|
|
|
|
|
|
|
cmp #S.SCRN.EndBuf buffer full
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
phy
|
|
|
|
|
inc
|
|
|
|
|
tay
|
|
|
|
|
txa
|
|
|
|
|
sta (ZPScrnPtr),y
|
|
|
|
|
tya
|
|
|
|
|
ply
|
|
|
|
|
sta (ZPScrnPtr),y
|
|
|
|
|
|
|
|
|
|
* clc
|
2021-04-15 20:52:08 +00:00
|
|
|
|
|
2021-08-13 18:34:20 +00:00
|
|
|
|
.9 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
GetScrn sta hScrn
|
|
|
|
|
>SYSCALL2 GetMemPtr
|
|
|
|
|
>STYA ZPScrnPtr
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
GetScrnOfs clc
|
|
|
|
|
adc ZPScrnPtr
|
|
|
|
|
tay
|
|
|
|
|
lda ZPScrnPtr+1
|
|
|
|
|
adc #0
|
|
|
|
|
.9 rts
|
2021-04-15 20:52:08 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
CS.END
|
|
|
|
|
*--------------------------------------
|
2021-08-13 18:34:20 +00:00
|
|
|
|
LibCnt .BS 1
|
|
|
|
|
hLineBuf .BS 1
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
ESC.In .AS "DBAC"
|
|
|
|
|
ESC.Out .HS 080A0B15
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
FMT.ESCCSI.R .AZ "%d;%d"
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
SEQ.TERMCAP .DA #C.ESC
|
|
|
|
|
.AS "[999;999H" Set Cursor Pos to 999,999
|
|
|
|
|
.DA #C.ESC
|
|
|
|
|
.AZ "[6n" then query Cursor Pos
|
2021-04-29 11:56:34 +00:00
|
|
|
|
SEQ.INIT .AS "\ec\e(B\e)0"
|
|
|
|
|
SEQ.SCROLLRGN .AZ "\e[?7l\e[2;%dr"
|
|
|
|
|
SEQ.SCROLLCURUP .AS "\e[?7l\e[%d;%dr"
|
|
|
|
|
SEQ.SCROLLUP .AZ "\eD"
|
|
|
|
|
SEQ.SCROLLCURDN .AS "\e[?7l\e[%d;%dr"
|
|
|
|
|
SEQ.SCROLLDN .AZ "\eM"
|
|
|
|
|
SEQ.CLOSE .AZ "\ec"
|
2021-04-15 20:52:08 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE usr/src/lib/libtui.s
|
|
|
|
|
ASM
|