From 4b4dedd6d6c82eeef7946a54e4724e9d67195b9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 21 Jun 2017 17:46:43 +0200 Subject: [PATCH] Kernel version 0.9 : Lowercase support, bugfix in CP/MV/RV --- .Floppies/A2OSX.BOOT.po | Bin 143360 -> 143360 bytes .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/CP.S.txt | 2 + BIN/MV.S.txt | 2 + BIN/RM.S.txt | 2 + BIN/X.CPMVRM.S.txt | 71 +++++++++++++++++++++++--- INC/A2osX.I.txt | 1 - INC/IO.I.txt | 2 +- SYS/KERNEL.S.DIR.txt | 60 ++++++++++++++++------ SYS/KERNEL.S.FILE.txt | 32 ++++++++++-- SYS/KERNEL.S.FIO.txt | 107 +++++++++++++++++++-------------------- SYS/KERNEL.S.txt | 2 +- X.ERRORS.S.txt | 2 - 14 files changed, 197 insertions(+), 86 deletions(-) diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 436ce9ae3fa3919ab9ff3c84a41d4c572e61a0fc..280aa87238e6f8b479faabf444e76a2f6a6cae89 100644 GIT binary patch delta 8993 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 delta 9545 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 delta 10451 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 06110f2261adc6d868fa33b73f876efb74cb05e2..35d0ba8da0a972a709415553613a068e62f3edff 100644 GIT binary patch delta 19752 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 "CP File:%S%S to %S%S..." MSG.OVERWRTE >CSTR "Overwrite [Yes,No,All]?" MSG.OK >PSTR "[OK]\r\n" MSG.ERR >PSTR "[%h]\r\n" +MSG.DONE >PSTR "%D File(s) Copied.\r\n" *-------------------------------------- STAT .BS S.STAT ArgCount .BS 1 @@ -54,6 +55,7 @@ RC .BS 1 bContinue .BS 1 bRecurse .BS 1 bNoConfirm .BS 1 +Count .BS 2 DS.END .ED *-------------------------------------- diff --git a/BIN/MV.S.txt b/BIN/MV.S.txt index 9c39a89a..0a7d867f 100644 --- a/BIN/MV.S.txt +++ b/BIN/MV.S.txt @@ -29,6 +29,7 @@ MSG.FILE >CSTR "MV File:%S%S to %S%S..." MSG.OVERWRTE >CSTR "Overwrite [Yes,No,All]?" MSG.OK >PSTR "[OK]\r\n" MSG.ERR >PSTR "[%h]\r\n" +MSG.DONE >PSTR "%D File(s) Moved.\r\n" *-------------------------------------- STAT .BS S.STAT ArgCount .BS 1 @@ -54,6 +55,7 @@ CopyRC .BS 1 bContinue .BS 1 bRecurse .BS 1 bNoConfirm .BS 1 +Count .BS 2 DS.END .ED *-------------------------------------- diff --git a/BIN/RM.S.txt b/BIN/RM.S.txt index 9e6e71c3..4fc5a244 100644 --- a/BIN/RM.S.txt +++ b/BIN/RM.S.txt @@ -28,6 +28,7 @@ MSG.DIR >CSTR "RM Dir :%S%S..." MSG.FILE >CSTR "RM File:%S%S..." MSG.OK >PSTR "[OK]\r\n" MSG.ERR >PSTR "[%h]\r\n" +MSG.DONE >PSTR "%D File(s) Removed.\r\n" *-------------------------------------- STAT .BS S.STAT ArgCount .BS 1 @@ -53,6 +54,7 @@ CopyRC .BS 1 bContinue .BS 1 bRecurse .BS 1 bNoConfirm .BS 1 +Count .BS 2 DS.END .ED *-------------------------------------- diff --git a/BIN/X.CPMVRM.S.txt b/BIN/X.CPMVRM.S.txt index 9d50df76..da74d776 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/BIN/X.CPMVRM.S.txt @@ -38,6 +38,7 @@ L.MSG.OVERWRTE .DA MSG.OVERWRTE .FIN L.MSG.OK .DA MSG.OK L.MSG.ERR .DA MSG.ERR +L.MSG.DONE .DA MSG.DONE L.STAT .DA STAT .DA 0 *-------------------------------------- @@ -127,9 +128,15 @@ CS.INIT >SYSCALL GetArgC bcs .99 .FIN -.8 lda (pPs) - ora #S.PS.F.EVENT Now accept events - sta (pPs) +.8 ldy #Count + lda #0 + sta (pData),y + iny + sta (pData),y + +* lda (pPs) +* ora #S.PS.F.EVENT Now accept events +* sta (pPs) clc rts @@ -267,7 +274,14 @@ CS.RUN.LEAVE jsr LeaveSubDir exit this sub dir.... jmp CS.RUN.NEXT -.99 ldy #RC +.99 ldy #Count+1 + >PUSHB (pData),y + dey + >PUSHB (pData),y + >LDYA L.MSG.DONE + >SYSCALL PPrintFYA + + ldy #RC lda (pData),y get global RC in case of bContinue sec .9 rts @@ -344,7 +358,7 @@ CS.RUN.DIR .DO X.COPY.TO.DEST=1 jmp EnterSubDirYA .99 ldy #RC - lda (pData),y get global RC in case of bContnue + lda (pData),y get global RC in case of bContinue sec CS.RUN.DIR.RTS rts *-------------------------------------- @@ -410,7 +424,23 @@ CS.RUN.FILE .DO X.COPY.TO.DEST=1 .12 jsr GetEntry get back current entry corrupted by SLEEP -.2 jsr CS.RUN.CopyStart +.2 .DO X.DELETE.SOURCE=1 mv file, check if srcbase=dstbase + ldy #hSrcBasePath + lda (pData),y + >SYSCALL GetMemPtrA + >PUSHYA + ldy #hDstBasePath + lda (pData),y + >SYSCALL GetMemPtrA + >PUSHYA + >SYSCALL PStrMatch + bcs .3 not same dir, go copy/delete + + jsr CS.RUN.Rename + bra .9 + .FIN + +.3 jsr CS.RUN.CopyStart bcc .4 jsr CS.RUN.CheckErr rts @@ -435,6 +465,21 @@ CS.RUN.FILE .DO X.COPY.TO.DEST=1 lda (pData),y get global RC in case of bContnue sec rts +*-------------------------------------- + .DO X.COPY.TO.DEST=1 + .DO X.DELETE.SOURCE=1 +CS.RUN.Rename ldy #hDstFile + lda (pData),y + >SYSCALL GetMemPtrA + >PUSHYA + + ldy #hSrcBasePath + jsr CS.RUN.GetFilePath + >PUSHYA + >SYSCALL Rename + rts + .FIN + .FIN *-------------------------------------- .DO X.COPY.TO.DEST=1 CS.RUN.CopyStart @@ -560,7 +605,17 @@ CS.RUN.CopyEnd ldy #hSrcFile .FIN *-------------------------------------- CS.RUN.CheckErr bcs .1 - >LDYA L.MSG.OK + ldy #Count + lda (pData),y + inc + sta (pData),y + bne .10 + iny + lda (pData),y + inc + sta (pData),y + +.10 >LDYA L.MSG.OK >SYSCALL PPrintFYA rts @@ -635,3 +690,5 @@ CS.QUIT jsr LeaveSubDir *-------------------------------------- MAN SAVE /A2OSX.SRC/BIN/X.CPMVRM.S +LOAD /A2OSX.SRC/BIN/MV.S +ASM diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index ec485271..ffa82a20 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -293,7 +293,6 @@ SYSMGR.ERRSYN .EQ $CF Syntax Error SYSMGR.ERRENVF .EQ $CE Env is Full SYSMGR.ERRIBIN .EQ $CD Invalid BIN format SYSMGR.ERRFTB .EQ $CC File Too Big Error -SYSMGR.ERRFNF .EQ $CB File Not Found Error *-------------------------------------- * MEM STRUCT *-------------------------------------- diff --git a/INC/IO.I.txt b/INC/IO.I.txt index 0dcfd824..71810f40 100644 --- a/INC/IO.I.txt +++ b/INC/IO.I.txt @@ -59,7 +59,7 @@ SETHIRES .EQ $C057 W *CLRAN0 .EQ $C059 W, Set annunciator-0 output to 1 *SETAN1 .EQ $C05A W, Set annunciator-1 output to 0 *CLRAN1 .EQ $C05B W, Set annunciator-1 output to 1 -ENBVBLIIC .EQ $C05B W, Enable VBL switch (IIc) +*ENBVBLIIC .EQ $C05B W, Enable VBL switch (IIc) *SETAN2 .EQ $C05C W, Set annunciator-2 output to 0 *CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1 *SETAN3 .EQ $C05E W, Set annunciator-3 output to 0 diff --git a/SYS/KERNEL.S.DIR.txt b/SYS/KERNEL.S.DIR.txt index b5711cc3..99260245 100644 --- a/SYS/KERNEL.S.DIR.txt +++ b/SYS/KERNEL.S.DIR.txt @@ -20,7 +20,7 @@ K.OpenDirYA jsr PFT.CheckPathYA >PUSHWI S.NODE.DIR >PUSHBI S.MEM.F.INIT0 jsr K.GetMem - bcs .9 + bcs .99 >STYA ZPPtr1 stx K.ReadDirA.hDir @@ -33,10 +33,6 @@ K.OpenDirYA jsr PFT.CheckPathYA cmp #'/' Root required ? beq .8 Yes, Go for ONLINE Call (S.DIR.PRODOS.REF=0) - lda #SYSMGR.ERRSYN - sec -.9 rts - .7 >MLICALL MLIGETFILEINFO bcs .98 file/dir does not exists....quit lda K.MLI.PARAMS+4 @@ -218,7 +214,7 @@ K.ReadDirA.ROOT ldy #S.NODE.DIR.FC did we already returned something ? tax jmp K.GetMemPtrA *-------------------------------------- -K.ReadDirA.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF +K.ReadDirA.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF >PUSHWI 512 Get a 512 bytes buffer for reading dir... >PUSHBI 0 @@ -232,13 +228,13 @@ K.ReadDirA.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF tya * clc CC from K.GetMem adc #4 Skip 4 bytes linked list - sta ZPPtr2 PTR to Buffer for PASS #1 - sta ZPPtr3 PTR to Buffer for PASS #2 + sta ZPPtr2 PTR to Buffer for PASS #1 + sta ZPPtr3 PTR to Buffer for PASS #2 pla adc #0 - sta ZPPtr2+1 PTR to Buffer for PASS #1 - sta ZPPtr3+1 PTR to Buffer for PASS #2 + sta ZPPtr2+1 PTR to Buffer for PASS #1 + sta ZPPtr3+1 PTR to Buffer for PASS #2 >LDYAI 512 >STYA K.MLI.PARAMS+4 @@ -252,7 +248,7 @@ K.ReadDirA.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF ldy #$1f+3 ldx #3 -.1 lda (ZPPtr2),y Get K.ReadDirA.EL.... From Block +.1 lda (ZPPtr2),y Get K.ReadDirA.EL.... From Block sta K.ReadDirA.EL,x dey dex @@ -297,7 +293,7 @@ K.ReadDirA.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF sta K.ReadDirA.BufSize stz K.ReadDirA.BufSize+1 -K.ReadDirA.DIR1 lda (ZPPtr2) X = EntryCount In This Block +K.ReadDirA.DIR1 lda (ZPPtr2) X = EntryCount In This Block beq .7 Free slot....goto next and #$F0 get storage_type @@ -307,7 +303,7 @@ K.ReadDirA.DIR1 lda (ZPPtr2) X = EntryCount In This Block cmp #$E0 directory header ? beq .2 - lda (ZPPtr2) regular DIR or File, get LEN + lda (ZPPtr2) regular DIR or File, get LEN and #$F compute filename len sec add "#" + S.STAT @@ -531,18 +527,50 @@ K.ReadDirA.ClrStat rts *-------------------------------------- K.ReadDirA.AddFNToBuf - lda (ZPPtr3) + ldy #$1C version/min_version for lowercase bitmap + lda (ZPPtr3),y check bxxxxxxx.xxxxxxxx... + bpl .7 not set, no lowercase bitmap present + + pha + iny + lda (ZPPtr3),y + pha + + lda #$1 + sta .2+1 + + ldy #15 + +.1 pla +.2 bit #$ff + pha + beq .3 + + lda (ZPPtr3),y + ora #$20 convert a-z to A-Z adding from $4x to $6x + sta (ZPPtr3),y + +.3 asl .2+1 + bne .4 + rol .2+1 + pla + +.4 dey + bne .1 + pla + +.7 lda (ZPPtr3) and #$0F get filename len tax jsr K.ReadDirA.AddToBuf ldy #1 -.1 lda (ZPPtr3),y +.8 lda (ZPPtr3),y jsr K.ReadDirA.AddToBuf iny dex - bne .1 + bne .8 rts *-------------------------------------- K.ReadDirA.AddToBuf diff --git a/SYS/KERNEL.S.FILE.txt b/SYS/KERNEL.S.FILE.txt index 9a078e97..dcd82b10 100644 --- a/SYS/KERNEL.S.FILE.txt +++ b/SYS/KERNEL.S.FILE.txt @@ -392,17 +392,41 @@ K.Stat jsr PFT.CheckPathSTK sta (ZPPtr2),y dex bne .3 + + ldy #S.STAT.SIZE + lda #0 + sta (ZPPtr2),y + + iny + + lda K.MLI.PARAMS+S.FILEINFO.BLOCKSUSED + asl + sta (ZPPtr2),y + + iny + + lda K.MLI.PARAMS+S.FILEINFO.BLOCKSUSED+1 + rol + sta (ZPPtr2),y + + iny + + lda #0 + rol + sta (ZPPtr2),y + clc .9 rts *-------------------------------------- K.Stat.SRC .DA #S.FILEINFO.TYPE -* .DA #S.FILEINFO.BLOCKSUSED,#S.FILEINFO.BLOCKSUSED+1 -* .DA # .DA #S.FILEINFO.AUXTYPE,#S.FILEINFO.AUXTYPE+1 + .DA #S.FILEINFO.BLOCKSUSED,#S.FILEINFO.BLOCKSUSED+1 + K.Stat.DST .DA #S.STAT.P.TYPE -* .DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1 -* .DA #S.STAT.SIZE,#S.STAT.SIZE+1,#S.STAT.SIZE+2 .DA #S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1 + .DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1 + .DA #S.STAT.SIZE+1,#S.STAT.SIZE+2 + *-------------------------------------- FILE.SetIOBUF >PUSHWI 1024 get a ProDOS IOBUF >PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index ad14cb0e..108eccd7 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -17,22 +17,22 @@ AUTO 6 * CS : not found *\-------------------------------------- K.FileSearch >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA - >PULLYA Get Search list + >PULLYA Get Search list >SYSCALL ExpandPStrYA Expand it (SYSCALL to BNK1) bcs .99 - stx K.FileSearch.hSrch - >STYA ZPPtr3 ZPPtr2 trashed by K.STAT !!! expanded search list ; + stx .98+1 + >STYA ZPPtr3 ZPPtr2 trashed by K.STAT !!! expanded search list ; stz K.FileSearch.Index -.1 stz KrnBuf256 reset String +.1 stz KrnBuf256 reset String ldx #0 ldy K.FileSearch.Index .2 tya - cmp (ZPPtr3) end of src string ? + cmp (ZPPtr3) end of src string ? beq .3 end of string, try it.... iny lda (ZPPtr3),y @@ -50,7 +50,7 @@ K.FileSearch >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA ldy #0 .4 iny - lda (ZPPtr4),y Append Fiename... + lda (ZPPtr4),y Append Fiename... inx sta KrnBuf256,x tya @@ -64,18 +64,16 @@ K.FileSearch >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA jsr K.STAT bcs .1 Failed...retry next path... - lda K.FileSearch.hSrch Discard Expanded hSrch list - jsr K.FreeMemA + jsr .98 Discard Expanded hSrch list bra K.GetFullPathYA.NewStr -.98 lda K.FileSearch.hSrch Discard Expanded hSrch list +.98 lda #$ff SELF MODIFIED : Discard Expanded hSrch list jsr K.FreeMemA - lda #SYSMGR.ERRFNF + lda #MLI.ERR.FNOTFND sec .99 rts *-------------------------------------- -K.FileSearch.hSrch .BS 1 K.FileSearch.Index .BS 1 */-------------------------------------- * # GetFullPathYA @@ -127,54 +125,61 @@ K.GetFullPathYA.9 * Y,A = File Length * X = hMem of Loaded File *\-------------------------------------- -K.LoadFile jsr K.FOpen - bcs .9 - - sta K.LoadFile.hFile +K.LoadFile lda (pStack) read PTR.LO on top of stack + pha + ldy #1 + lda (pStack),y read PTR.HI on top of stack + pha + >PUSHWI K.S.STAT + pla + ply + >PUSHYA + jsr K.Stat + bcs .10 - ldx #SYS.FSeek.END - jsr K.LoadFile.Seek - bcs .99 - - lda K.LoadFile.hFile - jsr K.FTellA - bcs .99 - >STYA K.LoadFile.Len - phx - plx - bne .98 LEN > 65535 !!??? - - >PUSHYA push len + lda K.S.STAT+S.STAT.SIZE+3 + ora K.S.STAT+S.STAT.SIZE+2 + bne .11 + + >PUSHW K.S.STAT+S.STAT.SIZE push len >PUSHBI 0 jsr K.GetMem - bcs .99 + bcs .10 >STYA K.LoadFile.Mem - stx K.LoadFile.hMem - - ldx #SYS.FSeek.SET - jsr K.LoadFile.Seek - bcs .97 + stx K.LoadFile.hMem + jsr K.FOpen + bcs .9 + sta K.LoadFile.hFile + >PUSHW K.LoadFile.Mem - >PUSHW K.LoadFile.Len + >PUSHW K.S.STAT+S.STAT.SIZE >PUSHB K.LoadFile.hFile jsr K.FRead bcs .97 + + phy + pha Save Bytes read jsr .99 - >LDYA K.LoadFile.Len + pla + ply ldx K.LoadFile.hMem clc .9 rts +.11 lda #SYSMGR.ERRFTB +.10 pha + >POP 6 + pla + sec + rts + .97 pha lda K.LoadFile.hMem jsr K.FreeMemA pla - .HS 2C - -.98 lda #SYSMGR.ERRFTB .99 pha lda K.LoadFile.hFile @@ -183,12 +188,9 @@ K.LoadFile jsr K.FOpen sec rts *-------------------------------------- -K.LoadFile.Seek >PUSHWI 0 - >PUSHWI 0 - txa - >PUSHA - >PUSHB K.LoadFile.hFile - jmp K.FSeek +K.LoadFile.hFile .BS 1 +K.LoadFile.hMem .BS 1 +K.LoadFile.Mem .BS 2 */-------------------------------------- * # SaveFile * ## In: @@ -202,9 +204,9 @@ K.LoadFile.Seek >PUSHWI 0 K.SaveFile jsr K.FOpen bcs .9 - sta K.LoadFile.hFile + sta .90+1 - >PUSHB K.LoadFile.hFile + >PUSHA jsr K.FWrite bcs .99 @@ -213,21 +215,18 @@ K.SaveFile jsr K.FOpen rts .99 pha - lda K.LoadFile.hFile +.90 lda #$ff jsr K.FCloseA pla sec rts -.9 >POP 4 Discard SrcPtr & SrcLen +.9 pha + >POP 4 Discard SrcPtr & SrcLen + pla sec rts -*-------------------------------------- -K.LoadFile.hFile .BS 1 -K.LoadFile.hMem .BS 1 -K.LoadFile.Mem .BS 2 -K.LoadFile.Len .BS 2 */-------------------------------------- * # ChTyp * ## In: diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index 41804eb3..469bec1b 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -52,7 +52,6 @@ A2osX.D1 .PH $D000 .INB /A2OSX.SRC/SYS/KERNEL.S.FILE .INB /A2OSX.SRC/SYS/KERNEL.S.DIR - .INB /A2OSX.SRC/SYS/KERNEL.S.PFT .INB /A2OSX.SRC/SYS/KERNEL.S.BIN .EP A2osX.D1.E .EQ * @@ -77,6 +76,7 @@ A2osX.E0 .PH $E000 .INB /A2OSX.SRC/SYS/KERNEL.S.DAT .INB /A2OSX.SRC/SYS/KERNEL.S.IRQ .INB /A2OSX.SRC/SYS/KERNEL.S.MEM + .INB /A2OSX.SRC/SYS/KERNEL.S.PFT .INB /A2OSX.SRC/SYS/KERNEL.S.CNV .INB /A2OSX.SRC/SYS/KERNEL.S.CHR .INB /A2OSX.SRC/SYS/KERNEL.S.D01 diff --git a/X.ERRORS.S.txt b/X.ERRORS.S.txt index aaebc82c..13799792 100644 --- a/X.ERRORS.S.txt +++ b/X.ERRORS.S.txt @@ -23,7 +23,6 @@ ERR.Codes .DA #MLI.ERR.IO .DA #MLI.ERR.OPEN *-------------------------------------- .DA #SYSMGR.ERRSYN - .DA #SYSMGR.ERRFNF *-------------------------------------- ERR.Count .EQ *-ERR.Codes *-------------------------------------- @@ -45,7 +44,6 @@ ERR.Messages >PSTR "I/O Error" >PSTR "File Already Open" *-------------------------------------- >PSTR "Syntax Error" - >PSTR "Command Not Found" *-------------------------------------- >PSTR "Unknown Error" *--------------------------------------