mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 16:31:07 +00:00
17aee1f2a8
CP,MV,RM:memory leak & new X.FILEENUM LIBTUI:TBOX improvment
936 lines
16 KiB
Plaintext
936 lines
16 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
.LIST OFF
|
||
.OP 65C02
|
||
.OR $2000
|
||
.TF bin/ls
|
||
*--------------------------------------
|
||
.INB inc/macros.i
|
||
.INB inc/a2osx.i
|
||
.INB inc/kernel.i
|
||
.INB inc/mli.i
|
||
.INB inc/mli.e.i
|
||
*--------------------------------------
|
||
X.ENTER.SUBDIR .EQ 1
|
||
X.COPY.TO.DEST .EQ 0
|
||
X.DELETE.SOURCE .EQ 0
|
||
*--------------------------------------
|
||
MAX.COLW .EQ 20
|
||
MAX.COLC .EQ 4
|
||
COLOR.ENTER .EQ 32
|
||
COLOR.REG .EQ 93
|
||
COLOR.DIR .EQ 92
|
||
COLOR.BDEV .EQ 96
|
||
*--------------------------------------
|
||
.DUMMY
|
||
.OR ZPBIN
|
||
ZS.START
|
||
ZPPtr1 .BS 2
|
||
ZPPtr2 .BS 2
|
||
ZPFileName .BS 2
|
||
ZPFileStat .BS 2
|
||
|
||
ZPPWBuf .BS 2
|
||
ArgCount .BS 1
|
||
ColCount .BS 1
|
||
hLineBuf .BS 1
|
||
hPWBuf .BS 1
|
||
|
||
bPass2 .BS 1
|
||
bPause .BS 1
|
||
bAllmostAll .BS 1
|
||
bColumn .BS 1
|
||
bFullPath .BS 1
|
||
bLong .BS 1
|
||
bRecurse .BS 1
|
||
bToFile .BS 1
|
||
|
||
ZPLineBuf .BS 2
|
||
ZPLineBufPtr .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 #0 S.PS.F.EVENT
|
||
.DA #0
|
||
.DA CS.END-CS.START Code Size (without Constants)
|
||
.DA DS.END-DS.START Data SegmentSize
|
||
.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.QUIT
|
||
L.MSG.USAGE .DA MSG.USAGE
|
||
L.MSG.ENTER .DA MSG.ENTER
|
||
L.MSG.REGEXT .DA MSG.REGEXT
|
||
L.MSG.DIREXT .DA MSG.DIREXT
|
||
L.MSG.BDEVEXT .DA MSG.BDEVEXT
|
||
L.MSG.SETCOLOR .DA MSG.SETCOLOR
|
||
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
|
||
L.MSG.NODATE .DA MSG.NODATE
|
||
L.FMT.Date .DA FMT.Date
|
||
L.FMT.Time .DA FMT.Time
|
||
L.FMT.int16 .DA FMT.int16
|
||
J.CS.RUN.PRINT .DA CS.RUN.PRINT.REG
|
||
.DA CS.RUN.PRINT.DIR
|
||
.DA CS.RUN.PRINT.CDEV
|
||
.DA CS.RUN.PRINT.BDEV
|
||
.DA CS.RUN.PRINT.LNK
|
||
.DA CS.RUN.PRINT.DSOCK
|
||
.DA CS.RUN.PRINT.SSOCK
|
||
.DA CS.RUN.PRINT.PIPE
|
||
.DA 0
|
||
*--------------------------------------
|
||
CS.INIT clc
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN ldy #S.PS.hStdOut
|
||
lda (pPS),y
|
||
tax
|
||
lda hFDs-1,x
|
||
>SYSCALL GetMemPtr
|
||
>STYA ZPPtr1
|
||
lda (ZPPtr1)
|
||
* cmp #S.FD.T.REG
|
||
beq .10
|
||
|
||
cmp #S.FD.T.PIPE
|
||
bne .1
|
||
|
||
.10 dec bToFile
|
||
|
||
.1 inc ArgCount
|
||
|
||
lda ArgCount
|
||
>SYSCALL ArgV
|
||
bcs .6
|
||
|
||
>STYA ZPPtr1
|
||
lda (ZPPtr1)
|
||
cmp #'-'
|
||
bne .4
|
||
|
||
ldy #1
|
||
lda (ZPPtr1),y
|
||
beq .99
|
||
|
||
.20 ldx #OptionVars-OptionList-1
|
||
|
||
.2 cmp OptionList,x
|
||
beq .3
|
||
|
||
dex
|
||
bpl .2
|
||
|
||
.99 >PUSHW L.MSG.USAGE
|
||
>PUSHBI 0
|
||
>SYSCALL PrintF
|
||
|
||
lda #E.SYN
|
||
sec
|
||
rts
|
||
|
||
.3 lda OptionVars,x
|
||
tax
|
||
* sec
|
||
ror $0,x
|
||
|
||
iny
|
||
lda (ZPPtr1),y
|
||
bne .20
|
||
|
||
bra .1
|
||
|
||
.4 >LDYA ZPPtr1
|
||
jsr InitSrcDirYA
|
||
bcc .1 scan for any other args
|
||
|
||
.9 rts
|
||
|
||
.6 >LDA.G index do we have a Source dir ?
|
||
bne .8
|
||
|
||
ldy #S.PS.hCWD
|
||
lda (pPS),y
|
||
>SYSCALL GetMemPtr
|
||
jsr InitSrcDirYA
|
||
bcs .9
|
||
|
||
.8 >PUSHEA.G TIME.SysTime
|
||
>SYSCALL Time
|
||
|
||
>LDYAI S.PW
|
||
>SYSCALL GetMem
|
||
bcs .9
|
||
|
||
>STYA ZPPWBuf
|
||
stx hPWBuf
|
||
|
||
>LDYAI 256
|
||
>SYSCALL GetMem
|
||
bcs .9
|
||
|
||
>STYA ZPLineBuf
|
||
>STYA ZPLineBufPtr
|
||
stx hLineBuf
|
||
*--------------------------------------
|
||
CS.RUN.LOOP stz bPass2
|
||
|
||
.1 >SLEEP
|
||
|
||
ldy #S.PS.hStdIn
|
||
lda (pPS),y
|
||
>SYSCALL FEOF
|
||
bcs .99 I/O error
|
||
|
||
tay
|
||
bne .2 no char
|
||
|
||
>SYSCALL GetChar
|
||
cmp #$03 Ctrl-C
|
||
beq .99 Abort....
|
||
|
||
cmp #$13 Ctrl-S
|
||
bne .2
|
||
|
||
lda bPause
|
||
eor #$ff
|
||
sta bPause
|
||
bne .1
|
||
|
||
.2 bit bPause
|
||
bmi .1
|
||
|
||
jsr GetEntry
|
||
bcs .6
|
||
|
||
jsr FilterMatch
|
||
bcs .5 no match, skip....
|
||
|
||
bit bAllmostAll
|
||
bmi .4
|
||
|
||
lda (ZPFileName)
|
||
cmp #'.'
|
||
beq .5
|
||
|
||
.4 ldy #S.STAT.MODE+1
|
||
lda (ZPFileStat),y
|
||
|
||
and #$70
|
||
lsr
|
||
lsr
|
||
lsr
|
||
tax
|
||
jsr CS.RUN.PRINT.JMP
|
||
bcs .99
|
||
|
||
.5 jsr GetNextEntry
|
||
bcc .1
|
||
|
||
bit bPass2
|
||
bmi .6
|
||
|
||
jsr CS.RUN.CheckRoot
|
||
beq .6
|
||
|
||
jsr ResetSrcDir
|
||
bcs .99
|
||
|
||
dec bPass2
|
||
bra .1
|
||
|
||
.6 bit bLong
|
||
bmi .7
|
||
|
||
jsr CS.RUN.LineBufFlush
|
||
bcs .99
|
||
|
||
.7 jsr LeaveSubDir
|
||
bcs .8
|
||
|
||
jsr BasePath..
|
||
|
||
jsr CS.RUN.ENTER.MSG
|
||
bcs .99
|
||
|
||
jsr GetNextEntry
|
||
jmp CS.RUN.LOOP
|
||
|
||
.8 lda #0
|
||
sec
|
||
.99 rts
|
||
*--------------------------------------
|
||
CS.RUN.CheckRoot
|
||
>LDA.G hSrcBasePath
|
||
>SYSCALL GetMemPtr
|
||
>STYA ZPPtr1
|
||
ldy #1
|
||
lda (ZPPtr1),y
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.JMP
|
||
jmp (J.CS.RUN.PRINT,x)
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.REG
|
||
bit bPass2
|
||
bpl .8
|
||
|
||
bit bLong
|
||
bmi CS.RUN.PRINT.REGEXT
|
||
|
||
ldy #COLOR.REG
|
||
jsr CS.RUN.SetColorY
|
||
|
||
bit bColumn
|
||
bmi CS.RUN.PRINT.REG1
|
||
|
||
bit bFullPath
|
||
bpl .2
|
||
|
||
jsr CS.RUN.SrcPathOut
|
||
|
||
bra CS.RUN.PRINT.REG1
|
||
|
||
.2 ldx #MAX.COLW
|
||
clc
|
||
jsr CS.RUN.FN2LineBuf
|
||
jmp CS.RUN.IncColCnt
|
||
|
||
.8 clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.REGEXT
|
||
jsr CS.RUN.PrintMod
|
||
jsr CS.RUN.PrintUidGid
|
||
|
||
>PUSHW ZPLineBufPtr
|
||
>PUSHW L.MSG.REGEXT
|
||
|
||
ldy #S.STAT.SIZE+3
|
||
ldx #4
|
||
|
||
.2 lda (ZPFileStat),y
|
||
>PUSHA
|
||
dey
|
||
dex
|
||
bne .2
|
||
|
||
>PUSHBI 4
|
||
jsr CS.RUN.ToLineBuf
|
||
|
||
jsr CS.RUN.PrintTypeAux
|
||
jsr CS.RUN.PrintDates
|
||
|
||
ldy #COLOR.REG
|
||
jsr CS.RUN.SetColorY
|
||
|
||
CS.RUN.PRINT.REG1
|
||
ldx #0
|
||
clc
|
||
jsr CS.RUN.FN2LineBuf
|
||
jmp CS.RUN.LineBufOut
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.DIR
|
||
bit bPass2
|
||
bmi .8
|
||
|
||
bit bLong
|
||
bmi CS.RUN.PRINT.DIREXT
|
||
|
||
ldy #COLOR.DIR
|
||
jsr CS.RUN.SetColorY
|
||
|
||
bit bColumn
|
||
bmi CS.RUN.PRINT.DIR1
|
||
|
||
bit bFullPath
|
||
bpl .2
|
||
|
||
jsr CS.RUN.SrcPathOut
|
||
bra CS.RUN.PRINT.DIR1
|
||
|
||
.2 ldx #MAX.COLW-1
|
||
sec
|
||
jsr CS.RUN.FN2LineBuf
|
||
jsr CS.RUN.IncColCnt
|
||
bcs .9
|
||
|
||
jmp CS.RUN.PRINT.DIREND
|
||
|
||
.8 clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.DIREXT
|
||
jsr CS.RUN.PrintMod
|
||
jsr CS.RUN.PrintUidGid
|
||
|
||
>LDYA L.MSG.DIREXT
|
||
jsr CS.RUN.LineBufYAOut
|
||
|
||
jsr CS.RUN.PrintDates
|
||
|
||
ldy #COLOR.DIR
|
||
jsr CS.RUN.SetColorY
|
||
|
||
CS.RUN.PRINT.DIR1
|
||
ldx #0
|
||
sec
|
||
jsr CS.RUN.FN2LineBuf
|
||
jsr CS.RUN.LineBufOut
|
||
bcs .9
|
||
|
||
jmp CS.RUN.PRINT.DIREND
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.CDEV
|
||
lda #MLI.E.UNSUPST
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.BDEV
|
||
clc
|
||
bit bPass2
|
||
bmi .9
|
||
|
||
bit bLong
|
||
bmi CS.RUN.PRINT.BDEVEXT
|
||
|
||
ldy #COLOR.BDEV
|
||
jsr CS.RUN.SetColorY
|
||
|
||
bit bColumn
|
||
bmi CS.RUN.PRINT.BDEV1
|
||
|
||
bit bFullPath
|
||
bpl .2
|
||
|
||
jsr CS.RUN.SrcPathOut
|
||
bra CS.RUN.PRINT.BDEV2
|
||
|
||
.2 lda #'/'
|
||
jsr CS.RUN.LineBufCOut
|
||
|
||
ldx #MAX.COLW-1
|
||
sec
|
||
jsr CS.RUN.FN2LineBuf
|
||
jsr CS.RUN.IncColCnt
|
||
bcc CS.RUN.PRINT.BDEVEND
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.BDEVEXT
|
||
jsr CS.RUN.PrintMod
|
||
jsr CS.RUN.PrintUidGid
|
||
|
||
>PUSHW ZPLineBufPtr
|
||
>PUSHW L.MSG.BDEVEXT
|
||
|
||
ldy #S.STAT.BLOCKS+1
|
||
>PUSHB (ZPFileStat),y
|
||
dey
|
||
>PUSHB (ZPFileStat),y
|
||
|
||
ldy #S.STAT.P.DEVBLOCKS+1
|
||
>PUSHB (ZPFileStat),y
|
||
dey
|
||
>PUSHB (ZPFileStat),y
|
||
|
||
ldy #S.STAT.P.SLOT
|
||
>PUSHB (ZPFileStat),y
|
||
iny DRIVE
|
||
>PUSHB (ZPFileStat),y
|
||
|
||
>PUSHBI 6
|
||
jsr CS.RUN.ToLineBuf
|
||
|
||
jsr CS.RUN.PrintDates
|
||
|
||
ldy #COLOR.BDEV
|
||
jsr CS.RUN.SetColorY
|
||
|
||
CS.RUN.PRINT.BDEV1
|
||
lda #'/'
|
||
jsr CS.RUN.LineBufCOut
|
||
|
||
CS.RUN.PRINT.BDEV2
|
||
ldx #0
|
||
sec
|
||
jsr CS.RUN.FN2LineBuf
|
||
jsr CS.RUN.LineBufOut
|
||
bcc CS.RUN.PRINT.BDEVEND
|
||
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.LNK
|
||
CS.RUN.PRINT.DSOCK
|
||
CS.RUN.PRINT.SSOCK
|
||
CS.RUN.PRINT.PIPE
|
||
lda #MLI.E.UNSUPST
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN.PRINT.DIREND
|
||
CS.RUN.PRINT.BDEVEND
|
||
bit bRecurse
|
||
bpl .8
|
||
|
||
lda (ZPFileName)
|
||
cmp #'.'
|
||
bne .7
|
||
|
||
ldy #1
|
||
lda (ZPFileName),y
|
||
beq .8
|
||
|
||
cmp #'.'
|
||
bne .7
|
||
|
||
iny
|
||
lda (ZPFileName),y
|
||
beq .8
|
||
|
||
bit bLong
|
||
bmi .7
|
||
|
||
jsr CS.RUN.LineBufFlush
|
||
bcs .9
|
||
|
||
.7 >LDYA ZPFileName
|
||
jsr EnterSubDirYA
|
||
bcs .9
|
||
|
||
jmp CS.RUN.ENTER.MSG
|
||
|
||
.8 clc
|
||
.9 rts
|
||
*--------------------------------------
|
||
CS.RUN.ENTER.MSG
|
||
ldy #COLOR.ENTER
|
||
jsr CS.RUN.SetColorY
|
||
|
||
>LDYA L.MSG.ENTER
|
||
jsr CS.RUN.LineBufYAOut
|
||
|
||
ldy #hSrcBasePath
|
||
lda (pData),y
|
||
>SYSCALL GetMemPtr
|
||
jsr CS.RUN.LineBufYAOut
|
||
|
||
ldy #0
|
||
jsr CS.RUN.SetColorY
|
||
|
||
jmp CS.RUN.LineBufOut
|
||
*--------------------------------------
|
||
CS.RUN.PrintMod ldy #S.STAT.MODE+1
|
||
lda (ZPFileStat),y
|
||
lsr
|
||
php C = RU
|
||
|
||
lsr
|
||
lsr
|
||
lsr
|
||
tax
|
||
lda TYPES,x
|
||
jsr CS.RUN.LineBufCOut
|
||
|
||
ldy #S.STAT.MODE
|
||
lda (ZPFileStat),y
|
||
|
||
ldx #8
|
||
|
||
plp C = RU
|
||
|
||
.1 pha
|
||
lda #'-'
|
||
bcc .2
|
||
|
||
lda ACCESS,x
|
||
|
||
.2 jsr CS.RUN.LineBufCOut
|
||
|
||
pla
|
||
asl
|
||
|
||
dex
|
||
bpl .1
|
||
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN.PrintUidGid
|
||
ldy #S.STAT.UID
|
||
lda (ZPFileStat),y
|
||
>PUSHA
|
||
>PUSHW ZPPWBuf
|
||
>SYSCALL GetPWUID
|
||
bcs .2
|
||
|
||
jsr .8
|
||
bra .3
|
||
|
||
.2 ldy #S.STAT.UID+1
|
||
jsr .7
|
||
*--------------------------------------
|
||
.3 ldy #S.STAT.GID
|
||
lda (ZPFileStat),y
|
||
>PUSHA
|
||
>PUSHW ZPPWBuf
|
||
>SYSCALL GetGRGID
|
||
bcc .8
|
||
|
||
ldy #S.STAT.GID+1
|
||
|
||
.7 >PUSHW ZPLineBufPtr
|
||
>PUSHW L.FMT.int16
|
||
|
||
lda (ZPFileStat),y
|
||
>PUSHA
|
||
dey
|
||
lda (ZPFileStat),y
|
||
>PUSHA
|
||
|
||
>PUSHBI 2
|
||
jmp CS.RUN.ToLineBuf
|
||
|
||
.8 >LDYA ZPPWBuf
|
||
ldx #5
|
||
jmp CS.RUN.LineBufYAOutX
|
||
*--------------------------------------
|
||
CS.RUN.PrintDates
|
||
ldy #S.STAT.MTIME+S.TIME.MONTH
|
||
lda (ZPFileStat),y
|
||
bne .1
|
||
|
||
jsr .8
|
||
bra .2
|
||
|
||
.1 lda #S.STAT.MTIME
|
||
jsr .5
|
||
|
||
.2 ldy #S.STAT.CTIME+S.TIME.MONTH
|
||
lda (ZPFileStat),y
|
||
beq .8
|
||
|
||
lda #S.STAT.CTIME
|
||
|
||
.5 clc
|
||
adc ZPFileStat
|
||
sta ZPPtr1
|
||
|
||
lda #0
|
||
adc ZPFileStat+1
|
||
sta ZPPtr1+1
|
||
|
||
>PUSHW ZPLineBufPtr
|
||
|
||
ldx #0
|
||
|
||
ldy #S.TIME.DAY
|
||
|
||
.6 lda (ZPPtr1),y
|
||
cmp (pData),y TIME.SysTime
|
||
bne .7
|
||
|
||
dey S.TIME.MONTH,S.TIME.YEAR,S.TIME.CENTURY
|
||
bpl .6
|
||
|
||
inx
|
||
inx Select L.FMT.Time
|
||
|
||
.7 >PUSHW L.FMT.Date,x
|
||
|
||
>PUSHW ZPPtr1
|
||
>SYSCALL StrFTime
|
||
|
||
lda #10
|
||
jmp CS.RUN.LineBufPtrAddA
|
||
|
||
.8 >LDYA L.MSG.NODATE
|
||
jmp CS.RUN.LineBufYAOut
|
||
*--------------------------------------
|
||
CS.RUN.PrintTypeAux
|
||
ldy #S.STAT.P.TYPE
|
||
lda (ZPFileStat),y
|
||
|
||
ldy #PRODOS.FT.TXT-PRODOS.FT.HEX-1
|
||
|
||
.1 cmp PRODOS.FT.HEX,y
|
||
beq .2
|
||
|
||
dey
|
||
bpl .1
|
||
|
||
pha
|
||
lda #'$'
|
||
jsr CS.RUN.LineBufCOut
|
||
pla
|
||
jsr CS.RUN.LineBufHOut
|
||
bra .3
|
||
|
||
.2 tya
|
||
asl
|
||
asl CC
|
||
adc L.PRODOS.FT.TXT
|
||
tay
|
||
|
||
lda L.PRODOS.FT.TXT+1
|
||
adc #0
|
||
jsr CS.RUN.LineBufYAOut
|
||
|
||
.3 lda #C.SPACE
|
||
jsr CS.RUN.LineBufCOut
|
||
|
||
ldy #S.STAT.P.AUXTYPE+1
|
||
lda (ZPFileStat),y
|
||
tax
|
||
dey
|
||
ora (ZPFileStat),y
|
||
beq .4
|
||
|
||
txa
|
||
jsr CS.RUN.LineBufHOut
|
||
|
||
lda (ZPFileStat),y
|
||
jsr CS.RUN.LineBufHOut
|
||
|
||
ldx #0
|
||
bra .5
|
||
|
||
.4 ldx #4
|
||
|
||
.5 lda #C.SPACE
|
||
|
||
.6 jsr CS.RUN.LineBufCOut
|
||
dex
|
||
bpl .6
|
||
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN.FN2LineBuf
|
||
phx X = MaxLen
|
||
|
||
php
|
||
|
||
>LDYA ZPFileName
|
||
jsr CS.RUN.LineBufYAOutX Y = output count
|
||
|
||
plp
|
||
bcc .1
|
||
|
||
lda #'/'
|
||
jsr CS.RUN.LineBufCOut
|
||
|
||
.1 pla MaxLen was 0, no extra SPACE needed
|
||
beq .3
|
||
|
||
txa
|
||
beq .3 all chars printed, no more SPACE
|
||
|
||
lda #C.SPACE
|
||
|
||
.2 jsr CS.RUN.LineBufCOut
|
||
dex
|
||
bne .2
|
||
|
||
.3 ldy #0 Reset Color
|
||
*--------------------------------------
|
||
CS.RUN.SetColorY
|
||
bit bToFile
|
||
bmi CS.RUN.IncColCnt.8
|
||
|
||
>PUSHW ZPLineBufPtr
|
||
>PUSHW L.MSG.SETCOLOR
|
||
tya
|
||
>PUSHA
|
||
>PUSHBI 1
|
||
*--------------------------------------
|
||
CS.RUN.ToLineBuf
|
||
>SYSCALL SPrintF
|
||
*--------------------------------------
|
||
CS.RUN.LineBufPtrAddY
|
||
tya
|
||
CS.RUN.LineBufPtrAddA
|
||
clc
|
||
adc ZPLineBufPtr
|
||
sta ZPLineBufPtr
|
||
bcc .8
|
||
|
||
inc ZPLineBufPtr+1
|
||
|
||
.8 rts
|
||
*--------------------------------------
|
||
CS.RUN.IncColCnt
|
||
inc ColCount
|
||
lda ColCount
|
||
cmp #MAX.COLC
|
||
beq CS.RUN.LineBufFlush1
|
||
|
||
CS.RUN.IncColCnt.8
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN.LineBufFlush
|
||
lda ColCount
|
||
beq CS.RUN.IncColCnt.8
|
||
|
||
CS.RUN.LineBufFlush1
|
||
stz ColCount
|
||
*--------------------------------------
|
||
CS.RUN.LineBufOut
|
||
lda #C.CR
|
||
jsr CS.RUN.LineBufCOUT
|
||
bit bToFile
|
||
bmi .1
|
||
|
||
lda #C.LF
|
||
jsr CS.RUN.LineBufCOUT
|
||
|
||
.1 lda #0
|
||
sta (ZPLineBufPtr)
|
||
|
||
ldy #S.PS.hStdOut
|
||
lda (pPS),y
|
||
>PUSHA
|
||
|
||
>LDYA ZPLineBuf
|
||
>STYA ZPLineBufPtr
|
||
|
||
>PUSHYA
|
||
|
||
>SYSCALL fputs
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN.SrcPathOut
|
||
ldy #hSrcBasePath
|
||
lda (pData),y
|
||
>SYSCALL GetMemPtr
|
||
*--------------------------------------
|
||
CS.RUN.LineBufYAOut
|
||
ldx #0
|
||
*--------------------------------------
|
||
CS.RUN.LineBufYAOutX
|
||
>STYA ZPPtr1 X = MaxLen
|
||
|
||
ldy #$ff
|
||
|
||
.1 iny
|
||
lda (ZPPtr1),y
|
||
beq .8
|
||
|
||
jsr CS.RUN.LineBufCOut
|
||
dex
|
||
bne .1
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
CS.RUN.LineBufHOut
|
||
pha
|
||
lsr
|
||
lsr
|
||
lsr
|
||
lsr
|
||
jsr .1
|
||
|
||
pla
|
||
and #$0F
|
||
|
||
.1 ora #$30
|
||
cmp #'9'+1
|
||
bcc CS.RUN.LineBufCOut
|
||
|
||
adc #6
|
||
*--------------------------------------
|
||
CS.RUN.LineBufCOut
|
||
sta (ZPLineBufPtr)
|
||
inc ZPLineBufPtr
|
||
bne .8
|
||
|
||
inc ZPLineBufPtr+1
|
||
|
||
.8 rts
|
||
*--------------------------------------
|
||
CS.DOEVENT sec
|
||
rts
|
||
*--------------------------------------
|
||
CS.QUIT jsr LeaveSubDir
|
||
bcc CS.QUIT
|
||
|
||
ldy #hFilter
|
||
lda (pData),y
|
||
jsr .7
|
||
|
||
lda hPWBuf
|
||
jsr .7
|
||
|
||
lda hLineBuf
|
||
|
||
.7 beq .8
|
||
|
||
>SYSCALL FreeMem
|
||
|
||
.8 clc
|
||
rts
|
||
*--------------------------------------
|
||
.INB usr/src/shared/x.fileenum.s
|
||
*--------------------------------------
|
||
CS.END
|
||
*--------------------------------------
|
||
OptionList .AS "ACFLRacflr"
|
||
OptionVars .DA #bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse,#bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse
|
||
*--------------------------------------
|
||
MSG.USAGE .CS "Usage : LS [-A] [-C] [-F] [-L] [-R] [filespec]\r\n"
|
||
.CS " -A : Show all files\r\n"
|
||
.CS " -C : List in one column\r\n"
|
||
.CS " -F : Show full paths\r\n"
|
||
.CS " -I <*,? wildcards allowed> : Ignore matching files\r\n"
|
||
.CS " -L : Use long listing format\r\n"
|
||
.CZ " -R : Recursively list subdirectories\r\n"
|
||
*--------------------------------------
|
||
MSG.ENTER .CZ "Directory:"
|
||
*--------------------------------------
|
||
MSG.REGEXT .CZ " %10u "
|
||
MSG.DIREXT .CZ " <dir> "
|
||
MSG.BDEVEXT .CZ " %5D/%5D s%dd%d "
|
||
*--------------------------------------
|
||
MSG.SETCOLOR .CZ "\e[1;%dm"
|
||
PRODOS.FT.HEX .HS 0406FAFCFDCBCCCFFF
|
||
PRODOS.FT.TXT .AZ "txt"
|
||
.AZ "bin"
|
||
.AZ "asm"
|
||
.AZ "bas"
|
||
.AZ "var"
|
||
.AZ "pix"
|
||
.AZ "fon"
|
||
.AZ "pak"
|
||
.AZ "sys"
|
||
MSG.NODATE .AZ "<no-date> "
|
||
FMT.Date .AZ "%d-%b-%y "
|
||
FMT.Time .AZ " %H:%M:%S "
|
||
FMT.int16 .AZ "%6D"
|
||
TYPES .AS "-dcblssp"
|
||
ACCESS .AS "xwrxwrxwr"
|
||
*--------------------------------------
|
||
.DUMMY
|
||
.OR 0
|
||
DS.START
|
||
TIME.SysTime .BS S.TIME
|
||
|
||
.INB usr/src/shared/x.fileenum.g
|
||
DS.END .ED
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/bin/ls.s
|
||
ASM
|