Kernel version 0.9 : Lowercase support, bugfix in CP/MV/RV

This commit is contained in:
Rémy GIBERT 2017-06-21 17:46:43 +02:00
parent 4d077d5416
commit 4b4dedd6d6
14 changed files with 197 additions and 86 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -29,6 +29,7 @@ MSG.FILE >CSTR "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
*--------------------------------------

View File

@ -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
*--------------------------------------

View File

@ -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
*--------------------------------------

View File

@ -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

View File

@ -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
*--------------------------------------

View File

@ -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

View File

@ -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
@ -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

View File

@ -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

View File

@ -21,7 +21,7 @@ K.FileSearch >PULLW ZPPtr4 ZPPtr1 trashed by ExpandPStrYA
>SYSCALL ExpandPStrYA Expand it (SYSCALL to BNK1)
bcs .99
stx K.FileSearch.hSrch
stx .98+1
>STYA ZPPtr3 ZPPtr2 trashed by K.STAT !!! expanded search list ;
stz K.FileSearch.Index
@ -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
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
sta K.LoadFile.hFile
lda K.S.STAT+S.STAT.SIZE+3
ora K.S.STAT+S.STAT.SIZE+2
bne .11
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
>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
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:

View File

@ -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

View File

@ -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"
*--------------------------------------