A2osX/ROOT/asmtest/TESTTUI.S.txt

383 lines
12 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 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
bcs .9
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 44 W
>PUSHBI 20 H
>PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder+S.OBJ.F.bTitle+S.OBJ.F.bStatus
>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 hCTX 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
.1 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