From 6322233cb877e0f132ee3017a2b00dcfbe7e13a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sun, 13 Nov 2016 22:03:31 +0100 Subject: [PATCH] Kernel version 0.8 : BUGFIX #16 , CTIME not set properly when creating FILEs & DIRs --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/CP.S.txt | 3 +- BIN/EDIT.S.txt | 5 ++- BIN/X.CPMV.S.txt | 100 +++++++++++++++++++++++++++++++++--------- BIN/X.FILEENUM.S.txt | 62 ++++++++++++++++++-------- SYS/KERNEL.S.D01.txt | 20 ++++----- SYS/KERNEL.S.DIR.txt | 11 ++++- SYS/KERNEL.S.FILE.txt | 11 ++++- SYS/KERNEL.S.MEM.txt | 2 +- SYS/KERNEL.S.PS.txt | 29 +++++------- 11 files changed, 167 insertions(+), 76 deletions(-) diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index d02ececaa503a6a74e0038ee94d3cd5f8e3bd1ef..cbd40b09d81b0fd6c9c6bd069d9196bd4de205d6 100644 GIT binary patch delta 6602 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 E1N$=;3jhEB delta 6623 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 S)IIUo*57GoDo5VX?)rbyDl`fJ diff --git a/BIN/CP.S.txt b/BIN/CP.S.txt index 5a0df5fc..d1b492c7 100644 --- a/BIN/CP.S.txt +++ b/BIN/CP.S.txt @@ -25,13 +25,14 @@ OptionList >PSTR "CRY" OptionVars .DA #bContinue,#bRecurse,#bNoConfirm *-------------------------------------- MSG.USAGE >CSTR "Usage : CP [Src File/Dir, *,? wildcards allowed]\n -C : Continue on error\n -R : Recurse subdirectories\n -Y : Dont't prompt for override\n" -MSG.DIR >CSTR "CP Dir :%S to %S..." +MSG.DIR >CSTR "CP Dir :%S%S to %S..." MSG.FILE >CSTR "CP File:%S%S to %S..." MSG.OK >CSTR "[OK]\n" MSG.ERR >CSTR "[%h]\n" *-------------------------------------- STAT .BS S.STAT ArgCount .BS 1 +ArgIndex .BS 1 *-------------------------------------- .DUMMY .OR 0 diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 30129705..1608c01b 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -132,7 +132,7 @@ CS.INIT lda #$ff *-------------------------------------- CS.RUN ldy #bCancel lda (pData),y - bne .9 + bne .99 ldy #bInit lda (pData),y @@ -144,7 +144,7 @@ CS.RUN ldy #bCancel .1 ldy #bCancel lda (pData),y - bne .9 + bne .99 >SYSCALL Sleep @@ -162,6 +162,7 @@ CS.RUN ldy #bCancel .8 clc rts +.99 lda #0 .9 sec rts *-------------------------------------- diff --git a/BIN/X.CPMV.S.txt b/BIN/X.CPMV.S.txt index 58d5ae77..6c118262 100644 --- a/BIN/X.CPMV.S.txt +++ b/BIN/X.CPMV.S.txt @@ -37,12 +37,15 @@ L.STAT .DA STAT CS.INIT >SYSCALL GetArgC sta ArgCount cmp #1 - beq .99 + beq .99 + + stz ArgIndex .1 dec ArgCount beq .7 - lda ArgCount + inc ArgIndex + lda ArgIndex >SYSCALL GetArgA >STYA ZPPtr1 @@ -64,7 +67,9 @@ CS.INIT >SYSCALL GetArgC beq .3 dex bne .2 - + +.99 >LDYA L.MSG.USAGE + >SYSCALL CPrintFYA lda #SYSMGR.ERRSYN sec rts @@ -112,12 +117,6 @@ CS.INIT >SYSCALL GetArgC clc rts - -.99 >LDYA L.MSG.USAGE - >SYSCALL CPrintFYA - lda #SYSMGR.ERRSYN - sec -.9 rts *-------------------------------------- CS.RUN ldy #bCANCEL lda (pData),y @@ -160,16 +159,12 @@ CS.RUN ldy #bCANCEL lda (pData),y bpl .8 - ldy #hSrcBasePath - lda (pData),y - >SYSCALL GetMemPtrA - >PUSHYA - >LDYA L.MSG.DIR - >SYSCALL CPrintFYA - + .DO X.DELETE.SOURCE=1 jsr CS.RUN.DELETE.DIR jsr CS.RUN.PRINT.RC - + bcs .99 + .FIN + jsr BasePath.. .8 clc @@ -210,6 +205,13 @@ CS.RUN.DIR ldy #bRecurse cmp #'.' beq .8 + jsr CS.RUN.PRINT.DIR + bcs .9 + + jsr CS.RUN.COPY.DIR + jsr CS.RUN.PRINT.RC + bcs .9 + >LDYA ZPPtr1 jmp EnterSubDirYA @@ -218,11 +220,30 @@ CS.RUN.DIR ldy #bRecurse *-------------------------------------- CS.RUN.FILE jsr CS.RUN.PRINT.FILE bcs .9 + jsr CS.RUN.COPY.FILE + jsr CS.RUN.PRINT.RC + bcs .9 + + .DO X.DELETE.SOURCE=1 jsr CS.RUN.DELETE.FILE jsr CS.RUN.PRINT.RC + bcs .9 + .FIN + .9 rts *-------------------------------------- +CS.RUN.PRINT.DIR + jsr CS.RUN.GET.SRC.DST + >LDYA L.MSG.DIR + bra CS.RUN.PRINT CS.RUN.PRINT.FILE + jsr CS.RUN.GET.SRC.DST + >LDYA L.MSG.FILE + +CS.RUN.PRINT >SYSCALL CPrintFYA + rts + +CS.RUN.GET.SRC.DST ldy #hDstBasePath lda (pData),y >SYSCALL GetMemPtrA @@ -234,11 +255,30 @@ CS.RUN.PRINT.FILE lda (pData),y >SYSCALL GetMemPtrA >PUSHYA - - >LDYA L.MSG.FILE - >SYSCALL CPrintFYA rts *-------------------------------------- +CS.RUN.COPY.DIR ldy #hDstBasePath + lda (pData),y + >SYSCALL GetMemPtrA + >PUSHYA + >PUSHWI UsrBuf256 + >SYSCALL PStrCpy + + >PUSHW ZPPtr1 + >PUSHWI UsrBuf256 + >SYSCALL PStrCat + >LDYAI UsrBuf256 + >SYSCALL MKDirYA + rts +*-------------------------------------- +CS.RUN.COPY.FILE + jsr CS.RUN.MAKE.SRC + + clc + rts +*-------------------------------------- + .DO X.DELETE.SOURCE=1 +*-------------------------------------- CS.RUN.DELETE.DIR jsr CS.RUN.GET.BASE.PATH bra CS.RUN.DELETE @@ -253,6 +293,8 @@ CS.RUN.DELETE >LDYAI UsrBuf256 * >SYSCALL RemoveYA clc rts +*-------------------------------------- + .FIN *-------------------------------------- CS.RUN.GET.BASE.PATH ldy #hSrcBasePath @@ -263,6 +305,21 @@ CS.RUN.GET.BASE.PATH >SYSCALL PStrCpy rts *-------------------------------------- +CS.RUN.MAKE.SRC ldy #hSrcBasePath + .HS 2C bit abs +CS.RUN.MAKE.DST ldy #hDstBasePath + lda (pData),y + >SYSCALL GetMemPtrA + >PUSHYA + >PUSHWI UsrBuf256 + >SYSCALL PStrCpy + + >PUSHW ZPPtr1 + >PUSHWI UsrBuf256 + >SYSCALL PStrCat + >LDYAI UsrBuf256 + rts +*-------------------------------------- CS.RUN.PRINT.RC pha php bcs .1 @@ -275,11 +332,12 @@ CS.RUN.PRINT.RC pha .8 >SYSCALL CPrintFYA bcs .9 plp + bcc .81 ldy #bContinue lda (pData),y eor #$80 asl - pla +.81 pla rts .9 plx diff --git a/BIN/X.FILEENUM.S.txt b/BIN/X.FILEENUM.S.txt index 90bf4b2b..3a38d643 100644 --- a/BIN/X.FILEENUM.S.txt +++ b/BIN/X.FILEENUM.S.txt @@ -37,7 +37,18 @@ InitDstDirYA >SYSCALL GetFullPathYA dey bne .6 - jsr .9 Cleanup + lda (ZPPtr2) + tay + lda #'/' + cmp (ZPPtr2),y + beq .7 + + iny + sta (ZPPtr2),y + tya + sta (ZPPtr2) + +.7 jsr .9 Cleanup clc .99 rts @@ -274,21 +285,7 @@ EnterSubDirYA >STYA ZPPtr2 save SUBDIR for StrCat beq .9 ldy #hSrcBasePath - lda (pData),y - >SYSCALL GetMemPtrA - - >STYA ZPPtr1 save full path - - >PUSHW ZPPtr2 - >PUSHW ZPPtr1 - >SYSCALL PStrCat - - lda (ZPPtr1) - inc - tay - sta (ZPPtr1) - lda #'/' - sta (ZPPtr1),y + jsr EnterSubDirYA.1 >LDYA ZPPtr1 >SYSCALL OpenDirYA @@ -313,7 +310,30 @@ EnterSubDirYA >STYA ZPPtr2 save SUBDIR for StrCat lda #0 sta (pData),y + .DO X.DST.BASE.PATH=1 + ldy #hDstBasePath + jsr EnterSubDirYA.1 + .FIN + + .9 rts + +EnterSubDirYA.1 lda (pData),y + >SYSCALL GetMemPtrA + + >STYA ZPPtr1 save full path + + >PUSHW ZPPtr2 + >PUSHW ZPPtr1 + >SYSCALL PStrCat + + lda (ZPPtr1) + inc + tay + sta (ZPPtr1) + lda #'/' + sta (ZPPtr1),y + rts *-------------------------------------- LeaveSubDir ldy #index lda (pData),y @@ -343,8 +363,13 @@ LeaveSubDir ldy #index .8 clc rts *-------------------------------------- -BasePath.. ldy #hSrcBasePath - lda (pData),y +BasePath.. .DO X.DST.BASE.PATH=1 + ldy #hDstBasePath + jsr BasePath..1 + .FIN + ldy #hSrcBasePath + +BasePath..1 lda (pData),y >SYSCALL GetMemPtrA >STYA ZPPtr1 save full path @@ -360,7 +385,6 @@ BasePath.. ldy #hSrcBasePath tya sta (ZPPtr1) cut DIR2/ from /dir1/DIR2/ - clc rts *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.D01.txt b/SYS/KERNEL.S.D01.txt index 2fec1913..43dc3530 100644 --- a/SYS/KERNEL.S.D01.txt +++ b/SYS/KERNEL.S.D01.txt @@ -53,9 +53,14 @@ DevMgr.SYS.Open stz DevMgr.SYS.CPULOADI jsr DevMgr.SYS.Home lda #1 - sta A2osX.SCRNDEVS+1 - - jsr DevMgr.SYS.Select + sta A2osX.SCRNDEVS+1 fall in SELECT +*-------------------------------------- +DevMgr.SYS.Select + sta SETTEXT + sta SETALTCHAR + sta SET80DISP + sta CLR80STORE + sta SETPAGE2 clc rts *-------------------------------------- @@ -125,15 +130,6 @@ DevMgr.SYS.COut phx clc rts *-------------------------------------- -DevMgr.SYS.Select - sta SETTEXT - sta SETALTCHAR - sta SET80DISP - sta CLR80STORE - sta SETPAGE2 - clc - rts -*-------------------------------------- DevMgr.SYS.FSOut lda DevMgr.SYS.CH cmp #79 diff --git a/SYS/KERNEL.S.DIR.txt b/SYS/KERNEL.S.DIR.txt index 55e1dabb..b7aca637 100644 --- a/SYS/KERNEL.S.DIR.txt +++ b/SYS/KERNEL.S.DIR.txt @@ -613,7 +613,16 @@ K.MKDirYA jsr PFT.CheckPathYA lda #S.FILEINFO.TYPE.DIR sta MLICALL.PARAMS+S.FILEINFO.TYPE lda #S.FILEINFO.STORETYPE.DIR - sta MLICALL.PARAMS+S.FILEINFO.STORETYPE + sta MLICALL.PARAMS+S.FILEINFO.STORETYPE + +* jsr DATETIME + + ldx #3 +.1 lda DATELO,x + sta MLICALL.PARAMS+8,x + dex + bpl .1 + >MLICALL MLICREATE rts *-------------------------------------- diff --git a/SYS/KERNEL.S.FILE.txt b/SYS/KERNEL.S.FILE.txt index 2bbdf20c..b31a2f59 100644 --- a/SYS/KERNEL.S.FILE.txt +++ b/SYS/KERNEL.S.FILE.txt @@ -44,7 +44,16 @@ K.FOPEN jsr PFT.CheckPathSTK >LDYA K.FOPEN.AUXTYPE >STYA MLICALL.PARAMS+5 Aux type lda #S.FILEINFO.STORETYPE.STD - sta MLICALL.PARAMS+7 + sta MLICALL.PARAMS+7 + +* jsr DATETIME + + ldx #3 +.1 lda DATELO,x + sta MLICALL.PARAMS+8,x + dex + bpl .1 + >MLICALL MLICREATE bcc K.FOPEN.10 K.FOPEN.9 rts diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index e51f89d9..0f3cb940 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -306,8 +306,8 @@ K.FreeMemA phy bit RRAMWRAMBNK2 bit RRAMWRAMBNK2 - jsr DevMgr.SYS.Select jsr PS.Select0 + jsr DevMgr.SYS.Select pla Get PC and sub 2 for calling address sec diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index c1ba1665..072eea53 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -55,14 +55,13 @@ K.CreateProcess.CPSID .BS 1 * ##Out : * Y,A = PTR to TSKSLOT *\-------------------------------------- -K.GetPSByIDA sta K.GetPSByIDA.PS - +K.GetPSByIDA pha >LDYAI TskMgr.Table >STYA ZPQuickPtr1 - lda K.GetPSByIDA.PS + pla beq .8 - + sta .20+1 ldx #0 .1 inx @@ -78,7 +77,7 @@ K.GetPSByIDA sta K.GetPSByIDA.PS ldy #S.PS.PID lda (ZPQuickPtr1),y - cmp K.GetPSByIDA.PS +.20 cmp #$ff Self Modified beq .8 .3 cpx TSKMGR.SIZE @@ -91,8 +90,6 @@ K.GetPSByIDA sta K.GetPSByIDA.PS .8 >LDYA ZPQuickPtr1 clc rts -*-------------------------------------- -K.GetPSByIDA.PS .BS 1 */-------------------------------------- * #Sleep * Make current process suspend until next RUN @@ -285,7 +282,7 @@ PS.Init >LDYA K.CreateProcess.CmdLine *-------------------------------------- PS.FreeA jsr K.GetPSByIDA bcs * - >STYA ZPQuickPtr1 +* >STYA ZPQuickPtr1 Already in ZPQuickPtr1 ldy #S.PS.hCMDLINE lda (ZPQuickPtr1),y @@ -329,30 +326,26 @@ PS.FreeA jsr K.GetPSByIDA * PS.SelectA * In : A=PSID *-------------------------------------- -PS.SelectA tay - bne PS.SelectN -PS.Select0 - >LDYAI TskMgr.Table Make PS #0 as current process - >STYA pPs - bra PS.SelectDev - -PS.SelectN jsr K.GetPSByIDA +PS.Select0 lda #0 +PS.SelectA jsr K.GetPSByIDA bcs * >STYA pPs PS.Select ldy #S.PS.hCS lda (pPs),y + beq .1 PS=0 (kernel) has no CS/DS + jsr K.GetMemPtrA >STYA pCode ldy #S.PS.hDS lda (pPs),y - beq PS.SelectDev + beq .1 jsr K.GetMemPtrA >STYA pData -PS.SelectDev ldy #S.PS.hOUTDEV +.1 ldy #S.PS.hOUTDEV lda (pPs),y beq .8