A2osX/BIN/STAT.S.txt

327 lines
6.1 KiB
Plaintext
Raw Normal View History

2019-11-25 16:45:21 +00:00
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
2020-03-10 16:42:07 +00:00
.TF bin/stat
2019-11-25 16:45:21 +00:00
*--------------------------------------
2020-07-30 13:59:04 +00:00
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.i
.INB inc/mli.e.i
2019-11-25 16:45:21 +00:00
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ArgIndex .BS 1
ArgFile .BS 1
2020-02-16 20:45:16 +00:00
ZPPtr1 .BS 2
2019-11-25 16:45:21 +00:00
bFormatStr .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 #S.PS.F.EVENT S.PS.F
.DA #0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #64 SS
.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.Filename .DA MSG.Filename
2020-07-30 11:14:37 +00:00
L.MSG.Access .DA MSG.Access
L.MSG.Mod .DA MSG.Mod
2019-11-25 16:45:21 +00:00
L.MSG.UIDGIDSIZE .DA MSG.UIDGIDSIZE
L.FMT.DateTime .DA FMT.DateTime
2020-07-30 13:59:04 +00:00
L.MSG.CMATimes .DA MSG.CMATimes
2019-11-25 16:45:21 +00:00
.DA 0
*--------------------------------------
CS.INIT clc
rts
*--------------------------------------
CS.RUN
.1 inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
bcs .3
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .2
jsr CS.RUN.CheckOpt
bcc .1
2020-02-16 20:45:16 +00:00
.99 >PUSHW L.MSG.USAGE
>PUSHBI 0
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
2019-11-25 16:45:21 +00:00
lda #E.SYN
sec
rts
.2 lda ArgFile
bne .99
lda ArgIndex
sta ArgFile
bra .1
2020-02-16 20:45:16 +00:00
.3 lda ArgFile
2019-11-25 16:45:21 +00:00
beq .99
>SYSCALL ArgV
2020-02-16 20:45:16 +00:00
>PUSHYA
>PUSHW pData
2019-11-25 16:45:21 +00:00
>SYSCALL Stat
bcs .9
jsr CS.RUN.DUMP
bcs .9
lda #0
sec
.9
CS.RUN.RTS rts
*--------------------------------------
CS.RUN.DUMP lda ArgFile
>SYSCALL ArgV
2020-02-14 07:21:56 +00:00
>PUSHYA
>PUSHWI 0 Allocate
2020-03-09 16:24:08 +00:00
>SYSCALL RealPath
2019-11-25 16:45:21 +00:00
bcs CS.RUN.RTS
2020-02-16 20:45:16 +00:00
>STYA ZPPtr1
2019-11-25 16:45:21 +00:00
phx
2020-02-16 20:45:16 +00:00
>PUSHW L.MSG.Filename
>PUSHW ZPPtr1
2019-11-25 16:45:21 +00:00
>PUSHBI 2
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
2019-11-25 16:45:21 +00:00
pla
2020-02-28 07:21:46 +00:00
>SYSCALL FreeMem
2019-11-25 16:45:21 +00:00
2020-07-30 11:14:37 +00:00
jsr Access2CSTR
>PUSHW L.MSG.Access
>PUSHEA.G ATTR
>PUSHBI 2
>SYSCALL PrintF
2019-11-25 16:45:21 +00:00
jsr Mod2CSTR
2020-07-30 11:14:37 +00:00
>PUSHW L.MSG.MOD
2019-11-25 16:45:21 +00:00
>PUSHEA.G MOD
>PUSHBI 2
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
2019-11-25 16:45:21 +00:00
2020-02-16 20:45:16 +00:00
>PUSHW L.MSG.UIDGIDSIZE
2019-11-25 16:45:21 +00:00
>PUSHW.G StatBuf+S.STAT.UID
2020-02-16 20:45:16 +00:00
>PUSHW.G StatBuf+S.STAT.GID
>PUSHL.G StatBuf+S.STAT.SIZE
>PUSHL.G StatBuf+S.STAT.BLOCKS
2019-12-02 07:09:58 +00:00
>PUSHBI 12
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
2019-11-25 16:45:21 +00:00
jsr CS.RUN.PrintAMCTime
rts
*--------------------------------------
2020-07-30 11:14:37 +00:00
Access2CSTR ldy #S.STAT.P.ACCESS
lda (pData),y
ldy #ATTR+15
ldx #15
.1 lsr
pha
bcc .2
lda ATTRS,x
sta (pData),y
dex
dey
lda ATTRS,x
sta (pData),y
bra .3
.2 lda #'-'
sta (pData),y
dex
dey
sta (pData),y
.3 pla
dey
dex
bpl .1
rts
2019-11-25 16:45:21 +00:00
*--------------------------------------
Mod2CSTR ldy #S.STAT.MODE+1
lda (pData),y
lsr
2020-07-13 19:29:31 +00:00
php
2019-11-25 16:45:21 +00:00
lsr
lsr
lsr
tax
lda TYPES,x
>STA.G MOD
2020-07-13 19:29:31 +00:00
plp
ldx #8
2019-11-25 16:45:21 +00:00
ldy #S.STAT.MODE
lda (pData),y
ldy #MOD+1
2020-07-13 19:29:31 +00:00
.1 pha
2019-11-25 16:45:21 +00:00
lda #'-'
bcc .2
lda ACCESS,x
.2 sta (pData),y
2020-07-13 19:29:31 +00:00
2019-11-25 16:45:21 +00:00
iny
pla
2020-07-13 19:29:31 +00:00
asl
dex
bpl .1
2019-11-25 16:45:21 +00:00
rts
*--------------------------------------
CS.RUN.PrintAMCTime
ldy #TIME.Access-1 Set NODATE as default
jsr CS.RUN.PrintAMCTime.NODATE
ldy #TIME.Mod-1 Set NODATE as default
jsr CS.RUN.PrintAMCTime.NODATE
ldy #TIME.Create-1 Set NODATE as default
jsr CS.RUN.PrintAMCTime.NODATE
>LDA.G StatBuf+S.STAT.ATIME+S.TIME.MONTH
beq .1 Month=0.....invalid date/time
2020-01-18 19:37:32 +00:00
>PUSHEA.G TIME.Access
2019-11-25 16:45:21 +00:00
>PUSHW L.FMT.DateTime
2020-01-18 19:37:32 +00:00
>PUSHEA.G StatBuf+S.STAT.ATIME
2019-11-25 16:45:21 +00:00
>SYSCALL StrFTime
.1 >LDA.G StatBuf+S.STAT.MTIME+S.TIME.MONTH
beq .2 Month=0.....invalid date/time
2020-01-18 19:37:32 +00:00
>PUSHEA.G TIME.Mod
2019-11-25 16:45:21 +00:00
>PUSHW L.FMT.DateTime
2020-01-18 19:37:32 +00:00
>PUSHEA.G StatBuf+S.STAT.MTIME
2019-11-25 16:45:21 +00:00
>SYSCALL StrFTime
.2 >LDA.G StatBuf+S.STAT.CTIME+S.TIME.MONTH
beq .8 Month=0.....invalid date/time
2020-01-18 19:37:32 +00:00
>PUSHEA.G TIME.Create
2019-11-25 16:45:21 +00:00
>PUSHW L.FMT.DateTime
2020-01-18 19:37:32 +00:00
>PUSHEA.G StatBuf+S.STAT.CTIME
2019-11-25 16:45:21 +00:00
>SYSCALL StrFTime
2020-07-30 13:59:04 +00:00
.8 >PUSHW L.MSG.CMATimes
2020-02-16 20:45:16 +00:00
>PUSHEA.G TIME.Create
2019-11-25 16:45:21 +00:00
>PUSHEA.G TIME.Mod
>PUSHEA.G TIME.Access
>PUSHBI 6
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
2019-11-25 16:45:21 +00:00
rts
*--------------------------------------
CS.RUN.PrintAMCTime.NODATE
ldx #$ff
.1 inx
iny
lda MSG.NODATE,x
sta (pData),y
bne .1
rts
*--------------------------------------
CS.QUIT
.8 clc
rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.RUN.CheckOpt ldy #1
lda (ZPPtr1),y
ldx #OptionVars-OptionList-1
.2 cmp OptionList,x
beq .3
dex
bpl .2
sec
rts
.3 ldy OptionVars,x
lda #$ff
sta 0,y
clc
rts
*--------------------------------------
CS.END
*--------------------------------------
OptionList .AS "Cc"
OptionVars .DA #bFormatStr,#bFormatStr
2020-07-30 11:14:37 +00:00
ATTRS .AS "DeReBn----InWrRd"
2019-11-25 16:45:21 +00:00
TYPES .AS "-dbclssp"
2020-07-13 19:29:31 +00:00
ACCESS .AS "xwrxwrxwr"
2019-12-02 07:09:58 +00:00
MSG.NODATE .AZ "<No-Date>"
FMT.DateTime .AZ "%d-%b-%y %H:%M:%S"
2019-11-25 16:45:21 +00:00
*--------------------------------------
MSG.USAGE .AS "Usage : STAT File\r\n"
2020-01-18 19:37:32 +00:00
.AZ " -C : Format\r\n"
2019-11-25 16:45:21 +00:00
MSG.Filename .AZ "Filename : %s\r\n"
2020-07-30 11:14:37 +00:00
MSG.Access .AZ "Access : %s\r\n"
MSG.Mod .AZ "Mod : %s\r\n"
2019-12-02 07:09:58 +00:00
MSG.UIDGIDSIZE .AS "UID : %10D\r\n"
.AS "GID : %10D\r\n"
.AS "Size : %10u\r\n"
.AZ "Blocks : %10u\r\n"
2020-07-30 13:59:04 +00:00
MSG.CMATimes .AS "Created : %s\r\n"
2019-12-02 07:09:58 +00:00
.AS "Modified : %s\r\n"
2020-02-16 20:45:16 +00:00
.AZ "Accessed : %s\r\n"
2019-11-25 16:45:21 +00:00
*--------------------------------------
.DUMMY
.OR 0
DS.START
StatBuf .BS S.STAT
2020-07-30 11:14:37 +00:00
ATTR .BS 17
2019-12-02 07:09:58 +00:00
MOD .BS 11 drwxrwxrwx + \0
2019-11-25 16:45:21 +00:00
TIME.Access .BS 20
TIME.Mod .BS 20
TIME.Create .BS 20
DS.END
.ED
*--------------------------------------
MAN
2020-07-30 13:59:04 +00:00
SAVE usr/src/bin/stat.s
2019-11-25 16:45:21 +00:00
ASM