A2osX-1.00 PREVIEW : major code factorization & bugfixes in BIN/cmds (cont.)

This commit is contained in:
burniouf 2025-02-15 10:49:28 +01:00
parent 59d383b6e0
commit 9f0e6f58b9
25 changed files with 160 additions and 819 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -315,8 +315,8 @@ CS.RUN.CheckErr bcs .1
rts
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
tya

View File

@ -70,7 +70,7 @@ CS.INIT clc
CS.RUN lda #S.FI.A.FULL+S.FI.A.B+S.FI.A.I
sta AttrAND
inc ArgIndex
.10 inc ArgIndex
lda ArgIndex
>LIBC ArgV
bcs .8
@ -84,7 +84,7 @@ CS.RUN lda #S.FI.A.FULL+S.FI.A.B+S.FI.A.I
bne .4
.1 jsr CS.RUN.CheckSwitch
bcc CS.RUN
bcc .10
.9 >LDYA L.MSG.USAGE
>LIBC PutS
@ -97,7 +97,7 @@ CS.RUN lda #S.FI.A.FULL+S.FI.A.B+S.FI.A.I
>LDYA ZPPtr1
jsr X.InitSrcDirYA
bcc CS.RUN
bcc .10
rts
.8 >LDA.G pSrcBasePath+1
@ -249,7 +249,7 @@ CS.RUN.SetAttr >SS
ldy #S.STAT.P.ACCESS
lda (ZPFileStat),y
and AttrAND
ora AttrORA
>PUSHA
@ -319,7 +319,7 @@ CS.RUN.CheckSwitch
sta $0,y
clc
rts
*--------------------------------------
.4 iny
lda (ZPPtr1),y
bne .9
@ -341,6 +341,7 @@ CS.RUN.CheckSwitch
.6 dex
bpl .5
sec
rts

View File

@ -231,10 +231,12 @@ CS.RUN.CheckErr bcs .1
>LIBC PutS
rts
.1 tay
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
txa
tya
>PUSHA
>PUSHBI 1
>LIBC PrintF
@ -243,6 +245,7 @@ CS.RUN.CheckErr bcs .1
lda bContinue
eor #$80
asl
pla
rts
*--------------------------------------

View File

@ -232,26 +232,35 @@ CS.RUN.CheckErr bcs .1
rts
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
pla
pha
tya
>PUSHA
>PUSHBI 1
>LIBC PrintF
>LDA.G bContinue
>SR
lda bContinue
eor #$80
asl
pla
rts
*--------------------------------------
CS.RUN.GetFilePath
>SS
>PUSHW ZPFullPath
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>SR
>SS
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LIBC StrCat
>SR
rts
*--------------------------------------
CS.SIG sec

View File

@ -266,31 +266,41 @@ CS.RUN.Str2Mode >LIBC ArgV
rts
*--------------------------------------
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>LIBC PutS
rts
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
pla
pha
tya
>PUSHA
>PUSHBI 1
>LIBC PrintF
>LDA.G bContinue
>SR
lda bContinue
eor #$80
asl
pla
rts
*--------------------------------------
CS.RUN.GetFilePath
>SS
>PUSHW ZPFullPath
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>SR
>SS
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LIBC StrCat
>SR
rts
*--------------------------------------
CS.SIG sec

View File

@ -232,11 +232,12 @@ CS.RUN.CheckErr bcs .1
>LIBC PutS
rts
.1 >SS
pha
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
pla
pha
tya
>PUSHA
>PUSHBI 1
>LIBC PrintF
@ -250,13 +251,17 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.GetFilePath
>SS
>PUSHW ZPFullPath
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>SR
>SS
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LIBC StrCat
>SR
rts
*--------------------------------------
CS.SIG sec

View File

@ -229,10 +229,12 @@ CS.RUN.CheckErr bcs .1
>LIBC PutS
rts
.1 tay
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
txa
tya
>PUSHA
>PUSHBI 1
>LIBC PrintF
@ -241,6 +243,7 @@ CS.RUN.CheckErr bcs .1
lda bContinue
eor #$80
asl
pla
rts
*--------------------------------------

View File

@ -15,6 +15,7 @@ X.COPY.TO.DEST .EQ 1
X.DELETE.SOURCE .EQ 0
*--------------------------------------
.INB usr/src/shared/x.cpmvrm.s
*--------------------------------------
.INB usr/src/shared/x.fileenum.s
.INB usr/src/shared/x.checkctrl.s
*--------------------------------------

View File

@ -227,7 +227,7 @@ Ctrl.LF jsr BUF.GetNextLine
Ctrl.VT >LDA.G FileY+1
tax
dey
>DEBUG
ora (pData),y
beq .8

View File

@ -231,6 +231,7 @@ CS.RUN.CheckErr bcs .1
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
tya
@ -242,6 +243,7 @@ CS.RUN.CheckErr bcs .1
lda bContinue
eor #$80
asl
pla
rts
*--------------------------------------

View File

@ -27,13 +27,13 @@ ZPFullPath .BS 2
ZPRelPath .BS 2
ZPFileBuf .BS 2
ArgIndex .BS 1
hFile .BS 1
pFile .BS 2
FilePos .BS 4
ByteCnt .BS 2
ArgIndex .BS 1
bPause .BS 1
bContinue .BS 1
bRecurse .BS 1
@ -45,19 +45,20 @@ ZS.END .ED
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 Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #2 BIN Layout Version 2
.DA #0
.DA #0
.DA CS.END
.DA ID.END
.DA DS.END
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.SIG
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE
L.MSG.CRLF .DA MSG.CRLF
@ -69,7 +70,7 @@ CS.INIT clc
*--------------------------------------
CS.RUN inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
>LIBC ArgV
bcs .5
>STYA ZPPtr1
@ -81,12 +82,13 @@ CS.RUN inc ArgIndex
bcc CS.RUN
.9 >LDYA L.MSG.USAGE
>SYSCALL PutS
>LIBC PutS
lda #E.SYN
sec
rts
.4 >LDA.G hSrcBasePath
.4 >LDYA.G pSrcBasePath
cmp #0
bne .9
>LDYA ZPPtr1
@ -95,7 +97,7 @@ CS.RUN inc ArgIndex
.99 rts
*--------------------------------------
.5 >LDA.G hSrcBasePath
.5 >LDA.G pSrcBasePath+1
bne .6
ldy #S.PS.pCWD
@ -107,13 +109,12 @@ CS.RUN inc ArgIndex
>STYA ZPPtr1
.6 >LDYAI 256
>SYSCALL Malloc
>LIBC Malloc
bcs .99
>STYA ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>LDYA.G pSrcBasePath
>STYA ZPPtr1
ldy #$ff
@ -131,7 +132,7 @@ CS.RUN inc ArgIndex
sta ZPRelPath+1
>LDYAI 256
>SYSCALL Malloc
>LIBC Malloc
bcs .99
>STYA ZPFileBuf
@ -228,10 +229,11 @@ CS.RUN.FILE jsr X.IncludeMatch
.99 rts
*--------------------------------------
CS.RUN.FILE.LOOP
.1 >PUSHB hFile
.1 >SS
>PUSHW pFile
>PUSHW ZPFileBuf
>PUSHWI 256
>SYSCALL FRead
>LIBC FRead
bcs .8
>STYA ByteCnt
@ -241,10 +243,12 @@ CS.RUN.FILE.LOOP
jsr CS.RUN.FSeek
bcs .99
>PUSHB hFile
>SS
>PUSHW pFile
>PUSHW ZPFileBuf
>PUSHW ByteCnt
>SYSCALL FWrite
>LIBC FWrite
>SR
bcs .99
lda ByteCnt
@ -287,10 +291,16 @@ CS.RUN.FILE.MOD ldy #0
CS.RUN.CheckErr bcc .9
pha
tay
>SS
>PUSHW L.MSG.ERR
tya
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
>LIBC PrintF
>SR
lda bContinue
eor #$80
asl
@ -299,63 +309,62 @@ CS.RUN.CheckErr bcc .9
.9 rts
*--------------------------------------
CS.RUN.GetFilePath
>SS
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCpy
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>SR
>SS
>PUSHW ZPFullPath
>PUSHW ZPFileName
>SYSCALL StrCat
>LIBC StrCat
>SR
rts
*--------------------------------------
CS.RUN.OpenFile >PUSHW ZPFullPath
CS.RUN.OpenFile >SS
>PUSHW ZPFullPath
>PUSHBI O.RDWR+O.APPEND
>PUSHBI 0 Type
>PUSHWZ Aux type
>SYSCALL FOpen
>LIBC FOpen
>SR
bcs CS.RUN.FSeek.9
sta hFile
>STYA pFile
stz FilePos
stz FilePos+1
stz FilePos+2
stz FilePos+3
CS.RUN.FSeek >PUSHB hFile
CS.RUN.FSeek >SS
>PUSHW pFile
>PUSHL FilePos
>PUSHBI SEEK.SET
>SYSCALL fseek
>LIBC fseek
>SR
CS.RUN.FSeek.9 rts
*--------------------------------------
CS.RUN.CloseFile
lda hFile
>SYSCALL FClose
>LDYA pFile
>LIBC FClose
bcs .9
stz hFile
stz pFile+1
.9 rts
*--------------------------------------
CS.DOEVENT sec
CS.SIG sec
rts
*--------------------------------------
CS.QUIT jsr X.LeaveSubDir
bcc CS.QUIT
>LDA.G hInclude
beq .1
>SYSCALL FreeMem
.1 >LDYA ZPFileBuf
>SYSCALL Free
CS.QUIT jsr X.Quit
.2 >LDYA ZPFullPath
>SYSCALL Free
beq .8
>LIBC Free
.8 clc
rts
@ -386,20 +395,19 @@ CS.RUN.CheckOpt ldy #1
CS.END .EQ *
*--------------------------------------
OptionList .AS "CRcr"
OptionVars .DA #bContinue,#bRecurse
.DA #bContinue,#bRecurse
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
*--------------------------------------
MSG.USAGE .CS "Usage : MAC2UNIX File(s) (*,? wildcards allowed)\r\n"
.CS " -C : Continue on error\r\n"
.CS " -R : Recurse subdirectories\r\n"
MSG.CRLF .CZ "\r\n"
MSG.ERR .CZ "[%h]\r\n"
*--------------------------------------
ID.END .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
.INB usr/src/shared/x.fileenum.g
DS.END .ED
*--------------------------------------
MAN

View File

@ -14,8 +14,9 @@ X.ENTER.SUBDIR .EQ 0
X.COPY.TO.DEST .EQ 1
X.DELETE.SOURCE .EQ 1
*--------------------------------------
.INB usr/src/shared/x.checkctrl.s
.INB usr/src/shared/x.cpmvrm.s
*--------------------------------------
.INB usr/src/shared/x.checkctrl.s
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END

View File

@ -319,8 +319,8 @@ CS.RUN.CheckErr bcs .1
rts
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
tya

View File

@ -14,8 +14,9 @@ X.ENTER.SUBDIR .EQ 0
X.COPY.TO.DEST .EQ 0
X.DELETE.SOURCE .EQ 1
*--------------------------------------
.INB usr/src/shared/x.checkctrl.s
.INB usr/src/shared/x.cpmvrm.s
*--------------------------------------
.INB usr/src/shared/x.checkctrl.s
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END .EQ *

View File

@ -1,261 +0,0 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/rpcdump
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/eth.i
.INB inc/libtcpip.i
.INB inc/net.tcpip.i
*--------------------------------------
TIMEOUT.MAX .EQ 40 40*100ms = 4 sec.
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPIPCfgPtr .BS 2
ZPFrameBase .BS 2
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 #S.PS.F.EVENT
.DA #0
.DA CS.END-CS.START Code Length To Relocate
.DA DS.END-DS.START Data Segment to Allocate
.DA #16 SS
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP
L.Socket .DA Socket
L.Socket.Dst.Addr .DA Socket.Dst.Addr
L.RPC.Request .DA RPC.Request
L.MSG.USAGE .DA MSG.USAGE
L.MSG.UNKNOWN .DA MSG.UNKNOWN
L.MSG.TIMEOUT .DA MSG.TIMEOUT
L.MSG.DUMP0 .DA MSG.DUMP0
L.MSG.DUMP1 .DA MSG.DUMP1
.DA 0
*--------------------------------------
CS.INIT ldy #S.PS.ARGC
lda (pPS),y
beq .99
>LDYA L.LIBTCPIP
>LIBC LoadLib
sta hLIBTCPIP
>LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
bcs .99
>STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ?
bpl .99
ldx #3
ldy #S.IPCFG.IP+3
.1 lda (ZPIPCfgPtr),y
sta Socket.Src.Addr,x
dey
dex
bpl .1
clc
rts
.99 >LDYA L.MSG.USAGE
>LIBC PutS
lda #E.SYN
sec
rts
*--------------------------------------
CS.RUN jsr Init.TimeOut
.1 >PUSHW L.Socket.Dst.Addr
lda #1
>LIBC ArgV
>PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName
bcc .2
>SLEEP
jsr Wait.TimeOut
bcc .1
lda #1
>LIBC ArgV
>PUSHYA
>PUSHBI 2
>LDYA L.MSG.UNKNOWN
>LIBC PrintF
sec
rts
.2 >PUSHW L.Socket
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .91
>STA.G hSocket
ldx #3
.21 lda A2osX.T16,x
sta RPC.Request,x
dex
bpl .21
.3 >PUSHWI RPC.Request.End-RPC.Request
>PUSHW L.RPC.Request
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcc .4
>SLEEP
jsr Wait.TimeOut
bcc .3
.91 bra .99
.4 jsr Init.TimeOut
.5 >LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .6
>SLEEP
jsr Wait.TimeOut
bcc .5
bra .99
.6 ldy #hFrame
sta (pData),y
>LIBC GetMemPtr
>STYA ZPFrameBase
jsr DumpRPCFrame
ldy #hFrame
lda (pData),y
>LIBC FreeMem
lda #0
sec
rts
.99 lda #1
>LIBC ArgV
>PUSHYA
>PUSHBI 2
>LDYA L.MSG.TIMEOUT
>LIBC PrintF
sec
rts
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event?
ldy #TimeOut
lda (pData),y
beq .9
dec
sta (pData),y
.9 sec do not discard TIMER event
rts
*--------------------------------------
CS.QUIT ldy #hSocket
lda (pData),y
beq .1
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hLIBTCPIP
beq .8
>LIBC UnloadLib
.8 clc
rts
*--------------------------------------
Init.TimeOut ldy #TimeOut
lda #TIMEOUT.MAX
sta (pData),y
rts
*--------------------------------------
Wait.TimeOut sec
ldy #TimeOut
lda (pData),y
beq .9
clc
.9 rts
*--------------------------------------
DumpRPCFrame lda #S.UDP+24
clc
adc ZPFrameBase
sta ZPFrameBase
lda /S.UDP+24
adc ZPFrameBase+1
sta ZPFrameBase+1
>LDYA L.MSG.DUMP0
>LIBC PutS
.1 ldy #3
lda (ZPFrameBase),y Value follows?
beq .9
ldy #18 port
>PUSHB (ZPFrameBase),y
iny
>PUSHB (ZPFrameBase),y
ldy #15 proto
>PUSHB (ZPFrameBase),y
ldy #11 version
>PUSHB (ZPFrameBase),y
ldy #4 program
.7 >PUSHB (ZPFrameBase),y
iny
cpy #8
bne .7
>PUSHBI 8
>LDYA L.MSG.DUMP1
>LIBC PrintF
lda #20
clc
adc ZPFrameBase
sta ZPFrameBase
bcc .1
inc ZPFrameBase+1
bra .1
.9 rts
*--------------------------------------
CS.END
LIBTCPIP .AZ "libtcpip"
hLIBTCPIP .BS 1
MSG.USAGE .AZ "Usage : RPCDUMP <ip|host>"
MSG.UNKNOWN .AZ "%s: Unknown host\r\n"
MSG.TIMEOUT .AZ "No response from %s\r\n"
MSG.DUMP0 .AZ "Program Ver Proto:Port"
MSG.DUMP1 .AZ "%10L %2d %2d:%D\r\n"
*--------------------------------------
Socket .DA #S.SOCKET.T.DGRAM
.BS 3
Socket.Src.Addr .BS 4
Socket.Src.Port .DA 0 Dynamic
Socket.Dst.Addr .BS 4
Socket.Dst.Port .DA UDP.PORT.PMAP
*--------------------------------------
RPC.Request .BS 4 XID
.HS 00000000 0=CALL
.HS 00000002 RPCVERS
.HS 000186A0 PROG=portmapper
.HS 00000002 VERS
.HS 00000004 PMAPPROC_DUMP
.HS 00000000 CRED
.HS 00000000
.HS 00000000 VERF
.HS 00000000
RPC.Request.End .EQ *
*--------------------------------------
.DUMMY
.OR 0
DS.START
hSocket .BS 1
hFrame .BS 1
TimeOut .BS 1
DS.END
.ED
*--------------------------------------
MAN
SAVE usr/src/bin/rpcdump.s
ASM

View File

@ -1,467 +0,0 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF root/tuitest
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/libtui.i
*--------------------------------------
EV.SAVE .EQ $C0
EV.QUIT .EQ $C1
EV.CHECKBOX .EQ $C2
EV.RADIO .EQ $C3
EV.LBOX1.CHANGED .EQ $C4
EV.LBOX1.PRESSED .EQ $C5
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
hRADIO1 .BS 1
hDLGSAVE .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.TBOX1.Title .DA TBOX1.Title
L.TBOX1.Status .DA TBOX1.Status
L.LBOX1.List .DA LBOX1.List
L.LABEL.Label .DA LABEL.Label
L.TLINE.Default .DA TLINE.Default
L.CBOX1.Label .DA CBOX1.Label
L.RADIO1.List .DA RADIO1.List
L.BUTQ.Label .DA BUTQ.Label
L.BUTS.Label .DA BUTS.Label
L.DLGSAVE.Title .DA DLGSAVE.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.INIT.RTS
sta hCTX
jsr CS.SCRN.Init
bcs CS.INIT.RTS
jsr CS.TBOX1.Init
bcs CS.INIT.RTS
jsr CS.LBOX1.Init
bcs CS.INIT.RTS
jsr CS.TLINE1.Init
bcs CS.INIT.RTS
jsr CS.CBOX1.Init
bcs CS.INIT.RTS
jsr CS.RADIO1.Init
bcs CS.INIT.RTS
jsr CS.BUT.Init
bcs CS.INIT.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
rts
.2 cmp #EV.CHECKBOX
bne .3
>LDA.G CBOX1.Var
bne .20
lda hRADIO1
>LIBCALL hLIBTUI,LIBTUI.Hide
bcc CS.RUN.LOOP
rts
.20 lda hRADIO1
>LIBCALL hLIBTUI,LIBTUI.Show
bcc CS.RUN.LOOP
rts
.3 cmp #EV.LBOX1.CHANGED
bne .8
>PUSHB hSCRN
>PUSHBI S.OBJ.pSTATUS
>PUSHW.G LBOX1.Var
>LIBCALL hLIBTUI,LIBTUI.SetProp
bra CS.RUN.LOOP
.8 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.LBOX1.List
>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
>LDA.G TBOX1.hBuf
>SYSCALL GetMemPtr
>PUSHYA
>PUSHWI 1024
>PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder+S.OBJ.F.bTitle+S.OBJ.F.bStatus+S.OBJ.F.bEdit
>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 EV.LBOX1.CHANGED
>PUSHBI EV.LBOX1.PRESSED
>PUSHW L.LBOX1.List
>PUSHEA.G LBOX1.Var
>PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder
>LIBCALL hLIBTUI,LIBTUI.NewLBox
rts
*--------------------------------------
CS.TLINE1.Init >PUSHB hSCRN hParent
>PUSHBI 50 X1
>PUSHBI 11 Y1
>PUSHW L.LABEL.Label
>PUSHBI 0
>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
>PUSHBI 0
>LIBCALL hLIBTUI,LIBTUI.NewTLine
>PUSHEA.G TLINE.Buf
>PUSHW L.TLINE.Default
>SYSCALL StrCpy
.9 rts
*--------------------------------------
CS.CBOX1.Init >PUSHB hSCRN hParent
>PUSHBI 50 X1
>PUSHBI 14 Y1
>PUSHBI 0
>PUSHBI EV.CHECKBOX
>PUSHW L.CBOX1.Label
>PUSHEA.G CBOX1.Var
>PUSHBI 0
>LIBCALL hLIBTUI,LIBTUI.NewCBox
rts
*--------------------------------------
CS.RADIO1.Init >PUSHB hSCRN hParent
>PUSHBI 50 X1
>PUSHBI 16 Y1
>PUSHBI 0
>PUSHBI EV.RADIO
>PUSHW L.RADIO1.List
>PUSHEA.G RADIO1.Var
>PUSHBI 0
>LIBCALL hLIBTUI,LIBTUI.NewRadio
bcs .9
sta hRADIO1
>LIBCALL hLIBTUI,LIBTUI.Hide
.9 rts
*--------------------------------------
CS.BUT.Init >PUSHB hSCRN hParent
>PUSHBI 50 X1
>PUSHBI 20 Y1
>PUSHBI 19 Ctrl-S
>PUSHBI EV.SAVE
>PUSHW L.BUTS.Label
>PUSHBI 0
>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
>PUSHBI 0
>LIBCALL hLIBTUI,LIBTUI.NewBut
.9
CS.BUT.Init.RTS rts
*--------------------------------------
CS.RUN.DLGSAVE >PUSHB hCTX hParent
>PUSHBI 70 W
>PUSHBI 11 H
>PUSHW L.DLGSAVE.Title
>PUSHBI 0
>LIBCALL hLIBTUI,LIBTUI.NewDlg
bcs CS.BUT.Init.RTS
sta hDLGSAVE
>PUSHA
* >PUSHB hDLGSAVE hParent
>PUSHBI 50 X1
>PUSHBI 7 Y1
>PUSHBI C.CR
>PUSHBI EV.OK
>PUSHW L.BUT.OK
>PUSHBI 0
>LIBCALL hLIBTUI,LIBTUI.NewBut
bcs .9
sta ZPPtr1
>PUSHB hDLGSAVE hParent
>PUSHBI 57 X1
>PUSHBI 7 Y1
>PUSHBI 3 Ctrl-C
>PUSHBI EV.CANCEL
>PUSHW L.BUT.Cancel
>PUSHBI 0
>LIBCALL hLIBTUI,LIBTUI.NewBut
bcs .9
lda hDLGSAVE
>LIBCALL hLIBTUI,LIBTUI.Draw
bcs .9
lda ZPPtr1
>LIBCALL hLIBTUI,LIBTUI.Activate
.1 lda hDLGSAVE
>LIBCALL hLIBTUI,LIBTUI.Exec
.9 php
pha
lda hDLGSAVE
>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"
*--------------------------------------
TBOX1.Title .AZ "Text Box Title"
TBOX1.Status .AZ "Text Box Status"
*--------------------------------------
LBOX1.List .CZ "Item 1"
.CZ "Item 2"
.CZ "Item 3"
.CZ "Item 4"
.CZ "Item 5"
.CZ "Item 6 very long line"
.CZ "Item 7"
.CZ "Item 8"
.CZ "Item 9"
.CZ "Item 10"
.CZ "Item 11"
.CZ "Item 12"
.CZ "Item 13"
.CZ "Item 14 last one"
.HS 00
*--------------------------------------
LABEL.Label .AZ "This is a label."
*--------------------------------------
TLINE.Default .AZ "This is a Line."
*--------------------------------------
RADIO1.List .CZ "\e[91mRed"
.CZ "\e[92mGreen"
.CZ "\e[96mBlue"
.HS 00
*--------------------------------------
CBOX1.Label .AZ "Check Me"
*--------------------------------------
BUTS.Label .AZ "(^S)ave..."
BUTQ.Label .AZ "(^Q)uit"
DLGSAVE.Title .AZ "Save As..."
BUT.OK .AZ " OK "
BUT.Cancel .AZ "Cancel"
*--------------------------------------
.DUMMY
.OR 0
DS.START
SCRN.TitleBuf .BS 80
TLINE.Buf .BS 65
CBOX1.Var .BS 1
RADIO1.Var .BS 1
LBOX1.Var .BS 2
TBOX1.hBuf .BS 1
DS.END .ED
*--------------------------------------
MAN
SAVE root/tuitest.s
ASM

View File

@ -231,6 +231,7 @@ CS.RUN.CheckErr bcs .1
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
tya
@ -242,6 +243,7 @@ CS.RUN.CheckErr bcs .1
lda bContinue
eor #$80
asl
pla
rts
*--------------------------------------

View File

@ -229,10 +229,12 @@ CS.RUN.FILE jsr X.IncludeMatch
.99 rts
*--------------------------------------
CS.RUN.FILE.LOOP
.1 >PUSHW pFile
.1 >SS
>PUSHW pFile
>PUSHW ZPFileBuf
>PUSHWI 256
>LIBC FRead
>SR
bcs .8
>STYA ByteCnt
@ -242,10 +244,12 @@ CS.RUN.FILE.LOOP
jsr CS.RUN.FSeek
bcs .99
>SS
>PUSHW pFile
>PUSHW ZPFileBuf
>PUSHW ByteCnt
>LIBC FWrite
>SR
bcs .99
lda ByteCnt
@ -288,32 +292,45 @@ CS.RUN.FILE.MOD ldy #0
CS.RUN.CheckErr bcc .9
pha
tay
>SS
>PUSHW L.MSG.ERR
tya
>PUSHA
>PUSHBI 1
>LIBC PrintF
>SR
lda bContinue
eor #$80
asl
pla
.9 rts
*--------------------------------------
CS.RUN.GetFilePath
>SS
>PUSHW ZPFullPath
>PUSHW.G pSrcBasePath
>LIBC StrCpy
>SR
>SS
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LIBC StrCat
>SR
rts
*--------------------------------------
CS.RUN.OpenFile >PUSHW ZPFullPath
CS.RUN.OpenFile >SS
>PUSHW ZPFullPath
>PUSHBI O.RDWR+O.APPEND
>PUSHBI 0 Type
>PUSHWZ Aux type
>LIBC FOpen
>SR
bcs CS.RUN.FSeek.9
>STYA pFile
@ -323,10 +340,12 @@ CS.RUN.OpenFile >PUSHW ZPFullPath
stz FilePos+2
stz FilePos+3
CS.RUN.FSeek >PUSHW pFile
CS.RUN.FSeek >SS
>PUSHW pFile
>PUSHL FilePos
>PUSHBI SEEK.SET
>LIBC fseek
>SR
CS.RUN.FSeek.9 rts
*--------------------------------------
@ -345,6 +364,8 @@ CS.SIG sec
CS.QUIT jsr X.Quit
.2 >LDYA ZPFullPath
beq .8
>LIBC Free
.8 clc
@ -376,8 +397,7 @@ CS.RUN.CheckOpt ldy #1
CS.END .EQ *
*--------------------------------------
OptionList .AS "CRcr"
OptionVars .DA #bContinue,#bRecurse
.DA #bContinue,#bRecurse
OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse
*--------------------------------------
MSG.USAGE .CS "Usage : UNIX2MAC File(s) (*,? wildcards allowed)\r\n"
.CS " -C : Continue on error\r\n"

View File

@ -322,6 +322,7 @@ CS.RUN.CheckErr bcc .9
pha
tay
>SS
>PUSHW L.MSG.ERR
tya
@ -333,6 +334,7 @@ CS.RUN.CheckErr bcc .9
lda bContinue
eor #$80
asl
pla
.9 rts

View File

@ -320,20 +320,23 @@ CS.RUN.FILTER lda (pBuf)
rts
.FIN
*--------------------------------------
CS.RUN.CheckErr pha
bcs .1
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>LIBC PutS
pla
rts
.1 >PUSHW L.MSG.ERR
pla
pha
.1 pha
tay
>SS
>PUSHW L.MSG.ERR
tya
>PUSHA
>PUSHBI 1
>LIBC PrintF
>SR
pla
sec
rts

View File

@ -440,13 +440,11 @@ CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>LIBC PutS
.8 rts
.1 tay
clc
beq .8 SKIP
pha
.1 pha
tay
>SS
>PUSHW L.MSG.ERR