Kernel version 0.9 : CP/MV/RM Migrated, now Debug

This commit is contained in:
Rémy GIBERT 2017-02-22 17:32:02 +01:00
parent 7bfae9c0b0
commit f818be145b
8 changed files with 142 additions and 390 deletions

Binary file not shown.

Binary file not shown.

View File

@ -16,7 +16,7 @@ X.MAX.RECURSE .EQ 8
X.COPY.TO.DEST .EQ 1
X.DELETE.SOURCE .EQ 0
*--------------------------------------
.INB BIN/X.CPMV.S
.INB BIN/X.CPMVRM.S
*--------------------------------------
.INB BIN/X.FILEENUM.S
*--------------------------------------
@ -49,6 +49,7 @@ hSrcFile .BS 1
hDstFile .BS 1
bPause .BS 1
bCopy .BS 1
hToDelete .BS 1
CopyRC .BS 1
bContinue .BS 1
bRecurse .BS 1

View File

@ -10,12 +10,13 @@ AUTO 6
*--------------------------------------
.INB /A2OSX.DEV/INC/MACROS.I
.INB /A2OSX.DEV/INC/A2OSX.I
.INB /A2OSX.DEV/INC/MLI.ERR.I
*--------------------------------------
X.MAX.RECURSE .EQ 8
X.DST.BASE.PATH .EQ 1
X.COPY.TO.DEST .EQ 1
X.DELETE.SOURCE .EQ 1
*--------------------------------------
.INB BIN/X.CPMV.S
.INB BIN/X.CPMVRM.S
*--------------------------------------
.INB BIN/X.FILEENUM.S
*--------------------------------------
@ -25,7 +26,7 @@ OptionList >PSTR "CRY"
OptionVars .DA #bContinue,#bRecurse,#bNoConfirm
*--------------------------------------
MSG.USAGE >CSTR "Usage : MV [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 "MV Dir :%S to %S..."
MSG.DIR >CSTR "MV Dir :%S%S to %S..."
MSG.FILE >CSTR "MV File:%S%S to %S..."
MSG.OK >CSTR "[OK]\n"
MSG.ERR >CSTR "[%h]\n"
@ -44,7 +45,12 @@ oDIRENTs .BS X.MAX.RECURSE*2
hSrcBasePath .BS 1
hDstBasePath .BS 1
hFilter .BS 1
hSrcFile .BS 1
hDstFile .BS 1
bPause .BS 1
bCopy .BS 1
hToDelete .BS 1
CopyRC .BS 1
bContinue .BS 1
bRecurse .BS 1
bNoConfirm .BS 1

View File

@ -10,318 +10,20 @@ AUTO 6
*--------------------------------------
.INB /A2OSX.DEV/INC/MACROS.I
.INB /A2OSX.DEV/INC/A2OSX.I
.INB /A2OSX.DEV/INC/MLI.ERR.I
*--------------------------------------
X.MAX.RECURSE .EQ 8
X.COPY.TO.DEST .EQ 0
X.DELETE.SOURCE .EQ 0
X.DELETE.SOURCE .EQ 1
*--------------------------------------
ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2
*--------------------------------------
* 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 Length To Relocate
.DA DS.END-DS.START Data Segment to Allocate
.DA 0
.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
L.STAT .DA STAT
.DA 0
*--------------------------------------
CS.INIT >SYSCALL GetArgC
sta ArgCount
cmp #1
beq .99
.1 dec ArgCount
beq .5
lda ArgCount
>SYSCALL GetArgA
>STYA ZPPtr1
lda (ZPPtr1)
cmp #2
bne .4
ldy #1
lda (ZPPtr1),y
cmp #'-'
bne .4
iny
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
lda #SYSMGR.ERRSYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 >LDYA ZPPtr1
jsr InitSrcDirPatYA
bcs .9
bra .1 scan for any other args
.5 ldy #index
lda (pData),y
beq .99
.8 lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
clc
rts
.99 >LDYA L.MSG.USAGE
>SYSCALL CPrintFYA
lda #SYSMGR.ERRSYN
sec
.9 rts
*--------------------------------------
CS.RUN ldy #bCANCEL
lda (pData),y
bmi .99
ldy #bSTOP
lda (pData),y
bmi .8
jsr GetNextEntry
bcs .9
ldy #hFilter
lda (pData),y
beq .4 No filter....
>SYSCALL GetMemPtrA
>PUSHYA
>PUSHW ZPPtr1
>SYSCALL PStrMatch
bcs .8 no match, skip....
.4 ldy #S.STAT.P.DRIVE
lda (ZPPtr2),y ProDOS Device ?
bne .5
ldy #S.STAT.P.TYPE
lda (ZPPtr2),y
cmp #$0F Directory ?
bne .6
jmp CS.RUN.DIR
.5 jmp CS.RUN.DEV
.6 jmp CS.RUN.FILE
.9 jsr LeaveSubDir
bcs .99
ldy #bRecurse
lda (pData),y
bpl .8
ldy #hSrcBasePath
lda (pData),y
>SYSCALL GetMemPtrA
>PUSHYA
>LDYA L.MSG.DIR
>SYSCALL CPrintFYA
jsr CS.RUN.DELETE.DIR
jsr CS.RUN.PRINT.RC
jsr BasePath..
.8 clc
rts
.99 lda #0
sec
rts
*--------------------------------------
CS.RUN.DEV >PUSHW ZPPtr1
>LDYA L.MSG.FILE
>SYSCALL CPrintFYA
bcs .9
ldy #bRecurse
lda (pData),y
bpl .8
jsr CS.RUN.PRINT.FILE
bcs .9
lda #0
clc
jsr CS.RUN.PRINT.RC
>LDYA ZPPtr1
jmp EnterSubDirYA
.8 clc
.9 rts
*--------------------------------------
CS.RUN.DIR ldy #1
lda (ZPPtr1),y
cmp #'.'
beq .8
ldy #bRecurse
lda (pData),y
bpl CS.RUN.FILE
>LDYA ZPPtr1
jmp EnterSubDirYA
.8 clc
.9 rts
*--------------------------------------
CS.RUN.FILE jsr CS.RUN.PRINT.FILE
bcs .9
jsr CS.RUN.DELETE.FILE
jsr CS.RUN.PRINT.RC
.9 rts
*--------------------------------------
CS.RUN.PRINT.FILE
>PUSHW ZPPtr1
ldy #hSrcBasePath
lda (pData),y
>SYSCALL GetMemPtrA
>PUSHYA
>LDYA L.MSG.FILE
>SYSCALL CPrintFYA
rts
*--------------------------------------
CS.RUN.DELETE.DIR
jsr CS.RUN.GET.BASE.PATH
bra CS.RUN.DELETE
*--------------------------------------
CS.RUN.DELETE.FILE
jsr CS.RUN.GET.BASE.PATH
>PUSHW ZPPtr1
>PUSHWI UsrBuf256
>SYSCALL PStrCat
CS.RUN.DELETE >LDYAI UsrBuf256
>SYSCALL RemoveYA
rts
*--------------------------------------
CS.RUN.GET.BASE.PATH
ldy #hSrcBasePath
lda (pData),y
>SYSCALL GetMemPtrA
>PUSHYA
>PUSHWI UsrBuf256
>SYSCALL PStrCpy
rts
*--------------------------------------
CS.RUN.PRINT.RC pha
php
bcs .1
>LDYA L.MSG.OK
bra .8
.1 >PUSHA
>LDYA L.MSG.ERR
.8 >SYSCALL CPrintFYA
bcs .9
plp
ldy #bContinue
lda (pData),y
eor #$80
asl
pla
rts
.9 plx
plx
rts
*--------------------------------------
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
lda (pEvent),y
ldy #S.PS.hStdIn
cmp (pPs),y
bne .9
lda (pEvent)
and #S.EVT.F.KEY is it a KEY event?
beq .9
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
lda (pEvent),y
bne .9
ldy #S.EVT.DATALO
lda (pEvent),y
cmp #$03 Ctrl-C
bne .1
lda #$FF
ldy #bCANCEL
sta (pData),y
bra .8
.1 cmp #$13 Ctrl-S
bne .8
ldy #bSTOP
lda (pData),y
eor #$FF
sta (pData),y
.8 clc
rts
.9 sec
rts
*--------------------------------------
CS.QUIT jsr LeaveSubDir
bcc CS.QUIT
ldy #hFilter
lda (pData),y
beq .3
>SYSCALL FreeMemA
.3 clc
rts
.INB BIN/X.CPMVRM.S
*--------------------------------------
.INB BIN/X.FILEENUM.S
*--------------------------------------
CS.END
*--------------------------------------
OptionList >PSTR "CR"
OptionVars .DA #bContinue,#bRecurse
OptionList >PSTR "CRY"
OptionVars .DA #bContinue,#bRecurse,#bNoConfirm
*--------------------------------------
MSG.USAGE >CSTR "Usage : RM [File/Dir, *,? wildcards allowed]\n -C : Continue on error\n -R : Recurse subdirectories\n"
MSG.DIR >CSTR "RM Dir :%S..."
@ -331,6 +33,7 @@ MSG.ERR >CSTR "[%h]\n"
*--------------------------------------
STAT .BS S.STAT
ArgCount .BS 1
ArgIndex .BS 1
*--------------------------------------
.DUMMY
.OR 0
@ -340,11 +43,17 @@ hDIRs .BS X.MAX.RECURSE
hDIRENTs .BS X.MAX.RECURSE
oDIRENTs .BS X.MAX.RECURSE*2
hSrcBasePath .BS 1
hDstBasePath .BS 1
hFilter .BS 1
bCANCEL .BS 1
bSTOP .BS 1
hSrcFile .BS 1
hDstFile .BS 1
bPause .BS 1
bCopy .BS 1
hToDelete .BS 1
CopyRC .BS 1
bContinue .BS 1
bRecurse .BS 1
bNoConfirm .BS 1
DS.END
.ED
*--------------------------------------

View File

@ -39,7 +39,7 @@ L.STAT .DA STAT
CS.INIT >SYSCALL GetArgC
sta ArgCount
cmp #1
beq .99
beq .99
stz ArgIndex
@ -83,13 +83,21 @@ CS.INIT >SYSCALL GetArgC
.4 ldy #index
lda (pData),y
*--------------------------------------
.DO X.COPY.TO.DEST=1
*--------------------------------------
bne .5 Already have a Src dir...
.ELSE
bne .99
.FIN
*--------------------------------------
>LDYA ZPPtr1
jsr InitSrcDirYA
bcc .1 success, scan for any other args
rts
*--------------------------------------
.DO X.COPY.TO.DEST=1
*--------------------------------------
.5 ldy #hDstBasePath
lda (pData),y
bne .99 we already have a second arg....error!
@ -98,11 +106,14 @@ CS.INIT >SYSCALL GetArgC
jsr InitDstDirYA
bcc .1 success, scan for any other args
rts
.FIN
*--------------------------------------
.7 ldy #index processed all args
lda (pData),y
beq .99 , no src ? ERROR
*--------------------------------------
.DO X.COPY.TO.DEST=1
*--------------------------------------
ldy #hDstBasePath
lda (pData),y
bne .8 we also have a Dst folder
@ -112,7 +123,8 @@ CS.INIT >SYSCALL GetArgC
>SYSCALL GetMemPtrA
jsr InitDstDirYA
bcs .99
.FIN
*--------------------------------------
.8 lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
@ -121,28 +133,42 @@ CS.INIT >SYSCALL GetArgC
rts
*--------------------------------------
CS.RUN >SYSCALL GetC
bcs .1 no char
bcs .11 no char
cmp #$03 Ctrl-C
beq .99 Abort....
bne .10
sec
rts Abort....
cmp #$13 Ctrl-S
bne .1
.10 cmp #$13 Ctrl-S
bne .11
ldy #bPause
lda (pData),y
eor #$ff
sta (pData),y
bne .8
.11 ldy #bPause
lda (pData),y
bmi .8
*--------------------------------------
.1 .DO X.COPY.TO.DEST=1
*--------------------------------------
ldy #bCopy
lda (pData),y
bpl .2
jmp CS.RUN.Copy
.FIN
.2 jsr GetNextEntry Ptr1=NAME, Ptr2=STAT
*--------------------------------------
.2 .DO X.DELETE.SOURCE
*--------------------------------------
ldy #hToDelete
lda (pData),y
beq .3
jmp CS.RUN.Delete
.FIN
*--------------------------------------
.3 jsr GetNextEntry Ptr1=NAME, Ptr2=STAT
bcs .9
ldy #hFilter
@ -175,14 +201,17 @@ CS.RUN >SYSCALL GetC
ldy #bRecurse
lda (pData),y
bpl .8
bpl .8
*--------------------------------------
.DO X.DELETE.SOURCE=1
jsr CS.RUN.DELETE.DIR
jsr CS.RUN.PRINT.RC
*--------------------------------------
ldy #hSrcBasePath
jsr CS.RUN.GetBasePath
>SYSCALL RemoveYA
jsr CS.RUN.CheckErr
bcs .99
.FIN
*--------------------------------------
jsr BasePath..
.8 clc
@ -206,7 +235,7 @@ CS.RUN.DEV >PUSHW ZPPtr1
lda #0
clc
jsr CS.RUN.PrintErr
jsr CS.RUN.CheckErr
>LDYA ZPPtr1
jmp EnterSubDirYA
@ -224,41 +253,48 @@ CS.RUN.DIR ldy #bRecurse
beq .8
jsr CS.RUN.PrintDir
bcs .9
bcs .9
*--------------------------------------
.DO X.COPY.TO.DEST=1
*--------------------------------------
ldy #hDstBasePath
jsr CS.RUN.GetFilePath
>LDYAI UsrBuf256
>SYSCALL MKDirYA
jsr CS.RUN.PrintErr
bcc .1
cmp #MLI.ERR.DUPFILE
beq .1
jsr CS.RUN.CheckErr
.FIN
*--------------------------------------
.1 >LDYA ZPPtr1
jmp EnterSubDirYA
.8 clc
rts
.9 rts
*--------------------------------------
CS.RUN.FILE jsr CS.RUN.PrintFile
bcs .9
*--------------------------------------
.DO X.COPY.TO.DEST=1
*--------------------------------------
jsr CS.RUN.CopyStart
bcs .9
rts
* .DO X.DELETE.SOURCE=1
* jsr CS.RUN.DelFile
* bcs .9
* .FIN
.FIN
*--------------------------------------
.DO X.DELETE.SOURCE=1
*--------------------------------------
ldy #hSrcBasePath
jsr CS.RUN.GetFilePath
>LDYAI UsrBuf256
>SYSCALL NewPStrYA
bcs .9
txa
ldy #hToDelete
sta (pData),y
.9 jsr CS.RUN.PrintErr
.FIN
*--------------------------------------
.9 jsr CS.RUN.CheckErr
rts
*--------------------------------------
CS.RUN.PrintDir ldy #hDstBasePath
@ -329,7 +365,6 @@ CS.RUN.CopyStart
>SYSCALL FOpen
bcc .1
>DEBUG
pha
ldy #hSrcFile
lda (pData),y
@ -390,64 +425,67 @@ CS.RUN.Copy stz .90+1
beq CS.RUN.CopyEnd
>SYSCALL FreeMemA
*--------------------------------------
CS.RUN.CopyEnd ldy #hDstFile
lda (pData),y
>SYSCALL FCloseA
ldy #hSrcFile
CS.RUN.CopyEnd ldy #hSrcFile
lda (pData),y
>SYSCALL FCloseA
bcc .1
ldy #bCopy
jsr CS.RUN.CheckErr
.1 ldy #hDstFile
lda (pData),y
>SYSCALL FCloseA
bcc .2
jsr CS.RUN.CheckErr
.2 ldy #bCopy
lda #$0
sta (pData),y
clc
ldy #CopyRC
lda (pData),y
beq CS.RUN.PrintErr
beq CS.RUN.CheckErr
sec
jmp CS.RUN.CheckErr
*--------------------------------------
.FIN
*--------------------------------------
CS.RUN.PrintErr pha
php
bcs .1
>LDYA L.MSG.OK
bra .8
.1 >PUSHA
>LDYA L.MSG.ERR
.8 >SYSCALL CPrintFYA
bcs .9
plp
bcc .81
ldy #bContinue
lda (pData),y
eor #$80
asl
.81 pla
rts
.9 plx
plx
rts
*--------------------------------------
.DO X.DELETE.SOURCE=1
*--------------------------------------
CS.RUN.DelDir ldy #hSrcBasePath
jsr CS.RUN.GetBasePath
CS.RUN.Delete pha
lda #0
sta (pData),y
pla
>SYSCALL GetMemPtrA
>SYSCALL RemoveYA
rts
*--------------------------------------
CS.RUN.DelFile ldy #hSrcBasePath
jsr CS.RUN.GetFilePath
>SYSCALL RemoveYA
rts
jmp CS.RUN.CheckErr
*--------------------------------------
.FIN
*--------------------------------------
CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>SYSCALL CPrintFYA
rts
.1 sta .2+1
>PUSHA
>LDYA L.MSG.ERR
>SYSCALL CPrintFYA
bcs .9
ldy #bContinue
lda (pData),y
bmi .9 CC
.2 lda #$ff
sec
rts
.9 rts
*--------------------------------------
CS.RUN.GetFilePath
jsr CS.RUN.GetBasePath
@ -479,6 +517,6 @@ CS.QUIT jsr LeaveSubDir
rts
*--------------------------------------
MAN
SAVE BIN/X.CPMV.S
SAVE BIN/X.CPMVRM.S
LOAD BIN/CP.S
ASM

View File

@ -137,12 +137,12 @@ note : '$VAR' does NOT expand Variable
| LS | Working | -A : Do Not Print . & .. | 0.9 |
| | | -L : long listing with size/date... | |
| | | -R : Recurse subdirectories | |
| RM | Working | -C : Continue On Error | 0.8 |
| RM | Working | -C : Continue On Error | 0.9 |
| | | -R : Recurse subdirectories | |
| CP | In Progress | -C : Continue On Error | 0.8 |
| CP | In Progress | -C : Continue On Error | 0.9 |
| | | -R : Recurse subdirectories | |
| | | -Y : Dont't Prompt For Override | |
| MV | In Progress | -C : Continue On Error | 0.8 |
| MV | In Progress | -C : Continue On Error | 0.9 |
| | | -R : Recurse subdirectories | |
| | | -Y : Dont't Prompt For Override | |
| CAT | Working | -A : Show All non printable caracters | 0.9 |

View File

@ -46,8 +46,6 @@ K.FOpen jsr PFT.CheckPathSTK
lda #S.FILEINFO.STORETYPE.STD
sta MLICALL.PARAMS+7
* jsr DATETIME
ldx #3
.1 lda DATELO,x
sta MLICALL.PARAMS+8,x