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
|