diff --git a/.Floppies/A2OSX.BOOT.woz b/.Floppies/A2OSX.BOOT.woz index 582f5989..ff4f7ad1 100644 Binary files a/.Floppies/A2OSX.BOOT.woz and b/.Floppies/A2OSX.BOOT.woz differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 23d37d9d..cc206dd6 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index d299e224..570039bf 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/BIN/CHMOD.S.txt b/BIN/CHMOD.S.txt index 5c8f325d..a325bd00 100644 --- a/BIN/CHMOD.S.txt +++ b/BIN/CHMOD.S.txt @@ -23,6 +23,8 @@ ZPFileName .BS 2 ZPFileStat .BS 2 ZPFullPath .BS 2 ZPMode .BS 2 +ArgIndex .BS 1 +StrMode .BS 1 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -54,7 +56,8 @@ L.MSG.ERR .DA MSG.ERR CS.INIT clc rts *-------------------------------------- -CS.RUN >INC.G ArgIndex +CS.RUN inc ArgIndex + lda ArgIndex >SYSCALL ArgV bcs .8 @@ -85,28 +88,34 @@ CS.RUN >INC.G ArgIndex sta (pData),y bra CS.RUN *-------------------------------------- -.4 >LDA.G StrMode +.4 lda StrMode bne .5 - >LDA.G ArgIndex - >STA.G StrMode + lda ArgIndex + sta StrMode bra CS.RUN .5 >LDA.G hSrcBasePath bne .9 + >LDYA ZPPtr1 jsr InitSrcDirYA bcc CS.RUN rts -.8 >LDA.G StrMode + +.8 lda StrMode beq .9 + jsr CS.RUN.Str2Mode bcs .9 + >LDA.G hSrcBasePath beq .9 + >LDYAI 256 >SYSCALL GetMem bcs .99 + >STYA ZPFullPath txa >STA.G hSrcFullPath @@ -176,10 +185,7 @@ CS.RUN.LEAVE jsr LeaveSubDir sec .99 rts *-------------------------------------- -CS.RUN.DIR >LDA.G bRecurse - bpl .8 - - lda (ZPFileName) +CS.RUN.DIR lda (ZPFileName) cmp #'.' bne .1 @@ -194,7 +200,10 @@ CS.RUN.DIR >LDA.G bRecurse lda (ZPFileName),y beq .8 -.1 jsr CS.RUN.GetFilePath +.1 jsr FilterMatch + bcs .8 + + jsr CS.RUN.GetFilePath >PUSHW L.MSG.DIR >PUSHW ZPFullPath >PUSHBI 2 @@ -206,6 +215,11 @@ CS.RUN.DIR >LDA.G bRecurse >SYSCALL chmod jsr CS.RUN.CheckErr + bcs .9 + + >LDA.G bRecurse + bpl .8 + >LDYA ZPFileName jmp EnterSubDirYA @@ -233,20 +247,28 @@ CS.RUN.FILE jsr FilterMatch *-------------------------------------- CS.RUN.Str2Mode >SYSCALL ArgV >STYA ZPPtr1 + ldy #$ff + .1 iny lda (ZPPtr1),y bne .1 + cpy #3 bne .9 + stz ZPMode stz ZPMode+1 + dey + .2 lda (ZPPtr1),y cmp #'0' bcc .9 + cmp #'7'+1 bcs .9 + asl ZPMode rol ZPMode+1 asl ZPMode @@ -258,7 +280,9 @@ CS.RUN.Str2Mode >SYSCALL ArgV adc ZPMode sta ZPMode bcc .3 + inc ZPMode+1 + .3 dey bpl .2 @@ -329,14 +353,10 @@ MSG.FILE .AZ "File:%s..." .DUMMY .OR 0 DS.START -ArgIndex .BS 1 bContinue .BS 1 bRecurse .BS 1 -StrMode .BS 1 - bPause .BS 1 - hSrcFullPath .BS 1 .INB usr/src/bin/x.fileenum.g diff --git a/ProDOS.FX/ProDOS.S.XDOS.B.txt b/ProDOS.FX/ProDOS.S.XDOS.B.txt index 21382587..f78ff856 100644 --- a/ProDOS.FX/ProDOS.S.XDOS.B.txt +++ b/ProDOS.FX/ProDOS.S.XDOS.B.txt @@ -21,6 +21,8 @@ XDOS.FindFileOrVol cmp #MLI.E.INVPATH bne fnderr + clc + rts moventry ldy h_entln Get FileInfo From Directory Block Buffer diff --git a/ProDOS.FX/ProDOS.S.XRW.txt b/ProDOS.FX/ProDOS.S.XRW.txt index b1861d4c..ba87735f 100644 --- a/ProDOS.FX/ProDOS.S.XRW.txt +++ b/ProDOS.FX/ProDOS.S.XRW.txt @@ -525,7 +525,7 @@ L58D3 lda XRW.EndDataMark,y (4) dm4, dm5, dm6 and turn off byte. clc (2,9) -wexit lda IO.D2.ReadMode,x out of write mode + lda IO.D2.ReadMode,x out of write mode lda IO.D2.WShift,x to read mode. rts return from write. @@ -886,7 +886,7 @@ XRW.ReadAddr ldy #$FC cmp #$AA bne rderr - ldy XRW.UnitIndex Succesfull Read, update Drive table + ldy XRW.UnitIndex Successful Read, update Drive table lda XRW.AddrField.V sta XRW.D2VolNum-1,y diff --git a/SYS/KERNEL.S.FS.txt b/SYS/KERNEL.S.FS.txt index e7a01397..6a49b801 100644 --- a/SYS/KERNEL.S.FS.txt +++ b/SYS/KERNEL.S.FS.txt @@ -158,7 +158,7 @@ IO.MLI.OPEN >LDYAI 1024 get a ProDOS IOBUF FS.OPEN.RTS rts *-------------------------------------- FS.Stat bit CORE.FSID - bmi FS.StatEX + bmi FS.Stat.FX >MLICALL MLIGETFILEINFO bcs FS.OPEN.RTS @@ -192,7 +192,7 @@ FS.Stat bit CORE.FSID ldx #K.S.STAT+S.STAT.MTIME jmp SHARED.PTime2StatYAX *-------------------------------------- -FS.StatEX >MLICALL MLIGETFILEINFOEX +FS.Stat.FX >MLICALL MLIGETFILEINFOEX bcs FS.OPEN.RTS >LDYAI K.MLI.PARAMS+3 @@ -261,9 +261,6 @@ FS.ClrStat ldx #S.STAT-1 rts *-------------------------------------- -FS.Mode2Access clc - rts -*-------------------------------------- FS.Access2Mode and #S.FI.A.FULL cmp #S.FI.A.FULL beq .7 diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 840b6179..d53eebbd 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -33,63 +33,57 @@ K.ChTyp jsr PFT.CheckPath1 * `>SYSCALL chmod` * ## RETURN VALUE *-------------------------------------- -* only 777-555 +* ProDOS203 : +* -w------- access = $C2 +* r-------- access = $01 +* --------- access = $00 *-------------------------------------- K.ChMod jsr PFT.CheckPath2 bcs K.ChMod.RET4 jsr STAT.PullPathAndMode - lda K.S.STAT+S.STAT.MODE+1 - and /S.STAT.MODE.RU - beq .9 - - lda K.S.STAT+S.STAT.MODE - and #S.STAT.MODE.XO+S.STAT.MODE.RO+S.STAT.MODE.XG+S.STAT.MODE.RG+S.STAT.MODE.XU+S.STAT.MODE.RU - cmp #S.STAT.MODE.XO+S.STAT.MODE.RO+S.STAT.MODE.XG+S.STAT.MODE.RG+S.STAT.MODE.XU+S.STAT.MODE.RU - bne .9 + bit CORE.FSID + bmi K.ChMod.FX >MLICALL MLIGETFILEINFO - bcs .90 + bcs .9 - lda K.MLI.PARAMS+S.FI.A - and #$3D not S.FI.A.RN+S.FI.A.D+S.FI.A.W - ora #S.FI.A.R - tax - lda K.S.STAT+S.STAT.MODE - tay - bit #S.STAT.MODE.WG + ldx #0 + lda K.S.STAT+S.STAT.MODE+1 + and /S.STAT.MODE.RU beq .1 + + inx - txa - ora #S.FI.A.RN - tax - tya - -.1 bit #S.STAT.MODE.WU - beq .2 +.1 lda K.S.STAT+S.STAT.MODE + bpl .2 txa - ora #S.FI.A.D - tax - tya + ora #$C2 -.2 bit #S.STAT.MODE.WO - beq .3 - - txa - ora #S.FI.A.W tax -.3 stx K.MLI.PARAMS+S.FI.A + +.2 stx K.MLI.PARAMS+S.FI.A >MLICALL MLISETFILEINFO - rts - -.9 lda #E.SYN - sec -.90 rts +.9 rts -K.ChMod.RET4 >RET 4 discard statbuf +K.ChMod.FX stz K.MLI.PARAMS+3+S.FIEX.ACL read mode + + >MLICALL MLIACL + bcs .9 + + >LDYA K.S.STAT+S.STAT.MODE + >STYA K.MLI.PARAMS+3+S.FIEX.ACL.MOD + + lda #$57 write mode + sta K.MLI.PARAMS+3+S.FIEX.ACL + + >MLICALL MLIACL +.9 rts + +K.ChMod.RET4 >RET 4 *-------------------------------------- * # FStat * Return information about a hFILE