A2osX/LIB/LIBTUI.S.txt

404 lines
9.1 KiB
Plaintext
Raw Normal View History

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
.INB inc/kernel.i
.INB inc/net.telnet.i
2021-04-15 20:52:08 +00:00
.INB inc/libtui.i
*--------------------------------------
.DUMMY
.OR ZPLIB
ZPCtxPtr .BS 2
2021-04-15 20:52:08 +00:00
ZPObjPtr .BS 2
ZPLineBufPtr .BS 2
ZPLineBufCnt .BS 2
2021-04-15 20:52:08 +00:00
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
2021-04-15 20:52:08 +00:00
.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
2021-04-29 11:56:34 +00:00
*--------------------------------------
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
2021-04-15 20:52:08 +00:00
.DA 0
*--------------------------------------
LIB.LOAD lda LibCnt
bne .8
>LDYAI 512
>SYSCALL2 GetMem
bcs .9
>STYA LineBuf
stx hLineBuf
.8 inc LibCnt
clc
.9 rts
2021-04-15 20:52:08 +00:00
*--------------------------------------
LIB.UNLOAD dec LibCnt
bne .8
lda hLineBuf
>SYSCALL2 FreeMem
.8 clc
2021-04-15 20:52:08 +00:00
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
2021-04-15 20:52:08 +00:00
*--------------------------------------
LIB.GetOBJ >SYSCALL2 GetMemPtr
>STYA ZPObjPtr
2021-04-15 20:52:08 +00:00
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
2021-04-15 20:52:08 +00:00
*--------------------------------------
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
2021-04-15 20:52:08 +00:00
*--------------------------------------
MAN
SAVE usr/src/lib/libtui.s
ASM