NEW
  AUTO 3,1
                .LIST OFF
                .OP 65C02
                .OR $2000
                .TF root/asmtest/testtui
*--------------------------------------
                .INB inc/macros.i
                .INB inc/a2osx.i
                .INB inc/libtui.i
*--------------------------------------
EV.SAVE         .EQ $C0
EV.OK           .EQ $CE
EV.CANCEL       .EQ $CF
*--------------------------------------
                .DUMMY
                .OR ZPBIN
ZS.START
ZPPtr1          .BS 2
hCTX            .BS 1
hSCRN           .BS 1
hTBOX1          .BS 1
hDLGS           .BS 1
ZS.END          .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     				S.PS.F.EVENT
                .DA #0
                .DA CS.END-CS.START  	Code Size (without Constants)
                .DA DS.END-DS.START  	Data Segment Size
                .DA #64     			Stack Size
                .DA #ZS.END-ZS.START 	Zero Page Size
                .DA 0
*--------------------------------------
.1              .DA CS.INIT
                .DA CS.RUN
                .DA CS.DOEVENT
                .DA CS.QUIT
L.LIBTUI        .DA LIBTUI
*--------------------------------------
L.SCRN.Title    .DA SCRN.Title
L.SCRN.Status   .DA SCRN.Status
L.TBOX1.Title   .DA TBOX1.Title
L.TBOX1.Status  .DA TBOX1.Status
L.LBOX1.List    .DA LBOX1.List
L.LABEL.Label   .DA LABEL.Label
L.RADIO1.List   .DA RADIO1.List
L.CBOX1.Label   .DA CBOX1.Label
L.BUTQ.Label    .DA BUTQ.Label
L.BUTS.Label    .DA BUTS.Label
L.DLGS.Title    .DA DLGS.Title
L.BUT.OK        .DA BUT.OK
L.BUT.Cancel    .DA BUT.Cancel
                .DA 0
*--------------------------------------
CS.INIT         >LDYA L.LIBTUI
                >SYSCALL LoadLib
                bcs CS.INIT.RTS

                sta hLIBTUI

*               clc

CS.INIT.RTS     rts
*--------------------------------------
CS.RUN      	>LIBCALL hLIBTUI,LIBTUI.Init
                bcs CS.RUN.RTS

                sta hCTX
                jsr CS.SCRN.Init
                bcs CS.RUN.RTS

                jsr CS.TBOX1.Init
                bcs CS.RUN.RTS

                jsr CS.LBOX1.Init
                bcs CS.RUN.RTS

                jsr CS.TLINE.Init
                bcs CS.RUN.RTS

                jsr CS.RADIO.Init
                bcs CS.RUN.RTS

                jsr CS.CBOX.Init
                bcs CS.RUN.RTS

                jsr CS.BUT.Init
                bcs CS.RUN.RTS

                jsr CS.SCRN.Draw  		Will Call SCRN.Draw
 
				lda hTBOX1
                >LIBCALL hLIBTUI,LIBTUI.Activate
*--------------------------------------
CS.RUN.LOOP     lda hSCRN
                >LIBCALL hLIBTUI,LIBTUI.Exec
				bcc .10
				
				tay
				beq CS.RUN.LOOP
				
                rts

.10             cmp #EV.RESIZE
                bne .1

                jsr CS.SCRN.Draw
                bcs .9

                bra CS.RUN.LOOP

.1              cmp #EV.SAVE
                bne .2

                jsr CS.RUN.DLGSAVE
                bcc CS.RUN.LOOP

.2              cmp #EV.QUIT
                bne CS.RUN.LOOP

                lda hSCRN
                >LIBCALL hLIBTUI,LIBTUI.Destroy

                lda #0
                sec
.9
CS.RUN.RTS      rts
*--------------------------------------
CS.SCRN.Init    >PUSHB hCTX    			hParent
                >PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus
                >LIBCALL hLIBTUI,LIBTUI.NewScrn
                bcs .9

                sta hSCRN
                >PUSHA
                >PUSHBI S.OBJ.pTITLE
                >PUSHEA.G SCRN.TitleBuf
                >LIBCALL hLIBTUI,LIBTUI.SetProp
                >PUSHB hSCRN
                >PUSHBI S.OBJ.pSTATUS
                >PUSHW L.SCRN.Status
                >LIBCALL hLIBTUI,LIBTUI.SetProp

.9              rts
*--------------------------------------
CS.TBOX1.Init   >LDYAI 1024
                >SYSCALL GetMem
                bcs CS.RUN.RTS

                >STYA ZPPtr1

                txa
                >STA.G TBOX1.hBuf
                lda #0
                sta (ZPPtr1)
                >PUSHB hSCRN   hParent
                >PUSHBI 1    X1
                >PUSHBI 1    Y1
                >PUSHBI 46    W
                >PUSHBI 20    H
                >PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder+S.OBJ.F.bTitle+S.OBJ.F.bStatus+S.OBJ.F.bEdit
                >LDA.G TBOX1.hBuf
                >SYSCALL GetMemPtr
                >PUSHYA
                >PUSHWI 1024
                >LIBCALL hLIBTUI,LIBTUI.NewTBox
                bcs .9

                sta hTBOX1
                >PUSHA
                >PUSHBI S.OBJ.pTITLE
                >PUSHW L.TBOX1.Title
                >LIBCALL hLIBTUI,LIBTUI.SetProp
                >PUSHB hTBOX1
                >PUSHBI S.OBJ.pSTATUS
                >PUSHW L.TBOX1.Status
                >LIBCALL hLIBTUI,LIBTUI.SetProp

.9              rts
*--------------------------------------
CS.LBOX1.Init   >PUSHB hSCRN   hParent
                >PUSHBI 50    X1
                >PUSHBI 1    Y1
                >PUSHBI 20    W
                >PUSHBI 9    H
                >PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder
                >PUSHW L.LBOX1.List
                >PUSHEA.G LBOX1.Var
                >LIBCALL hLIBTUI,LIBTUI.NewLBox
                rts
*--------------------------------------
CS.TLINE.Init   >PUSHB hSCRN   hParent
                >PUSHBI 50    X1
                >PUSHBI 11    Y1
                >PUSHW L.LABEL.Label
                >LIBCALL hLIBTUI,LIBTUI.NewLabel
                bcs .9

                >PUSHB hSCRN   hParent
                >PUSHBI 50    X1
                >PUSHBI 12    Y1
                >PUSHBI 25    W
                >PUSHEA.G TLINE.Buf
                >PUSHWI 65    Len
                >LIBCALL hLIBTUI,LIBTUI.NewTLine

.9              rts
*--------------------------------------
CS.RADIO.Init   >PUSHB hSCRN   hParent
                >PUSHBI 50    X1
                >PUSHBI 14    Y1
                >PUSHBI 0
                >PUSHBI 0
                >PUSHW L.RADIO1.List
                >PUSHEA.G RADIO1.Var
                >LIBCALL hLIBTUI,LIBTUI.NewRadio
                rts
*--------------------------------------
CS.CBOX.Init    >PUSHB hSCRN   hParent
                >PUSHBI 50    X1
                >PUSHBI 18    Y1
                >PUSHBI 0
                >PUSHBI 0
                >PUSHW L.CBOX1.Label
                >PUSHEA.G CBOX1.Var
                >LIBCALL hLIBTUI,LIBTUI.NewCBox
                rts
*--------------------------------------
CS.BUT.Init     >PUSHB hSCRN   hParent
                >PUSHBI 50    X1
                >PUSHBI 20    Y1
                >PUSHBI 19    Ctrl-S
                >PUSHBI EV.SAVE
                >PUSHW L.BUTS.Label
                >LIBCALL hLIBTUI,LIBTUI.NewBut
                bcs .9

                >PUSHB hSCRN   hParent
                >PUSHBI 65    X1
                >PUSHBI 20    Y1
                >PUSHBI 17    Ctrl-Q
                >PUSHBI EV.QUIT
                >PUSHW L.BUTQ.Label
                >LIBCALL hLIBTUI,LIBTUI.NewBut
.9
CS.BUT.Init.RTS rts
*--------------------------------------
CS.RUN.DLGSAVE  >PUSHB hSCRN    		hParent
                >PUSHBI 70    			W
                >PUSHBI 11   			H
                >PUSHW L.DLGS.Title
                >LIBCALL hLIBTUI,LIBTUI.NewDlg
                bcs CS.BUT.Init.RTS

                sta hDLGS

                >PUSHB hDLGS   			hParent
                >PUSHBI 50    			X1
                >PUSHBI 7    			Y1
                >PUSHBI C.CR
                >PUSHBI EV.OK
                >PUSHW L.BUT.OK
                >LIBCALL hLIBTUI,LIBTUI.NewBut
                bcs .9

                sta ZPPtr1

                >PUSHB hDLGS   			hParent
                >PUSHBI 57    			X1
                >PUSHBI 7    			Y1
                >PUSHBI 3    			Ctrl-C
                >PUSHBI EV.CANCEL
                >PUSHW L.BUT.Cancel
                >LIBCALL hLIBTUI,LIBTUI.NewBut
                bcs .9

                lda hDLGS
                >LIBCALL hLIBTUI,LIBTUI.Draw
                bcs .9

                lda ZPPtr1
                >LIBCALL hLIBTUI,LIBTUI.Activate

				lda hDLGS
                >LIBCALL hLIBTUI,LIBTUI.Exec

.9              php
                pha
                lda hDLGS
                >LIBCALL hLIBTUI,LIBTUI.Destroy

                lda hSCRN
                >LIBCALL hLIBTUI,LIBTUI.Draw
                pla
                plp
                rts
*--------------------------------------
CS.DOEVENT      sec       				do not discard TIMER event
                rts
*--------------------------------------
CS.QUIT         >LDA.G TBOX1.hBuf
                beq .1

                >SYSCALL FreeMem

.1              lda hCTX
                beq .2

                >LIBCALL hLIBTUI,LIBTUI.Close

.2              lda hLIBTUI
                beq .8

                >SYSCALL UnloadLib

.8              clc
                rts
*--------------------------------------
CS.SCRN.Draw    lda hSCRN
                >SYSCALL GetMemPtr
                >STYA ZPPtr1
                >PUSHEA.G SCRN.TitleBuf
                >PUSHW L.SCRN.Title
                ldy #S.OBJ.X1

.1              lda (ZPPtr1),y
                >PUSHA
                iny
                cpy #S.OBJ.InnerH+1
                bne .1

                >PUSHBI 10
                >SYSCALL sprintf
                lda hSCRN
                >LIBCALL hLIBTUI,LIBTUI.Draw
                rts
*--------------------------------------
CS.END
*--------------------------------------
LIBTUI          .AZ "libtui"
hLIBTUI         .BS 1
*--------------------------------------
SCRN.Title      .AZ "Window: X1=%d,Y1=%d, W=%d,H=%d, X2=%d,Y2=%d, iX=%d,iY=%d, iW=%d,iH=%d"
SCRN.Status     .AZ "Status bar..."
*--------------------------------------
TBOX1.Title     .AZ "Text Box Title"
TBOX1.Status    .AZ "Text Box Status"
*--------------------------------------
LBOX1.List      .AS "Item 1"
                .DA #C.CR
                .AS "Item 2"
                .DA #C.CR
                .AS "Item 3"
                .DA #C.CR
                .AS "Item 4"
                .DA #C.CR
                .AS "Item 5"
                .DA #C.CR
                .AS "Item 6 very long line"
                .DA #C.CR
                .AS "Item 7"
                .DA #C.CR
                .AS "Item 8"
                .DA #C.CR
                .AS "Item 9"
                .DA #C.CR
                .AS "Item 10"
                .DA #C.CR
                .AS "Item 11"
                .DA #C.CR
                .AS "Item 12"
                .DA #C.CR
                .AS "Item 13"
                .DA #C.CR
                .AS "Item 14 last one"
                .DA #0
*--------------------------------------
LABEL.Label     .AZ "This is a label."
*--------------------------------------
RADIO1.List     .DA #C.ESC
                .AS "[91mRed"
                .DA #C.CR
                .DA #C.ESC
                .AS "[92mGreen"
                .DA #C.CR
                .DA #C.ESC
                .AS "[96mBlue"
                .DA #0
*--------------------------------------
CBOX1.Label     .AZ "Check Me"
*--------------------------------------
BUTS.Label      .AZ "(^S)ave..."
BUTQ.Label      .AZ "(^Q)uit"
DLGS.Title      .AZ "Save As..."
BUT.OK          .AZ " OK "
BUT.Cancel      .AZ "Cancel"
*--------------------------------------
                .DUMMY
                .OR 0
DS.START
SCRN.TitleBuf   .BS 80
CBOX1.Var       .BS 1
TLINE.Buf       .BS 65
RADIO1.Var      .BS 1
LBOX1.Var       .BS 1
TBOX1.hBuf      .BS 1
DS.END          .ED
*--------------------------------------
MAN
SAVE root/asmtest/testtui.s
ASM
