mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-28 10:52:33 +00:00
0ea8d62a96
LIBTUI : DLG fix
404 lines
9.1 KiB
Plaintext
404 lines
9.1 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
.LIST OFF
|
||
.OP 65C02
|
||
.OR $2000
|
||
.TF lib/libtui
|
||
*--------------------------------------
|
||
.INB inc/macros.i
|
||
.INB inc/a2osx.i
|
||
.INB inc/kernel.i
|
||
.INB inc/net.telnet.i
|
||
.INB inc/libtui.i
|
||
*--------------------------------------
|
||
.DUMMY
|
||
.OR ZPLIB
|
||
|
||
ZPCtxPtr .BS 2
|
||
ZPObjPtr .BS 2
|
||
ZPLineBufPtr .BS 2
|
||
ZPLineBufCnt .BS 2
|
||
|
||
ZPPtr1 .BS 2
|
||
ZPPtr2 .BS 2
|
||
ZPPtr3 .BS 2
|
||
bTemp1 .BS 1
|
||
bTemp2 .BS 1
|
||
|
||
TempW .BS 2
|
||
TempC .BS 2
|
||
TempI .BS 2
|
||
|
||
bRepaintAll .BS 1
|
||
hObj .BS 1
|
||
|
||
.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
|
||
.DA CTX.Init
|
||
.DA CTX.Close
|
||
*--------------------------------------
|
||
.DA SCRN.New
|
||
.DA DLG.New
|
||
.DA LABEL.New
|
||
.DA TLINE.New
|
||
.DA TBOX.New
|
||
.DA LBOX.New
|
||
.DA CBOX.New
|
||
.DA BUT.New
|
||
.DA RADIO.New
|
||
.DA OBJ.Exec
|
||
.DA LIB.Destroy
|
||
.DA OBJ.Run
|
||
.DA OBJ.Draw
|
||
.DA OBJ.GetProp
|
||
.DA LIB.SetProp
|
||
.DA OBJ.Activate
|
||
.DA OBJ.Deactivate
|
||
*--------------------------------------
|
||
J.ObjDestroy .DA OBJ.Destroy
|
||
.DA OBJ.Destroy
|
||
.DA OBJ.Destroy
|
||
.DA OBJ.Destroy
|
||
.DA OBJ.Destroy
|
||
.DA OBJ.Destroy
|
||
.DA OBJ.Destroy
|
||
.DA OBJ.Destroy
|
||
.DA OBJ.Destroy
|
||
*--------------------------------------
|
||
J.ObjRun .DA CONT.Run
|
||
.DA CONT.Run
|
||
.DA LABEL.Run
|
||
.DA TLINE.Run
|
||
.DA TBOX.Run
|
||
.DA LBOX.Run
|
||
.DA CBOX.Run
|
||
.DA BUT.Run
|
||
.DA RADIO.Run
|
||
*--------------------------------------
|
||
J.ObjDraw .DA CONT.Draw
|
||
.DA CONT.Draw
|
||
.DA LABEL.Draw
|
||
.DA TLINE.Draw
|
||
.DA TBOX.Draw
|
||
.DA LBOX.Draw
|
||
.DA CBOX.Draw
|
||
.DA BUT.Draw
|
||
.DA RADIO.Draw
|
||
*--------------------------------------
|
||
J.ObjActivate .DA OBJ.Activate
|
||
.DA OBJ.Activate
|
||
.DA LABEL.Activate
|
||
.DA TLINE.Activate
|
||
.DA TBOX.Activate
|
||
.DA LBOX.Activate
|
||
.DA CBOX.Activate
|
||
.DA BUT.Activate
|
||
.DA RADIO.Activate
|
||
*--------------------------------------
|
||
J.ObjDeactivate .DA OBJ.Deactivate
|
||
.DA OBJ.Deactivate
|
||
.DA LABEL.Deactivate
|
||
.DA TLINE.Deactivate
|
||
.DA TBOX.Deactivate
|
||
.DA LBOX.Deactivate
|
||
.DA CBOX.Deactivate
|
||
.DA BUT.Deactivate
|
||
.DA RADIO.Deactivate
|
||
*--------------------------------------
|
||
J.ObjSetProp .DA OBJ.SetProp
|
||
.DA OBJ.SetProp
|
||
.DA OBJ.SetProp
|
||
.DA OBJ.SetProp
|
||
.DA TBOX.SetProp
|
||
.DA OBJ.SetProp
|
||
.DA OBJ.SetProp
|
||
.DA OBJ.SetProp
|
||
.DA OBJ.SetProp
|
||
*--------------------------------------
|
||
J.TBOX.RUN.RO .DA TBOX.RUN.Ignore
|
||
.DA TBOX.RUN.Ignore Ctrl-A
|
||
.DA TBOX.RUN.Ignore Ctrl-B
|
||
.DA TBOX.RUN.Ignore Ctrl-C
|
||
.DA TBOX.RUN.Ignore Ctrl-D
|
||
.DA TBOX.RUN.Ignore Ctrl-E
|
||
.DA TBOX.RUN.Ignore Ctrl-F
|
||
.DA TBOX.RUN.Ignore Ctrl-G
|
||
.DA TBOX.RUN.PrevLink BS
|
||
.DA TBOX.RUN.Ignore TAB
|
||
.DA TBOX.RUN.ScrollUp LF
|
||
.DA TBOX.RUN.ScrollDown VT
|
||
.DA TBOX.RUN.EOL Ctrl-L
|
||
.DA TBOX.RUN.GetLink CR
|
||
.DA TBOX.RUN.Ignore Ctrl-N
|
||
.DA TBOX.RUN.PGUP Ctrl-O
|
||
.DA TBOX.RUN.PGDN Ctrl-P
|
||
.DA TBOX.RUN.QUIT Ctrl-Q
|
||
.DA TBOX.RUN.Ignore Ctrl-R
|
||
.DA TBOX.RUN.Ignore Ctrl-S
|
||
.DA TBOX.RUN.Home Ctrl-T
|
||
.DA TBOX.RUN.NextLink FS
|
||
.DA TBOX.RUN.Ignore Ctrl-V
|
||
.DA TBOX.RUN.Ignore Ctrl-W
|
||
.DA TBOX.RUN.Ignore Ctrl-X
|
||
.DA TBOX.RUN.EOF Ctrl-Y
|
||
.DA TBOX.RUN.Ignore Ctrl-Z
|
||
*--------------------------------------
|
||
J.TBOX.RUN.RW .DA TBOX.RUN.Ignore
|
||
.DA TBOX.RUN.Ignore
|
||
.DA TBOX.RUN.SelBegin Ctrl-B
|
||
.DA TBOX.RUN.Ignore ** Copy
|
||
.DA TBOX.RUN.Ignore ** Delete Selection
|
||
.DA TBOX.RUN.SelEnd Ctrl-E
|
||
.DA TBOX.RUN.Ignore ** Find...
|
||
.DA TBOX.RUN.SOL Ctrl-G
|
||
.DA TBOX.RUN.BS
|
||
.DA TBOX.RUN.Ignore TAB
|
||
.DA TBOX.RUN.LF
|
||
.DA TBOX.RUN.VT
|
||
.DA TBOX.RUN.EOL Ctrl-L
|
||
.DA TBOX.RUN.CR
|
||
.DA TBOX.RUN.Ignore ** Next...
|
||
.DA TBOX.RUN.PGUP Ctrl-O
|
||
.DA TBOX.RUN.PGDN Ctrl-P
|
||
.DA TBOX.RUN.QUIT Ctrl-Q
|
||
.DA TBOX.RUN.Ignore ** Replace
|
||
.DA TBOX.RUN.Ignore ** save
|
||
.DA TBOX.RUN.Home Ctrl-T
|
||
.DA TBOX.RUN.FS
|
||
.DA TBOX.RUN.Ignore ** Paste
|
||
.DA TBOX.RUN.EraseCL Ctrl-W
|
||
.DA TBOX.RUN.Ignore ** Cut
|
||
.DA TBOX.RUN.EOF Ctrl-Y
|
||
.DA TBOX.RUN.Ignore ** delete under cusror
|
||
*--------------------------------------
|
||
L.SEQ.INIT .DA SEQ.INIT
|
||
L.SEQ.GOTOXY .DA SEQ.GOTOXY
|
||
L.SEQ.COLOR .DA SEQ.COLOR
|
||
L.SEQ.CLOSE .DA SEQ.CLOSE
|
||
L.FMT.ESCCSI.R .DA FMT.ESCCSI.R
|
||
.DA 0
|
||
*--------------------------------------
|
||
LIB.LOAD lda LibCnt
|
||
bne .8
|
||
|
||
>LDYAI 512
|
||
>SYSCALL2 GetMem
|
||
bcs .9
|
||
|
||
>STYA LineBuf
|
||
stx hLineBuf
|
||
|
||
|
||
|
||
.8 inc LibCnt
|
||
clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
LIB.UNLOAD dec LibCnt
|
||
bne .8
|
||
|
||
lda hLineBuf
|
||
>SYSCALL2 FreeMem
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
LIB.SetProp ldy #3 hObj
|
||
lda (pStack),y
|
||
|
||
jsr LIB.GetOBJ
|
||
|
||
ldy #2
|
||
lda (pStack),y
|
||
tay prop
|
||
|
||
>PULLA Value
|
||
sta (ZPObjPtr),y
|
||
iny
|
||
>PULLA
|
||
sta (ZPObjPtr),y
|
||
|
||
dey prop
|
||
|
||
inc pStack prop
|
||
inc pStack hObj
|
||
|
||
lda (ZPObjPtr) S.OBJ.T
|
||
tax
|
||
jmp (J.ObjSetProp,x)
|
||
*--------------------------------------
|
||
LIB.Destroy ldx ZPObjPtr
|
||
phx
|
||
ldx ZPObjPtr+1
|
||
phx
|
||
|
||
pha
|
||
jsr LIB.GetOBJ
|
||
|
||
ldy #S.OBJ.S
|
||
lda (ZPObjPtr),y
|
||
and #S.OBJ.S.bHasChilds
|
||
beq .3
|
||
|
||
ldy #S.OBJ.Childs
|
||
|
||
.1 lda (ZPObjPtr),y
|
||
beq .2
|
||
|
||
phy
|
||
pha
|
||
jsr OBJ.Destroy
|
||
|
||
pla
|
||
>SYSCALL2 FreeMem
|
||
ply
|
||
|
||
.2 iny
|
||
cpy #S.OBJ
|
||
bcc .1
|
||
|
||
pla
|
||
pha
|
||
jsr LIB.GetOBJ
|
||
|
||
.3 jsr .7
|
||
|
||
pla
|
||
>SYSCALL2 FreeMem
|
||
|
||
plx
|
||
stx ZPObjPtr+1
|
||
plx
|
||
stx ZPObjPtr
|
||
|
||
rts
|
||
|
||
.7 lda (ZPObjPtr) S.OBJ.T
|
||
tax
|
||
jmp (J.ObjDestroy,x)
|
||
*--------------------------------------
|
||
LIB.GetCTX >LDYA ZPObjPtr
|
||
>STYA ZPCtxPtr
|
||
|
||
.1 lda (ZPCtxPtr)
|
||
* cmp #S.OBJ.T.SCRN
|
||
beq .8
|
||
|
||
jsr .8
|
||
bra .1
|
||
|
||
.8 ldy #S.OBJ.hParent
|
||
lda (ZPCtxPtr),y
|
||
beq *
|
||
>SYSCALL2 GetMemPtr
|
||
bcs *
|
||
>STYA ZPCtxPtr
|
||
|
||
rts
|
||
*--------------------------------------
|
||
LIB.GetOBJ >SYSCALL2 GetMemPtr
|
||
>STYA ZPObjPtr
|
||
rts
|
||
*--------------------------------------
|
||
.INB usr/src/lib/libtui.s.io
|
||
.INB usr/src/lib/libtui.s.lb
|
||
.INB usr/src/lib/libtui.s.ctx
|
||
.INB usr/src/lib/libtui.s.cont
|
||
.INB usr/src/lib/libtui.s.obj
|
||
.INB usr/src/lib/libtui.s.scrn
|
||
.INB usr/src/lib/libtui.s.dlg
|
||
.INB usr/src/lib/libtui.s.label
|
||
.INB usr/src/lib/libtui.s.tline
|
||
.INB usr/src/lib/libtui.s.tbox
|
||
.INB usr/src/lib/libtui.s.lbox
|
||
.INB usr/src/lib/libtui.s.cbox
|
||
.INB usr/src/lib/libtui.s.but
|
||
.INB usr/src/lib/libtui.s.radio
|
||
*--------------------------------------
|
||
CS.END
|
||
*--------------------------------------
|
||
LibCnt .BS 1
|
||
hLineBuf .BS 1
|
||
LineBuf .BS 2
|
||
*--------------------------------------
|
||
ESC.In .AS "DABC"
|
||
ESC.Out .DA #C.BS,#C.VT,#C.LF,#21
|
||
*--------------------------------------
|
||
FMT.ESCCSI.R .AZ "%d;%d"
|
||
*--------------------------------------
|
||
OBJ.SIZES .DA S.SCRN,S.DLG,S.LABEL,S.TLINE,S.TBOX,S.LBOX,S.CBOX,S.BUT,S.RADIO
|
||
*--------------------------------------
|
||
OBJ.COLORS .DA #93,#44 SCRN
|
||
.DA #93,#46 DLG
|
||
.DA #93,#0 LABEL
|
||
.DA #93,#104 TLINE
|
||
.DA #93,#104 TBOX
|
||
.DA #93,#104 LBOX
|
||
.DA #93,#0 CBOX
|
||
.DA #92,#100 BUT
|
||
.DA #93,#0 RADIO
|
||
*--------------------------------------
|
||
SEQ.INIT .CS "\ec" reset
|
||
.CS "\e[999;999H" Set Cursor Pos to 999,999
|
||
.CS "\e[6n" then query Cursor Pos
|
||
.CS "\e(B" font select
|
||
.CS "\e)0" font select
|
||
.CS "\e[?7l" Disable Line Wrap
|
||
.CZ "\e[?25l" Hide Cursor
|
||
*--------------------------------------
|
||
SEQ.GOTOXY .CZ "\e[%d;%dH"
|
||
*--------------------------------------
|
||
SEQ.COLOR .CZ "\e[%d;%dm"
|
||
*--------------------------------------
|
||
SEQS .EQ *
|
||
*--------------------------------------
|
||
SEQ.CURON .CZ "\e[?25h" Show Cursor
|
||
SEQ.CUROFF .CZ "\e[?25l" Hide Cursor
|
||
*--------------------------------------
|
||
SEQ.BAR .CS "\e[1m" BOLD
|
||
.CS "\e[7m" INVERSE
|
||
.CZ "\e[37;40m"
|
||
SEQ.BAREND .CZ "\e[0m"
|
||
*--------------------------------------
|
||
SEQ.BORDERTL .DA #C.SO,#'l'
|
||
.DA #0
|
||
SEQ.BORDERTR .DA #C.SO,#'k',#C.SI
|
||
.DA #0
|
||
SEQ.BORDERBL .DA #C.SO,#'m'
|
||
.DA #0
|
||
SEQ.BORDERBR .DA #C.SO,#'j',#C.SI
|
||
.DA #0
|
||
*SEQ.BORDERH .DA #C.SO,#'q',#C.SI
|
||
* .DA #0
|
||
SEQ.BORDERV .DA #C.SO,#'x',#C.SI
|
||
.DA #0
|
||
SEQ.INVERSE .CZ "\e[7m"
|
||
SEQ.NORMAL .CZ "\e[0m"
|
||
*--------------------------------------
|
||
*SEQ.SCROLLCURUP .CS "\e[?7l\e[%d;%dr"
|
||
*SEQ.SCROLLUP .CZ "\eD"
|
||
*SEQ.SCROLLCURDN .CS "\e[?7l\e[%d;%dr"
|
||
*SEQ.SCROLLDN .CZ "\eM"
|
||
*--------------------------------------
|
||
SEQ.CLOSE .CZ "\ec\e[?7h" Enable Line Wrap
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/lib/libtui.s
|
||
ASM
|