A2osX/LIB/LIBTUI.S.txt
burniouf 04a83f00f3 SH:new ALIAS cmd, new && operator
MKDIR:completely implemented
LS/RM/MV/CP: combined switches
KERNEL:SList API now handle options to handle several languages/parsers
2022-10-07 21:21:37 +02:00

291 lines
6.9 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
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 OBJ.Destroy
.DA OBJ.Run
.DA OBJ.Draw
.DA OBJ.GetProp
.DA OBJ.SetProp
.DA OBJ.Activate
.DA OBJ.Deactivate
*--------------------------------------
J.ObjDestroy .DA SCRN.Destroy
.DA DLG.Destroy
.DA LABEL.Destroy
.DA TLINE.Destroy
.DA TBOX.Destroy
.DA LBOX.Destroy
.DA CBOX.Destroy
.DA BUT.Destroy
.DA RADIO.Destroy
*--------------------------------------
J.ObjRun .DA SCRN.Run
.DA DLG.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 SCRN.Draw
.DA DLG.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 SCRN.Activate
.DA DLG.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 SCRN.Deactivate
.DA DLG.Deactivate
.DA LABEL.Deactivate
.DA TLINE.Deactivate
.DA TBOX.Deactivate
.DA LBOX.Deactivate
.DA CBOX.Deactivate
.DA BUT.Deactivate
.DA RADIO.Deactivate
*--------------------------------------
J.TBOX.RUN .DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.SelBegin Ctrl-B
.DA TBOX.RUN.Ignore Ctrl-C
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.SelEnd Ctrl-E
.DA TBOX.RUN.Ignore
.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
.DA TBOX.RUN.PGUP Ctrl-O
.DA TBOX.RUN.PGDN Ctrl-P
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Home Ctrl-T
.DA TBOX.RUN.FS
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.EraseCL Ctrl-W
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.EOF Ctrl-Y
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
*--------------------------------------
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.GetCTX ldy #S.OBJ.hParent
lda (ZPObjPtr),y
.1 >SYSCALL2 GetMemPtr
>STYA ZPCtxPtr
lda (ZPCtxPtr)
* cmp #S.OBJ.T.SCRN
beq .8
ldy #S.OBJ.hParent
lda (ZPCtxPtr),y
bra .1
.8 rts
*--------------------------------------
LIB.GetOBJ >SYSCALL2 GetMemPtr
>STYA ZPObjPtr
rts
*--------------------------------------
.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,#C.FS
*--------------------------------------
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\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