From 1bdc81289690d354c1d12ed4d755db6af27786b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 29 Jul 2020 15:10:11 +0200 Subject: [PATCH] Kernel 0.94 --- .Floppies/A2OSX.BLANK.woz | Bin 314368 -> 314368 bytes .Floppies/A2OSX.BOOT.woz | Bin 467456 -> 467456 bytes .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes BIN/ATTR.S.txt | 376 ++++++++++++++++++++++++++++++++++++++ BIN/CHGRP.S.txt | 3 +- BIN/CHMOD.S.txt | 31 +--- BIN/LS.S.txt | 3 +- BIN/TOUCH.S.txt | 8 + BIN/UC.S.txt | 350 +++++++++++++++++++++++++++++++++++ INC/A2osX.I.txt | 2 + SBIN/NETWORKD.S.txt | 4 +- SYS/KERNEL.S.FS.txt | 6 +- 13 files changed, 751 insertions(+), 32 deletions(-) create mode 100644 BIN/ATTR.S.txt create mode 100644 BIN/UC.S.txt diff --git a/.Floppies/A2OSX.BLANK.woz b/.Floppies/A2OSX.BLANK.woz index 4a2fc33b6726ff79cc0c2828bc7c6d3e7ba9f78b..fd9c344794c1dea24b150b259f320d86aa26d46f 100644 GIT binary patch delta 84 zcmZpeA>1%Sm?zvn%IH5AFPG)a`MWmqgmQE4+?fdkJ1bXC&f@mr%wD|`$ji00-@KoD k3e#p2j$}s0?#Ya1%Sm?zvn%IH5AFBkLPo}i69q1=;sdAKHLb9+zb;o)G+-@KoD3e)5wk=V%( nL_STPAR@@JH}tyrWJXuX<_rAo7x)>0mtIF*6Xe05K~Nvu(f3!>%g|0OB$rqW}N^ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index a6424c2b7f666c46e35249f69359b7a7ebc98814..64e812cec0a98eb65cbfccbf06bb3c07836c0ef4 100644 GIT binary patch delta 15453 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 F4FKIR4T%5% diff --git a/BIN/ATTR.S.txt b/BIN/ATTR.S.txt new file mode 100644 index 00000000..03f997b6 --- /dev/null +++ b/BIN/ATTR.S.txt @@ -0,0 +1,376 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF bin/attr +*-------------------------------------- + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/mli.i + .INB inc/mli.e.i +*-------------------------------------- +X.ENTER.SUBDIR .EQ 0 +X.COPY.TO.DEST .EQ 0 +X.DELETE.SOURCE .EQ 0 +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ZPPtr1 .BS 2 +ZPPtr2 .BS 2 +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) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA 0 + .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 + .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.DIR .DA MSG.DIR +L.MSG.FILE .DA MSG.FILE +L.MSG.OK .DA MSG.OK +L.MSG.ERR .DA MSG.ERR + .DA 0 +*-------------------------------------- +CS.INIT clc + rts +*-------------------------------------- +CS.RUN inc ArgIndex + lda ArgIndex + >SYSCALL ArgV + bcs .8 + + >STYA ZPPtr1 + lda (ZPPtr1) + cmp #'-' + bne .4 + + ldy #1 + lda (ZPPtr1),y + + ldx #OptionVars-OptionList-1 + +.2 cmp OptionList,x + beq .3 + dex + bpl .2 + +.9 >PUSHW L.MSG.USAGE + >PUSHBI 0 + >SYSCALL PrintF + lda #E.SYN + sec +.99 rts + +.3 ldy OptionVars,x + lda #$80 + sta (pData),y + bra CS.RUN +*-------------------------------------- +.4 lda StrMode + bne .5 + + lda ArgIndex + sta StrMode + bra CS.RUN + +.5 >LDA.G hSrcBasePath + bne .9 + + >LDYA ZPPtr1 + jsr InitSrcDirYA + bcc CS.RUN + rts + +.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 +*-------------------------------------- +CS.RUN.LOOP ldy #S.PS.hStdIn + lda (pPS),y + >SYSCALL feof + bcs .99 + + tay + bne .1 + + >SYSCALL GetChar + bcs .99 + + cmp #$03 Ctrl-C + beq .99 Abort.... + + cmp #$13 Ctrl-S + bne .1 + + >LDA.G bPause + eor #$ff + sta (pData),y + bne CS.RUN.LOOP + +.1 >LDA.G bPause + bne CS.RUN.LOOP Pause... +*-------------------------------------- + jsr GetEntry + bcs CS.RUN.LEAVE + + ldy #S.STAT.MODE+1 + lda (ZPFileStat),y + and #$70 + bne .5 REG file ? + + jsr CS.RUN.FILE + bcc CS.RUN.NEXT + rts + +.5 cmp /S.STAT.MODE.DIR DIR ? + beq .6 + + cmp /S.STAT.MODE.BDEV VOL ? + bne .9 + +.6 jsr CS.RUN.DIR + bcc CS.RUN.NEXT + rts + +.9 lda #MLI.E.UNSUPST + sec +.99 rts +*-------------------------------------- +CS.RUN.NEXT jsr GetNextEntry + bcc CS.RUN.LOOP + +CS.RUN.LEAVE jsr LeaveSubDir + bcs .90 + + jsr BasePath.. + + jmp CS.RUN.NEXT + +.90 lda #0 + sec +.99 rts +*-------------------------------------- +CS.RUN.DIR lda (ZPFileName) + cmp #'.' + bne .1 + + ldy #1 + lda (ZPFileName),y + beq .8 + + cmp #'.' + bne .1 + + iny + lda (ZPFileName),y + beq .8 + +.1 jsr FilterMatch + bcs .8 + + jsr CS.RUN.GetFilePath + >PUSHW L.MSG.DIR + >PUSHW ZPFullPath + >PUSHBI 2 + >SYSCALL PrintF + bcs .9 + + >PUSHW ZPFullPath + >PUSHW ZPMode + >SYSCALL chmod + + jsr CS.RUN.CheckErr + bcs .9 + + >LDA.G bRecurse + bpl .8 + + >LDYA ZPFileName + jmp EnterSubDirYA + +.8 clc +.9 rts +*-------------------------------------- +CS.RUN.FILE clc +.9 rts +*-------------------------------------- +CS.RUN.Str2Mode >SYSCALL ArgV + >STYA ZPPtr1 + + ldy #$ff + +.1 iny + lda (ZPPtr1),y + bne .1 + + cpy #4 must be "765" max + bcs .9 + + stz ZPMode + stz ZPMode+1 + + ldy #0 + +.2 lda (ZPPtr1),y + beq .8 + cmp #'0' + bcc .9 + + cmp #'7'+1 + bcs .9 + + asl ZPMode + rol ZPMode+1 + asl ZPMode + rol ZPMode+1 + asl ZPMode + rol ZPMode+1 + and #7 + clc + adc ZPMode + sta ZPMode + bcc .3 + + inc ZPMode+1 + +.3 iny + bra .2 + +.8 clc + rts + +.9 sec + rts +*-------------------------------------- +CS.RUN.CheckErr bcs .1 + >LDYA L.MSG.OK + >SYSCALL PutS + rts + +.1 pha + >PUSHW L.MSG.ERR + pla + pha + >PUSHA + >PUSHBI 1 + >SYSCALL PrintF + >LDA.G bContinue + eor #$80 + asl + pla + rts +*-------------------------------------- +CS.RUN.GetFilePath + >LDA.G hSrcBasePath + >SYSCALL GetMemPtr + >PUSHYA + >LDYA ZPFullPath + >SYSCALL StrCpy + >PUSHW ZPFileName + >LDYA ZPFullPath + >SYSCALL StrCat + rts +*-------------------------------------- +CS.DOEVENT sec + rts +*-------------------------------------- +CS.QUIT jsr LeaveSubDir + bcc CS.QUIT + >LDA.G hFilter + beq .1 + >SYSCALL FreeMem +.1 >LDA.G hSrcFullPath + beq .8 + >SYSCALL FreeMem +.8 clc + rts +*-------------------------------------- + .INB usr/src/bin/x.fileenum.s +*-------------------------------------- +CS.END +*-------------------------------------- +OptionList .AS "CRcr" +OptionVars .DA #bContinue,#bRecurse,#bContinue,#bRecurse +*-------------------------------------- +ATTRS .AS "DeReBn----InWrRd" +*-------------------------------------- +MSG.USAGE .AS "Usage : ATTR File(s) (*,? wildcards allowed)\r\n" + .AS " -C : Continue on error\r\n" + .AS " -R : Recurse subdirectories\r\n" + .AZ "+|-De : Destroy enable\r\n" + .AS "+|-Re : Rename enable\r\n" + .AZ "+|-Bn : Backup needed\r\n" + .AZ "+|-In : Invisible\r\n" + .AZ "+|-Wr : Write enable\r\n" + .AS "+|-Rd : Read enable\r\n" +*-------------------------------------- +* 7 6 5 4 3 2 1 0 +* +--+--+--+--+--+--+--+--+ +* |D |RN|B |Reserved|W |R | +* +--+--+--+--+--+--+--+--+ +* +* D: Destroy enable bit +* RN: Rename enable bit +* B: Backup needed bit +* W: Write enable bit +* R: Read enable bit +* +* Bit 2 = Invisible Bit +*-------------------------------------- +MSG.OK .AZ "[OK]" +MSG.ERR .AZ "[%h]\r\n" +MSG.DIR .AZ "Dir :%s..." +MSG.FILE .AZ "File:%s..." +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +bContinue .BS 1 +bRecurse .BS 1 + +bPause .BS 1 +hSrcFullPath .BS 1 + + .INB usr/src/bin/x.fileenum.g + +DS.END + .ED +*-------------------------------------- +MAN +SAVE usr/src/bin/attr.s +ASM diff --git a/BIN/CHGRP.S.txt b/BIN/CHGRP.S.txt index 1694c8a3..c7020748 100644 --- a/BIN/CHGRP.S.txt +++ b/BIN/CHGRP.S.txt @@ -223,8 +223,7 @@ CS.RUN.DIR lda (ZPFileName) .8 clc .9 rts *-------------------------------------- -CS.RUN.FILE - clc +CS.RUN.FILE clc rts *-------------------------------------- CS.RUN.GetGID >SYSCALL ArgV diff --git a/BIN/CHMOD.S.txt b/BIN/CHMOD.S.txt index a325bd00..b3b4c4f1 100644 --- a/BIN/CHMOD.S.txt +++ b/BIN/CHMOD.S.txt @@ -226,23 +226,7 @@ CS.RUN.DIR lda (ZPFileName) .8 clc .9 rts *-------------------------------------- -CS.RUN.FILE jsr FilterMatch - bcs .8 no match, skip.... - - jsr CS.RUN.GetFilePath - - >PUSHW L.MSG.FILE - >PUSHW ZPFullPath - >PUSHBI 2 - >SYSCALL PrintF - bcs .9 - - >PUSHW ZPFullPath - >PUSHW ZPMode - >SYSCALL chmod - jsr CS.RUN.CheckErr - -.8 clc +CS.RUN.FILE clc .9 rts *-------------------------------------- CS.RUN.Str2Mode >SYSCALL ArgV @@ -254,15 +238,16 @@ CS.RUN.Str2Mode >SYSCALL ArgV lda (ZPPtr1),y bne .1 - cpy #3 - bne .9 + cpy #4 must be "765" max + bcs .9 stz ZPMode stz ZPMode+1 - dey + ldy #0 .2 lda (ZPPtr1),y + beq .8 cmp #'0' bcc .9 @@ -283,10 +268,10 @@ CS.RUN.Str2Mode >SYSCALL ArgV inc ZPMode+1 -.3 dey - bpl .2 +.3 iny + bra .2 - clc +.8 clc rts .9 sec diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 6a30052c..f823b8c0 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -723,12 +723,11 @@ Mod2CSTR ldy #S.STAT.MODE+1 plp - ldx #8 - ldy #S.STAT.MODE lda (ZPFileStat),y ldy #MOD+1 + ldx #8 .1 pha lda #'-' diff --git a/BIN/TOUCH.S.txt b/BIN/TOUCH.S.txt index e69de29b..849a020d 100644 --- a/BIN/TOUCH.S.txt +++ b/BIN/TOUCH.S.txt @@ -0,0 +1,8 @@ +*-------------------------------------- +MSG.USAGE .AS "Usage : TOUCH File(s) (*,? wildcards allowed)\r\n" + .AS " -C : Continue on error\r\n" + .AS " -R : Recurse subdirectories\r\n" + .AS " -A : Change ACCESS date/time\r\n" + .AS " -M : Change MODIFICATION date/time\r\n" + .AZ " -K : Change CREATION date/time\r\n" + .AZ " -T YY/MM/DD,hh:MM:ss : Use Specified date/time instead of current\r\n" diff --git a/BIN/UC.S.txt b/BIN/UC.S.txt new file mode 100644 index 00000000..fcf49627 --- /dev/null +++ b/BIN/UC.S.txt @@ -0,0 +1,350 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF bin/uc +*-------------------------------------- + .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 0 +X.COPY.TO.DEST .EQ 0 +X.DELETE.SOURCE .EQ 0 +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ZPPtr1 .BS 2 +ZPPtr2 .BS 2 +ZPFileName .BS 2 +ZPFileStat .BS 2 + +ZPFullPath .BS 2 +ZPNewPath .BS 2 + +ZPLineBuf .BS 2 + +bPause .BS 1 + +bContinue .BS 1 +bRecurse .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 0 + .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 + .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.DIR .DA MSG.DIR +L.MSG.FILE .DA MSG.FILE +L.MSG.OK .DA MSG.OK +L.MSG.ERR .DA MSG.ERR + .DA 0 +*-------------------------------------- +CS.INIT clc + rts +*-------------------------------------- +CS.RUN >INC.G ArgIndex + >SYSCALL ArgV + bcs .5 + >STYA ZPPtr1 + lda (ZPPtr1) + cmp #'-' + bne .4 + jsr CS.RUN.CheckOpt + bcc CS.RUN + +.9 >PUSHW L.MSG.USAGE + >PUSHBI 0 + >SYSCALL PrintF + lda #E.SYN + sec + rts + +.4 >LDA.G hSrcBasePath + bne .9 + >LDYA ZPPtr1 + jsr InitSrcDirYA + bcc CS.RUN +.99 rts +*-------------------------------------- +.5 >LDYAI 256 + >SYSCALL GetMem + bcs .99 + >STYA ZPFullPath + txa + >STA.G hSrcFullPath + + >LDYAI 256 + >SYSCALL GetMem + bcs .99 + >STYA ZPNewPath + txa + >STA.G hSrcNewPath +*-------------------------------------- +CS.RUN.LOOP ldy #S.PS.hStdIn + lda (pPS),y + >SYSCALL feof + bcs .99 + + tay + bne .1 + + >SYSCALL GetChar + bcs .99 + + cmp #$03 Ctrl-C + beq .99 Abort.... + + cmp #$13 Ctrl-S + bne .1 + + lda bPause + eor #$ff + sta bPause + bne CS.RUN.LOOP + +.1 lda bPause + bne CS.RUN.LOOP Pause... +*-------------------------------------- + jsr GetEntry + bcs CS.RUN.LEAVE + + ldy #S.STAT.MODE+1 + lda (ZPFileStat),y + and #$70 + bne .5 REG file ? + + jsr CS.RUN.FILE + bcc CS.RUN.NEXT + rts + +.5 cmp /S.STAT.MODE.DIR DIR ? + beq .6 + + cmp /S.STAT.MODE.BDEV VOL ? + bne .9 + +.6 jsr CS.RUN.DIR + bcc CS.RUN.NEXT + rts + +.9 lda #MLI.E.UNSUPST + sec +.99 rts +*-------------------------------------- +CS.RUN.NEXT jsr GetNextEntry + bcc CS.RUN.LOOP + +CS.RUN.LEAVE jsr LeaveSubDir + bcs .90 + + jsr BasePath.. + + jmp CS.RUN.NEXT + +.90 lda #0 + sec +.99 rts +*-------------------------------------- +CS.RUN.DIR lda (ZPFileName) + cmp #'.' + bne .1 + + ldy #1 + lda (ZPFileName),y + beq .8 + + cmp #'.' + bne .1 + + iny + lda (ZPFileName),y + beq .8 + +.1 jsr FilterMatch + bcs .8 + + jsr CS.RUN.GetFilePath + + >PUSHW L.MSG.DIR + >PUSHW ZPFullPath + >PUSHBI 2 + >SYSCALL PrintF + bcs .9 + + >PUSHW ZPFullPath + jsr CS.RUN.GetNewPath + >PUSHYA + >SYSCALL Rename + jsr CS.RUN.CheckErr + bcs .9 + + lda bRecurse + bpl .8 + + >LDYA ZPFileName is now lowercase + jmp EnterSubDirYA + +.8 clc +.9 rts +*-------------------------------------- +CS.RUN.FILE jsr FilterMatch + bcs .8 no match, skip.... + + jsr CS.RUN.GetFilePath + >PUSHW L.MSG.FILE + >PUSHW ZPFullPath + >PUSHBI 2 + >SYSCALL PrintF + bcs .9 + + >PUSHW ZPFullPath + jsr CS.RUN.GetNewPath + >PUSHYA + >SYSCALL Rename + jsr CS.RUN.CheckErr + +.8 clc +.9 rts +*-------------------------------------- +CS.RUN.CheckErr bcs .1 + >LDYA L.MSG.OK + >SYSCALL PutS + rts + +.1 pha + >PUSHW L.MSG.ERR + pla + pha + >PUSHA + >PUSHBI 1 + >SYSCALL PrintF + lda bContinue + eor #$80 + asl + pla + rts +*-------------------------------------- +CS.RUN.GetFilePath + >LDA.G hSrcBasePath + >SYSCALL GetMemPtr + >PUSHYA + >LDYA ZPFullPath + >SYSCALL StrCpy + >PUSHW ZPFileName + >LDYA ZPFullPath + >SYSCALL StrCat + rts +*-------------------------------------- +CS.RUN.GetNewPath + >LDA.G hSrcBasePath + >SYSCALL GetMemPtr + >PUSHYA + >LDYA ZPNewPath + >SYSCALL StrCpy + + >LDYA ZPFileName + >SYSCALL strupr + + >PUSHW ZPFileName + >LDYA ZPNewPath + >SYSCALL StrCat + rts +*-------------------------------------- +CS.DOEVENT sec + rts +*-------------------------------------- +CS.QUIT jsr LeaveSubDir + bcc CS.QUIT + + >LDA.G hFilter + beq .1 + + >SYSCALL FreeMem +.1 >LDA.G hSrcFullPath + beq .2 + + >SYSCALL FreeMem + +.2 >LDA.G hSrcNewPath + beq .8 + + >SYSCALL FreeMem + +.8 clc + 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 +*-------------------------------------- + .INB usr/src/bin/x.fileenum.s +*-------------------------------------- +CS.END +*-------------------------------------- +OptionList .AS "CRcr" +OptionVars .DA #bContinue,#bRecurse + .DA #bContinue,#bRecurse +*-------------------------------------- +MSG.USAGE .AS "Usage : UC File(s) (*,? wildcards allowed)\r\n" + .AS " -C : Continue on error\r\n" + .AS " -R : Recurse subdirectories\r\n" +MSG.OK .AZ "[OK]" +MSG.ERR .AZ "[%h]\r\n" +MSG.DIR .AZ "Dir :%s..." +MSG.FILE .AZ "File:%s..." +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +ArgIndex .BS 1 + +hSrcFullPath .BS 1 +hSrcNewPath .BS 1 +hFile .BS 1 +hMem .BS 1 + + .INB usr/src/bin/x.fileenum.g + +DS.END + .ED +*-------------------------------------- +MAN +SAVE usr/src/bin/uc.s +ASM diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index f5e0fe54..606a6e1a 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -41,6 +41,8 @@ ZPBIN .EQ $E0 32 bytes ZPBIN.SIZE .EQ 32 PSCTX.SIZE .EQ $100-pCode *-------------------------------------- +A2osX.ZCALL .EQ $0000 +*-------------------------------------- * A2osX GLOBAL PAGE * $BC00->$BC0F : Public Vetors *-------------------------------------- diff --git a/SBIN/NETWORKD.S.txt b/SBIN/NETWORKD.S.txt index e012975f..2eac59e5 100644 --- a/SBIN/NETWORKD.S.txt +++ b/SBIN/NETWORKD.S.txt @@ -384,8 +384,8 @@ CS.END MSG.RUNNING .AZ "NETWORKD:Already loaded, exiting." MSG.DEV.KO .AZ "NETWORKD:No Device Found, exiting." MSG.DEV.OK .AZ "NETWORKD:Bound To Device : %s\r\n" -MSG.LIB .AZ "NETWORKD:Loading %s ... " -MSG.EXEC .AZ "NETWORKD:Running %s ... " +MSG.LIB .AZ "NETWORKD:Loading %s..." +MSG.EXEC .AZ "NETWORKD:Running %s..." MSG.OK .AZ "[OK]" MSG.ERR .AZ "[%h]\r\n" ETCNETWORK .AZ "${BOOT}etc/network" diff --git a/SYS/KERNEL.S.FS.txt b/SYS/KERNEL.S.FS.txt index 6a49b801..21adf739 100644 --- a/SYS/KERNEL.S.FS.txt +++ b/SYS/KERNEL.S.FS.txt @@ -217,10 +217,10 @@ FS.DirEnt2Stat jsr FS.ClrStat dex bne .2 - ldy #S.FIEX.ACCESS - lda (ZPPtr3),y +* ldy #S.FIEX.ACCESS +* lda (ZPPtr3),y - jsr FS.Access2Mode +* jsr FS.Access2Mode ldy #S.FIEX.ACL lda (ZPPtr3),y