From 7cbfdb69f7be83e14ca7bbbdb1a10e1321a86f95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 25 Nov 2019 17:45:21 +0100 Subject: [PATCH] Kernel 0.93+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/STAT.S.txt | 284 +++++++++++++++++++++++++++++++++++++++ INC/A2osX.I.txt | 2 +- 3 files changed, 285 insertions(+), 1 deletion(-) create mode 100644 BIN/STAT.S.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 840c452f4339e8e859bda69db859b0858bbd7ac3..407fdce941ecf8c31f5f686c05ae72e3dc4358b8 100644 GIT binary patch delta 6432 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 Z3SZzWv_U&`KqquTH}nY4P_OXWe*odFpKkyF diff --git a/BIN/STAT.S.txt b/BIN/STAT.S.txt new file mode 100644 index 00000000..b3a9b4dd --- /dev/null +++ b/BIN/STAT.S.txt @@ -0,0 +1,284 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF BIN/STAT +*-------------------------------------- + .INB INC/MACROS.I + .INB INC/A2OSX.I + .INB INC/MLI.I + .INB INC/MLI.E.I +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ArgIndex .BS 1 +ArgFile .BS 1 +ZPPTR1 .BS 2 + +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 +L.MSG.Mode .DA MSG.Mode +L.MSG.UIDGIDSIZE .DA MSG.UIDGIDSIZE +L.FMT.DateTime .DA FMT.DateTime +L.MSG.AMCTimes .DA MSG.AMCTimes + .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 + +.99 >PUSHBI 0 + >LDYA L.MSG.USAGE + >SYSCALL printf + lda #E.SYN + sec + rts + +.2 lda ArgFile + bne .99 + + lda ArgIndex + sta ArgFile + bra .1 + +.3 ldx ArgFile + beq .99 + + >PUSHW pData + txa + >SYSCALL ArgV + >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 + >SYSCALL Realpath + bcs CS.RUN.RTS + + phx + >PUSHYA + >PUSHBI 2 + >LDYA L.MSG.Filename + >SYSCALL printf + pla + >SYSCALL freemem + + jsr Mod2CSTR + >PUSHEA.G MOD + >PUSHBI 2 + >LDYA L.MSG.Mode + >SYSCALL printf + + >PUSHL.G StatBuf+S.STAT.SIZE + >PUSHW.G StatBuf+S.STAT.GID + >PUSHW.G StatBuf+S.STAT.UID + >PUSHBI 8 + >LDYA L.MSG.UIDGIDSIZE + >SYSCALL printf + + jsr CS.RUN.PrintAMCTime + + rts +*-------------------------------------- +*-------------------------------------- +Mod2CSTR ldy #S.STAT.MODE+1 + lda (pData),y + lsr + lsr + lsr + lsr + tax + lda TYPES,x + >STA.G MOD + + ldx #0 + ldy #S.STAT.MODE + lda (pData),y + + ldy #MOD+1 + +.1 lsr + pha + lda #'-' + bcc .2 + + lda ACCESS,x + +.2 sta (pData),y + iny + pla + inx + cpx #8 + bne .1 + +.3 ldy #S.STAT.MODE+1 + lda (pData),y + lsr + lda #'-' + bcc .4 + + lda ACCESS,x + +.4 >STA.G MOD+9 + + 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 + + >PUSHW.G StatBuf+S.STAT.ATIME + >PUSHW L.FMT.DateTime + >LEA.G TIME.Access + >SYSCALL StrFTime + +.1 >LDA.G StatBuf+S.STAT.MTIME+S.TIME.MONTH + beq .2 Month=0.....invalid date/time + + >PUSHW.G StatBuf+S.STAT.MTIME + >PUSHW L.FMT.DateTime + >LEA.G TIME.Mod + >SYSCALL StrFTime + +.2 >LDA.G StatBuf+S.STAT.CTIME+S.TIME.MONTH + beq .8 Month=0.....invalid date/time + + >PUSHW.G StatBuf+S.STAT.CTIME + >PUSHW L.FMT.DateTime + >LEA.G TIME.Create + >SYSCALL StrFTime + +.8 >PUSHEA.G TIME.Create + >PUSHEA.G TIME.Mod + >PUSHEA.G TIME.Access + >PUSHBI 6 + >LDYA L.MSG.AMCTimes + >SYSCALL printf + 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 +TYPES .AS "-dbclssp" +ACCESS .AS "rwxrwxrwx" +MSG.NODATE .AZ " " +FMT.DateTime .AZ "%d-%b-%y %H:%M" +*-------------------------------------- +MSG.USAGE .AS "Usage : STAT File\r\n" + .AZ " -C : "Format Sting"\r\n" +MSG.Filename .AZ "Filename : %s\r\n" +MSG.Mode .AZ "Access : %s\r\n" +MSG.UIDGIDSIZE .AS "UID : %D\r\n" + .AS "GID : %D\r\n" + .AZ "Filesize : %u\r\n" +MSG.AMCTimes .AS "Access time : %s\r\n" + .AS "Mod time : %s\r\n" + .AZ "Creation time : %s\r\n" +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +StatBuf .BS S.STAT +MOD .BS 11 drwxrwxrwx0 +TIME.Access .BS 20 +TIME.Mod .BS 20 +TIME.Create .BS 20 +DS.END + .ED +*-------------------------------------- +MAN +SAVE USR/SRC/BIN/STAT.S +ASM diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index bca25d66..33716414 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -616,7 +616,7 @@ S.STAT.GID .EQ 6 WORD S.STAT.INO .EQ 8 QWORD S.STAT.NLINK .EQ 16 WORD S.STAT.SIZE .EQ 18 DWORD -S.STAT.ATIME .EQ 22 S.TIME +S.STAT.ATIME .EQ 22 S.TIME S.STAT.MTIME .EQ 30 S.TIME S.STAT.CTIME .EQ 38 S.TIME S.STAT.BLOCKS .EQ 46 DWORD