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