A2osX/BIN/LS.S.txt

881 lines
15 KiB
Plaintext
Raw Normal View History

NEW
2019-09-19 15:22:14 +00:00
AUTO 3,1
2021-07-24 20:42:23 +00:00
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/ls
*--------------------------------------
2021-07-24 20:42:23 +00:00
.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
*--------------------------------------
2021-07-24 20:42:23 +00:00
MAX.COL .EQ 4
*--------------------------------------
2021-07-24 20:42:23 +00:00
.DUMMY
.OR ZPBIN
2018-12-19 16:45:09 +00:00
ZS.START
2021-07-25 14:03:41 +00:00
ZPPtr1 .BS 2
ZPPtr2 .BS 2
ZPFileName .BS 2
ZPFileStat .BS 2
2021-07-25 14:03:41 +00:00
ZPLineBuf .BS 2
ZPPWBuf .BS 2
2021-07-25 14:03:41 +00:00
ArgCount .BS 1
2021-07-25 14:03:41 +00:00
ColCount .BS 1
bPass2 .BS 1
2021-07-25 14:03:41 +00:00
bPause .BS 1
bAllmostAll .BS 1
bColumn .BS 1
bFullPath .BS 1
bLong .BS 1
bRecurse .BS 1
bIsTTY .BS 1
2021-07-25 14:03:41 +00:00
ZS.END .ED
*--------------------------------------
2021-07-25 14:03:41 +00:00
* File Header (16 Bytes)
*--------------------------------------
2021-07-24 20:42:23 +00:00
CS.START cld
jmp (.1,x)
2021-07-25 14:03:41 +00:00
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT
2021-07-24 20:42:23 +00:00
.DA #0
2021-07-25 14:03:41 +00:00
.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
2021-07-24 20:42:23 +00:00
.DA 0
2015-06-03 18:30:57 +00:00
*--------------------------------------
* Relocation Table
2019-10-03 06:25:27 +00:00
*--------------------------------------
2021-07-25 14:03:41 +00:00
.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.REG .DA MSG.REG
L.MSG.REGEXT .DA MSG.REGEXT
L.MSG.DIR .DA MSG.DIR
L.MSG.DIREXT .DA MSG.DIREXT
L.MSG.BDEV .DA MSG.BDEV
L.MSG.BDEVEXT .DA MSG.BDEVEXT
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT
L.FMT.Date .DA FMT.Date
L.FMT.Time .DA FMT.Time
L.FMT.string6 .DA FMT.string6
L.FMT.int16 .DA FMT.int16
J.CS.RUN.PRINT .DA CS.RUN.PRINT.REG
2021-07-24 20:42:23 +00:00
.DA CS.RUN.PRINT.DIR
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.BDEV
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.CDEV
.DA CS.RUN.PRINT.CDEV
.DA 0
*--------------------------------------
2021-07-25 14:03:41 +00:00
CS.INIT clc
rts
2018-12-19 16:45:09 +00:00
*--------------------------------------
2021-07-25 14:03:41 +00:00
CS.RUN jsr CS.RUN.ISATTY
2021-07-25 14:03:41 +00:00
.1 inc ArgCount
lda ArgCount
>SYSCALL ArgV
bcs .6
2020-07-20 15:19:32 +00:00
2021-07-25 14:03:41 +00:00
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
2020-07-20 15:19:32 +00:00
2021-07-25 14:03:41 +00:00
ldy #1
lda (ZPPtr1),y
2021-07-25 14:03:41 +00:00
ldx #OptionVars-OptionList-1
2021-07-25 14:03:41 +00:00
.2 cmp OptionList,x
beq .3
2021-07-25 14:03:41 +00:00
dex
bpl .2
2021-07-25 14:03:41 +00:00
>PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
2021-07-25 14:03:41 +00:00
lda #E.SYN
sec
rts
2021-07-25 14:03:41 +00:00
.3 ldy OptionVars,x
lda #$80
sta $0,y
bra .1
2021-07-25 14:03:41 +00:00
.4 >LDYA ZPPtr1
jsr InitSrcDirYA
bcc .1 scan for any other args
2021-07-25 14:03:41 +00:00
.9 rts
2019-10-03 06:25:27 +00:00
2021-07-25 14:03:41 +00:00
.6 >LDA.G index do we have a Source dir ?
bne .8
2019-11-29 15:36:54 +00:00
2021-07-25 14:03:41 +00:00
ldy #S.PS.hCWD
lda (pPS),y
>SYSCALL GetMemPtr
jsr InitSrcDirYA
bcs .9
2021-07-25 14:03:41 +00:00
.8 >PUSHEA.G TIME.SysTime
>SYSCALL Time
2021-07-25 14:03:41 +00:00
>LDYAI S.PW
>SYSCALL GetMem
bcs .9
2021-07-25 14:03:41 +00:00
>STYA ZPPWBuf
txa
>STA.G hPWBuf
2021-07-25 14:03:41 +00:00
>LDYAI 256
>SYSCALL GetMem
bcs .9
2021-07-25 14:03:41 +00:00
>STYA ZPLineBuf
txa
2021-07-25 14:03:41 +00:00
>STA.G hLineBuf
2016-08-17 06:25:58 +00:00
*--------------------------------------
2021-07-25 14:03:41 +00:00
CS.RUN.LOOP stz bPass2
2021-07-25 14:03:41 +00:00
.1 ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
bcs .99 I/O error
2020-03-17 16:03:32 +00:00
2021-07-25 14:03:41 +00:00
tay
bne .2 no char
2020-03-17 16:03:32 +00:00
2021-07-25 14:03:41 +00:00
>SYSCALL GetChar
cmp #$03 Ctrl-C
beq .99 Abort....
2020-03-17 16:03:32 +00:00
2021-07-25 14:03:41 +00:00
cmp #$13 Ctrl-S
bne .2
2021-07-25 14:03:41 +00:00
lda bPause
eor #$ff
sta bPause
bne .1
2020-03-17 16:03:32 +00:00
2021-07-25 14:03:41 +00:00
.2 bit bPause
bmi .1
2020-03-17 16:03:32 +00:00
2021-07-25 14:03:41 +00:00
jsr GetEntry
bcs .9
2020-03-17 16:03:32 +00:00
2021-07-25 14:03:41 +00:00
jsr FilterMatch
bcs .8 no match, skip....
2021-07-25 14:03:41 +00:00
bit bAllmostAll
bmi .4
2020-03-17 16:03:32 +00:00
2021-07-25 14:03:41 +00:00
lda (ZPFileName)
cmp #'.'
beq .8
2018-12-19 16:45:09 +00:00
2021-07-25 14:03:41 +00:00
.4 ldy #S.STAT.MODE+1
lda (ZPFileStat),y
2020-07-13 19:29:31 +00:00
2021-07-25 14:03:41 +00:00
and #$70
lsr
lsr
lsr
tax
jsr CS.RUN.PRINT.JMP
bcs .99
2018-12-19 16:45:09 +00:00
2021-07-25 14:03:41 +00:00
.8 jsr GetNextEntry
bcc .1
2018-12-19 16:45:09 +00:00
2021-07-25 14:03:41 +00:00
bit bPass2
bmi .9
2018-12-19 16:45:09 +00:00
2021-07-25 14:03:41 +00:00
jsr ResetSrcDir
bcs .99
2021-07-25 14:03:41 +00:00
dec bPass2
bra .1
2021-07-25 14:03:41 +00:00
.9 bit bLong
bmi .91
2021-07-25 14:03:41 +00:00
jsr CS.RUN.NewLine
bcs .99
2021-07-25 14:03:41 +00:00
.91 jsr LeaveSubDir
bcs .98
2016-10-30 18:19:43 +00:00
2021-07-25 14:03:41 +00:00
jsr BasePath..
2021-07-25 14:03:41 +00:00
jsr CS.RUN.ENTER.MSG
bcs .99
2021-07-25 14:03:41 +00:00
jsr GetNextEntry
jmp CS.RUN.LOOP
2021-07-25 14:03:41 +00:00
.98 lda #0
sec
.99 rts
*--------------------------------------
2020-02-29 14:06:28 +00:00
CS.RUN.PRINT.JMP
2021-07-25 14:03:41 +00:00
jmp (J.CS.RUN.PRINT,x)
2020-02-29 14:06:28 +00:00
*--------------------------------------
CS.RUN.PRINT.REG
2021-07-25 14:03:41 +00:00
bit bPass2
bpl .8
2021-07-25 14:03:41 +00:00
bit bLong
bmi .1
2020-02-29 14:06:28 +00:00
2021-07-25 14:03:41 +00:00
bit bColumn
bmi .23
2021-07-25 14:03:41 +00:00
bit bFullPath
bpl .22
2021-07-25 14:03:41 +00:00
jsr CS.RUN.PRINT.SRCPATH
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
.23 >LDYA ZPFileName
>SYSCALL PutS
rts
2021-07-25 14:03:41 +00:00
.22 >PUSHW L.MSG.REG
>PUSHW ZPFileName
>PUSHBI 2
>SYSCALL PrintF
bcs .9
2021-07-25 14:03:41 +00:00
jmp CS.RUN.UpdateColCnt
.8 clc
.9 rts
2020-02-29 14:06:28 +00:00
*--------------------------------------
2021-07-25 14:03:41 +00:00
.1 >PUSHW L.MSG.REGEXT
2021-07-25 14:03:41 +00:00
jsr Mod2CSTR (2)
2020-07-13 19:29:31 +00:00
2021-07-25 14:03:41 +00:00
jsr CS.RUN.PushUidGid (4)
2020-02-29 14:06:28 +00:00
2021-07-25 14:03:41 +00:00
ldy #S.STAT.SIZE+3
ldx #4
2020-02-29 14:06:28 +00:00
2021-07-25 14:03:41 +00:00
.2 lda (ZPFileStat),y
>PUSHA
dey
dex
bne .2 (4)
2021-07-25 14:03:41 +00:00
jsr CS.RUN.PUSHDATES (4)
2020-02-29 14:06:28 +00:00
2021-07-25 14:03:41 +00:00
ldy #S.STAT.P.TYPE
lda (ZPFileStat),y
jsr FileType2PSTR
>PUSHYA (2)
2020-02-29 14:06:28 +00:00
2021-07-25 14:03:41 +00:00
ldy #S.STAT.P.AUXTYPE+1
lda (ZPFileStat),y
>PUSHA
dey
lda (ZPFileStat),y
>PUSHA (2)
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
>PUSHW ZPFileName (2)
2021-07-25 14:03:41 +00:00
>PUSHBI 20
>SYSCALL PrintF
bcs .9
2021-07-25 14:03:41 +00:00
jmp CS.RUN.NewLine.1
*--------------------------------------
2018-12-19 16:45:09 +00:00
CS.RUN.PRINT.DIR
2021-07-25 14:03:41 +00:00
bit bPass2
bmi .8
2021-07-25 14:03:41 +00:00
bit bLong
bmi .4
2021-07-25 14:03:41 +00:00
bit bColumn
bmi .23
2021-07-25 14:03:41 +00:00
bit bFullPath
bpl .22
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
jsr CS.RUN.PRINT.SRCPATH
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
.23 >LDYA ZPFileName
>SYSCALL PutS
bcs .9
2021-07-25 14:03:41 +00:00
bit bRecurse
bpl .8
2021-07-25 14:03:41 +00:00
lda (ZPFileName)
cmp #'.'
beq .8
2021-07-25 14:03:41 +00:00
>LDYA ZPFileName
jmp EnterSubDirYA
2021-07-25 14:03:41 +00:00
.8 clc
.9 rts
2018-08-22 15:23:27 +00:00
2021-07-25 14:03:41 +00:00
.22 >PUSHW L.MSG.DIR
>PUSHW ZPFileName
>PUSHBI 2
>SYSCALL PrintF
bcs .9
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
ldy #0
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
.1 iny
lda (ZPFileName),y
bne .1
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
.11 iny
cpy #19
bcs .2
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
lda #C.SPACE
phy
>SYSCALL PutChar
ply
bcc .11
rts
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
.2 jsr CS.RUN.UpdateColCnt
bcc .5
rts
2019-12-06 13:50:32 +00:00
*--------------------------------------
2021-07-25 14:03:41 +00:00
.4 >PUSHW L.MSG.DIREXT
2021-07-25 14:03:41 +00:00
jsr Mod2CSTR
2021-07-25 14:03:41 +00:00
jsr CS.RUN.PushUidGid
jsr CS.RUN.PUSHDATES
>PUSHW ZPFileName
>PUSHBI 12
>SYSCALL PrintF
bcs .90
2021-07-25 14:03:41 +00:00
jsr CS.RUN.NewLine.1
bcs .90
2021-07-25 14:03:41 +00:00
.5 bit bRecurse
bpl .80
2021-07-25 14:03:41 +00:00
lda (ZPFileName)
cmp #'.'
beq .80
2021-07-25 14:03:41 +00:00
jsr CS.RUN.NewLine
bcs .90
2021-07-25 14:03:41 +00:00
>LDYA ZPFileName
jsr EnterSubDirYA
bcs .90
2021-07-25 14:03:41 +00:00
jmp CS.RUN.ENTER.MSG
2020-02-29 14:06:28 +00:00
2021-07-25 14:03:41 +00:00
.80 clc
.90 rts
*--------------------------------------
2020-02-29 14:06:28 +00:00
CS.RUN.PRINT.CDEV
2021-07-25 14:03:41 +00:00
clc
rts
2020-02-29 14:06:28 +00:00
*--------------------------------------
CS.RUN.PRINT.BDEV
2021-07-25 14:03:41 +00:00
bit bPass2
bmi .8
bit bLong
bmi .20
2020-02-29 14:06:28 +00:00
2021-07-25 14:03:41 +00:00
bit bColumn
bmi .23
2021-07-25 14:03:41 +00:00
bit bFullPath
bpl .22
2020-02-29 14:06:28 +00:00
2021-07-25 14:03:41 +00:00
jsr CS.RUN.PRINT.SRCPATH
2020-02-29 14:06:28 +00:00
2021-07-25 14:03:41 +00:00
.23 >LDYA ZPFileName
>SYSCALL PutS
bcs .9
2021-07-25 14:03:41 +00:00
bit bRecurse
bpl .8
2021-07-25 14:03:41 +00:00
lda (ZPFileName)
cmp #'.'
beq .8
2021-07-25 14:03:41 +00:00
>LDYA ZPFileName
jmp EnterSubDirYA
2021-01-12 21:14:13 +00:00
2021-07-25 14:03:41 +00:00
.8 clc
.9 rts
2019-03-11 15:43:33 +00:00
2021-07-25 14:03:41 +00:00
.22 >PUSHW L.MSG.BDEV
>PUSHW ZPFileName
>PUSHBI 2
>SYSCALL PrintF
bcs .9
2019-12-06 13:50:32 +00:00
2021-07-25 14:03:41 +00:00
ldy #0
2019-12-06 13:50:32 +00:00
2021-07-25 14:03:41 +00:00
.1 iny
lda (ZPFileName),y
bne .1
2019-12-06 13:50:32 +00:00
2021-07-25 14:03:41 +00:00
.11 iny
cpy #19
bcs .2
2019-12-06 13:50:32 +00:00
2021-07-25 14:03:41 +00:00
lda #C.SPACE
phy
>SYSCALL PutChar
ply
bcc .11
2021-07-25 14:03:41 +00:00
rts
2019-12-06 13:50:32 +00:00
2021-07-25 14:03:41 +00:00
.2 jsr CS.RUN.UpdateColCnt
* bcc .5
rts
2020-02-29 14:06:28 +00:00
*--------------------------------------
2021-07-25 14:03:41 +00:00
.20 >PUSHW L.MSG.BDEVEXT
>PUSHW ZPFileName
2021-07-25 14:03:41 +00:00
ldy #S.STAT.P.SLOT
>PUSHB (ZPFileStat),y
iny DRIVE
>PUSHB (ZPFileStat),y
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
ldy #S.STAT.BLOCKS+1
>PUSHB (ZPFileStat),y
dey
>PUSHB (ZPFileStat),y
2020-02-14 07:21:56 +00:00
2021-07-25 14:03:41 +00:00
ldy #S.STAT.P.DEVBLOCKS+1
>PUSHB (ZPFileStat),y
dey
>PUSHB (ZPFileStat),y
2021-07-25 14:03:41 +00:00
>PUSHBI 8
2019-12-06 13:50:32 +00:00
2021-07-25 14:03:41 +00:00
>SYSCALL PrintF
bcs .90
2021-07-25 14:03:41 +00:00
jsr CS.RUN.NewLine.1
bcs .90
2018-12-19 16:45:09 +00:00
2021-07-25 14:03:41 +00:00
bit bRecurse
bpl .80
2021-07-25 14:03:41 +00:00
>LDYA ZPFileName
jsr EnterSubDirYA
bcs .90
2021-07-25 14:03:41 +00:00
jmp CS.RUN.ENTER.MSG
2021-07-25 14:03:41 +00:00
.80 clc
.90 rts
*--------------------------------------
2020-02-14 07:21:56 +00:00
CS.RUN.PRINT.SRCPATH
2021-07-25 14:03:41 +00:00
ldy #hSrcBasePath
lda (pData),y
>SYSCALL GetMemPtr
>PUSHYA
>PUSHBI 0
>SYSCALL PrintF
rts
2020-02-14 07:21:56 +00:00
*--------------------------------------
2020-07-13 19:29:31 +00:00
CS.RUN.PushUidGid
2021-07-25 14:03:41 +00:00
ldy #S.STAT.UID
lda (ZPFileStat),y
>PUSHA
>PUSHW ZPPWBuf
>SYSCALL GetPWUID
bcs .2
>PUSHEA.G USER
jsr CS.RUN.PushUidGidStr
bra .3
.2 >PUSHEA.G USER
>PUSHW L.FMT.int16
ldy #S.STAT.UID+1
lda (ZPFileStat),y
>PUSHA
dey
lda (ZPFileStat),y
>PUSHA
>PUSHBI 2
>SYSCALL SPrintF
.3 ldy #S.STAT.GID
lda (ZPFileStat),y
>PUSHA
>PUSHW ZPPWBuf
>SYSCALL GetGRGID
bcs .5
>PUSHEA.G GROUP
jsr CS.RUN.PushUidGidStr
bra .8
.5 >PUSHEA.G GROUP
>PUSHW L.FMT.int16
ldy #S.STAT.GID+1
lda (ZPFileStat),y
>PUSHA
dey
lda (ZPFileStat),y
>PUSHA
>PUSHBI 2
>SYSCALL SPrintF
.8 >PUSHEA.G USER
>PUSHEA.G GROUP
clc
rts
2020-07-13 19:29:31 +00:00
CS.RUN.PushUidGidStr
2021-07-25 14:03:41 +00:00
>PUSHW L.FMT.string6
>PUSHW ZPPWBuf
>PUSHBI 2
>SYSCALL SPrintF
rts
2019-12-06 13:50:32 +00:00
*--------------------------------------
CS.RUN.PUSHDATES
2021-07-25 14:03:41 +00:00
ldy #TIME.Mod-1 Set NODATE as default
jsr CS.RUN.NODATES.INIT
ldy #TIME.Create-1 Set NODATE as default
jsr CS.RUN.NODATES.INIT
ldy #S.STAT.MTIME+S.TIME.MONTH
lda (ZPFileStat),y
beq .1 Month=0, invalid date/time
>PUSHEA.G TIME.Mod
lda ZPFileStat
clc
adc #S.STAT.MTIME
tay
lda ZPFileStat+1
adc #0
jsr CS.RUN.DATEFMT.SELECT
>SYSCALL StrFTime
.1 ldy #S.STAT.CTIME+S.TIME.MONTH
lda (ZPFileStat),y
beq .2 Month=0, nvalid date/time
>PUSHEA.G TIME.Create
lda ZPFileStat
clc
adc #S.STAT.CTIME
tay
lda ZPFileStat+1
adc #0
jsr CS.RUN.DATEFMT.SELECT
>SYSCALL StrFTime
.2 >PUSHEA.G TIME.Mod
>PUSHEA.G TIME.Create
rts
*--------------------------------------
2019-11-29 15:36:54 +00:00
CS.RUN.NODATES.INIT
2021-07-25 14:03:41 +00:00
ldx #$ff
2019-11-29 15:36:54 +00:00
2021-07-25 14:03:41 +00:00
.1 inx
iny
lda MSG.NODATE,x
sta (pData),y
bne .1
2021-07-25 14:03:41 +00:00
rts
2019-11-29 15:36:54 +00:00
*--------------------------------------
CS.RUN.DATEFMT.SELECT
2021-07-25 14:03:41 +00:00
>STYA ZPPtr1
ldy #S.TIME.CENTURY
lda (ZPPtr1),y
ldy #TIME.SysTime+S.TIME.CENTURY
cmp (pData),y
bne .9
ldy #S.TIME.YEAR
lda (ZPPtr1),y
ldy #TIME.SysTime+S.TIME.YEAR
cmp (pData),y
bne .9
ldy #S.TIME.MONTH
lda (ZPPtr1),y
ldy #TIME.SysTime+S.TIME.MONTH
cmp (pData),y
bne .9
ldy #S.TIME.DAY
lda (ZPPtr1),y
ldy #TIME.SysTime+S.TIME.DAY
cmp (pData),y
bne .9
.8 >PUSHW L.FMT.Time
>PUSHW ZPPtr1
rts
.9 >PUSHW L.FMT.Date
>PUSHW ZPPtr1
rts
2019-11-29 15:36:54 +00:00
*--------------------------------------
CS.RUN.UpdateColCnt
2021-07-25 14:03:41 +00:00
inc ColCount
lda ColCount
cmp #MAX.COL
bne CS.RUN.NewLine.8
2021-07-25 14:03:41 +00:00
stz ColCount
bra CS.RUN.NewLine.1
*--------------------------------------
2016-10-30 22:23:18 +00:00
CS.RUN.ENTER.MSG
2021-07-25 14:03:41 +00:00
>PUSHW L.MSG.ENTER
ldy #hSrcBasePath
lda (pData),y
>SYSCALL GetMemPtr
>PUSHYA
>PUSHBI 2
2021-07-25 14:03:41 +00:00
>SYSCALL PrintF
bcc CS.RUN.NewLine.1
rts
*--------------------------------------
CS.RUN.NewLine lda ColCount
2021-07-25 14:03:41 +00:00
beq CS.RUN.NewLine.8
2020-07-21 05:26:07 +00:00
CS.RUN.NewLine.1
2021-07-25 14:03:41 +00:00
lda #C.CR
>SYSCALL PutChar
2021-07-25 14:03:41 +00:00
lda bIsTTY
beq CS.RUN.NewLine.8
2021-07-25 14:03:41 +00:00
lda #C.LF
>SYSCALL PutChar
2020-07-21 05:26:07 +00:00
CS.RUN.NewLine.8
2021-07-25 14:03:41 +00:00
clc
rts
*--------------------------------------
2021-07-25 14:03:41 +00:00
CS.RUN.ISATTY ldy #S.PS.hStdOut
lda (pPS),y
tax
lda hFDs-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)
beq .9
inc bIsTTY
2021-07-24 20:42:23 +00:00
2021-07-25 14:03:41 +00:00
.9 rts
2016-10-30 22:23:18 +00:00
*--------------------------------------
2021-07-25 14:03:41 +00:00
CS.DOEVENT sec
rts
*--------------------------------------
2021-07-25 14:03:41 +00:00
CS.QUIT jsr LeaveSubDir
bcc CS.QUIT
2019-12-06 13:50:32 +00:00
2021-07-25 14:03:41 +00:00
ldy #hFilter
jsr .7
2018-08-11 10:57:57 +00:00
2021-07-25 14:03:41 +00:00
ldy #hPWBuf
jsr .7
2021-07-25 14:03:41 +00:00
ldy #hLineBuf
2021-07-25 14:03:41 +00:00
.7 lda (pData),y
beq .8
2021-07-25 14:03:41 +00:00
>SYSCALL FreeMem
2021-07-25 14:03:41 +00:00
.8 clc
rts
*--------------------------------------
FileType2PSTR ldy #0
2021-07-25 14:03:41 +00:00
.1 cmp PRODOS.FT.HEX,y
beq .8
2021-07-25 14:03:41 +00:00
iny
cpy #PRODOS.FT.TXT-PRODOS.FT.HEX
bne .1
2021-07-25 14:03:41 +00:00
pha
lsr
lsr
lsr
lsr
ora #$30
cmp #'9'+1
bcc .2
2021-07-25 14:03:41 +00:00
adc #6
2021-07-25 14:03:41 +00:00
.2 sta PRODOS.FT.DFLT+1
pla
and #$0F
ora #$30
cmp #'9'+1
bcc .3
2021-07-25 14:03:41 +00:00
adc #6
2021-07-25 14:03:41 +00:00
.3 sta PRODOS.FT.DFLT+2
2021-07-25 14:03:41 +00:00
.8 tya
asl
asl CC
adc L.PRODOS.FT.TXT
tay
2021-07-25 14:03:41 +00:00
lda L.PRODOS.FT.TXT+1
adc #0
2021-07-25 14:03:41 +00:00
rts
*--------------------------------------
2021-07-25 14:03:41 +00:00
Mod2CSTR ldy #S.STAT.MODE+1
lda (ZPFileStat),y
lsr
php C = RU
2020-07-13 19:29:31 +00:00
2021-07-25 14:03:41 +00:00
lsr
lsr
lsr
tax
lda TYPES,x
>STA.G MOD
2020-07-13 19:29:31 +00:00
2021-07-25 14:03:41 +00:00
plp
2020-07-13 19:29:31 +00:00
2021-07-25 14:03:41 +00:00
ldy #S.STAT.MODE
lda (ZPFileStat),y
2019-04-15 05:40:13 +00:00
2021-07-25 14:03:41 +00:00
ldy #MOD+1
ldx #8
2020-07-13 19:29:31 +00:00
2021-07-25 14:03:41 +00:00
.1 pha
lda #'-'
bcc .2
2021-07-25 14:03:41 +00:00
lda ACCESS,x
2020-07-13 19:29:31 +00:00
2021-07-25 14:03:41 +00:00
.2 sta (pData),y
2021-07-25 14:03:41 +00:00
iny
pla
asl
2021-07-25 14:03:41 +00:00
dex
bpl .1
2021-07-25 14:03:41 +00:00
>PUSHEA.G MOD
rts
*--------------------------------------
2021-07-25 14:03:41 +00:00
.INB usr/src/shared/x.fileenum.s
*--------------------------------------
CS.END
*--------------------------------------
2021-07-25 14:03:41 +00:00
OptionList .AS "ACFLRacflr"
OptionVars .DA #bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse,#bAllmostAll,#bColumn,#bFullPath,#bLong,#bRecurse
*--------------------------------------
MSG.USAGE .AS "Usage : LS [-A] [-C] [-F] [-L] [-R] [filespec]\r\n"
.AS " -A : Show dot files\r\n"
.AS " -C : List in multiple columns\r\n"
.AS " -F : Show full paths\r\n"
.AS " -L : Use long listing format\r\n"
.AZ " -R : Recursively list subdirectories\r\n"
2021-07-25 14:03:41 +00:00
*--------------------------------------
MSG.ENTER .AZ "Directory:%s"
MSG.REG .AZ "%19s"
MSG.REGEXT .AZ "%s %6s %6s %10u %s %s %s %H %s"
MSG.DIR .AZ "\e[32m%s/\e[0m"
MSG.DIREXT .AZ "%s %6s %6s %s %s <dir> %s"
MSG.BDEV .AZ "\e[32m%s/\e[0m"
MSG.BDEVEXT .AZ "/%15s s%dd%d Blocks Used:%5D Total:%5D"
*--------------------------------------
PRODOS.FT.HEX .HS 0406FAFCFDE2CBCCCFFF
PRODOS.FT.TXT .AZ "txt"
2021-07-25 14:03:41 +00:00
.AZ "bin"
.AZ "asm"
.AZ "bas"
.AZ "var"
.AZ "atk"
.AZ "pix"
.AZ "fon"
.AZ "pak"
.AZ "sys"
PRODOS.FT.DFLT .AZ "$ "
2021-07-25 14:03:41 +00:00
MSG.NODATE .AZ "<no-date>"
FMT.Date .AZ "%d-%b-%y"
FMT.Time .AZ "%H:%M:%S "
FMT.string6 .AZ "%6s"
FMT.int16 .AZ "%6D"
TYPES .AS "-dbclssp"
ACCESS .AS "xwrxwrxwr"
*--------------------------------------
.DUMMY
.OR 0
DS.START
2021-07-25 14:03:41 +00:00
MOD .BS 11 drwxrwxrwx\0
USER .BS 7
GROUP .BS 7
2020-07-13 19:29:31 +00:00
TIME.SysTime .BS S.TIME
2021-07-25 14:03:41 +00:00
TIME.Create .BS 10 DD-mmm-YY\0
TIME.Mod .BS 10
hLineBuf .BS 1
hPWBuf .BS 1
2017-10-04 15:12:03 +00:00
2021-07-25 14:03:41 +00:00
.INB usr/src/shared/x.fileenum.g
DS.END .ED
*--------------------------------------
MAN
2020-07-13 19:29:31 +00:00
SAVE usr/src/bin/ls.s
ASM