Kernel version 0.8 : ISSUE#2, removed .EXT in LS, added L.CMD in BIN/ as an alias for LS -L, Added -R switch for recursive DIR listing

This commit is contained in:
Rémy GIBERT 2016-10-26 22:41:54 +02:00
parent 5181e60818
commit 2fd44770d2

View File

@ -37,6 +37,7 @@ CS.START cld
.DA CS.QUIT .DA CS.QUIT
L.MSG.DEV .DA MSG.DEV L.MSG.DEV .DA MSG.DEV
L.MSG.DIR .DA MSG.DIR L.MSG.DIR .DA MSG.DIR
L.MSG.ENTER .DA MSG.ENTER
L.MSG.DIREXT .DA MSG.DIREXT L.MSG.DIREXT .DA MSG.DIREXT
L.MSG.FILE .DA MSG.FILE L.MSG.FILE .DA MSG.FILE
L.MSG.FILEEXT .DA MSG.FILEEXT L.MSG.FILEEXT .DA MSG.FILEEXT
@ -91,7 +92,7 @@ CS.INIT >SYSCALL GetArgC
bra .1 scan for any other args bra .1 scan for any other args
.5 ldy #hDIRs .5 ldy #index
lda (pData),y lda (pData),y
bne .8 bne .8
@ -110,46 +111,15 @@ CS.INIT >SYSCALL GetArgC
*-------------------------------------- *--------------------------------------
CS.RUN ldy #bCANCEL CS.RUN ldy #bCANCEL
lda (pData),y lda (pData),y
beq .1 bmi .99
sec
rts
.1 ldy #bSTOP ldy #bSTOP
lda (pData),y lda (pData),y
beq .2 bmi .8
clc
rts
.2 ldy #hDIRs jsr GetNextEntry
lda (pData),y bcs .9
tay
lda (pData),y
>SYSCALL READDIRA
bcc .20
ldy #bLong
lda (pData),y
bmi .89
ldy #ColCount
lda (pData),y
beq .89
lda #13
>SYSCALL COutA
.89 lda #0
sec
rts
.20 phx Save hDIRENT
>STYA ZPPtr1
.3 lda (ZPPtr1)
beq .8 No more entry..exit
lda ZPPtr1 set Ptr2=Ptr1+LEN-> S.STAT lda ZPPtr1 set Ptr2=Ptr1+LEN-> S.STAT
sec sec
adc (ZPPtr1) adc (ZPPtr1)
@ -166,39 +136,41 @@ CS.RUN ldy #bCANCEL
>PUSHYA >PUSHYA
>PUSHW ZPPtr1 >PUSHW ZPPtr1
>SYSCALL PStrMatch >SYSCALL PStrMatch
bcs .7 no match, skip.... bcs .8 no match, skip....
.4 ldy #S.STAT.PRODOS.DRIVE .4 ldy #S.STAT.PRODOS.DRIVE
lda (ZPPtr2),y ProDOS Device ? lda (ZPPtr2),y ProDOS Device ?
beq .5 bne .5
jsr CS.RUN.DEV ldy #S.STAT.PRODOS.TYPE
bra .7
.5 ldy #S.STAT.PRODOS.TYPE
lda (ZPPtr2),y lda (ZPPtr2),y
cmp #$0F Directory ? cmp #$0F Directory ?
bne .6 bne .6
jsr CS.RUN.DIR jmp CS.RUN.DIR
bra .7 .5 jmp CS.RUN.DEV
.6 jmp CS.RUN.FILE
.6 jsr CS.RUN.FILE .9 ldy #bLong
lda (pData),y
bmi .91
ldy #ColCount
lda (pData),y
beq .91
.7 lda ZPPtr2 lda #13
clc >SYSCALL COutA
adc #S.STAT
sta ZPPtr1 .91 jsr LeaveSubDir
lda ZPPtr2+1 bcs .99
adc #0 .8 clc
sta ZPPtr1+1
bra .3
.8 pla Discard hDIRENT
>SYSCALL FreeMemA
clc
rts rts
.99 lda #0
sec
rts
*-------------------------------------- *--------------------------------------
CS.RUN.DEV ldy #S.STAT.PRODOS.DEVBLOCKS+1 CS.RUN.DEV ldy #S.STAT.PRODOS.DEVBLOCKS+1
>PUSHB (ZPPtr2),y >PUSHB (ZPPtr2),y
@ -221,11 +193,12 @@ CS.RUN.DEV ldy #S.STAT.PRODOS.DEVBLOCKS+1
*-------------------------------------- *--------------------------------------
CS.RUN.DIR ldy #bLong CS.RUN.DIR ldy #bLong
lda (pData),y lda (pData),y
bmi .8 bmi .4
>PUSHW ZPPtr1 >PUSHW ZPPtr1
>LDYA L.MSG.DIR >LDYA L.MSG.DIR
>SYSCALL PrintFYA >SYSCALL PrintFYA
bcs .9
lda #80/MAX.COL-2 lda #80/MAX.COL-2
sec sec
@ -245,15 +218,16 @@ CS.RUN.DIR ldy #bLong
inc inc
sta (pData),y sta (pData),y
cmp #MAX.COL cmp #MAX.COL
bne .7 bne .5
lda #0 lda #0
sta (pData),y sta (pData),y
lda #13 lda #13
>SYSCALL COutA >SYSCALL COutA
.7 rts bcc .5
rts
.8 jsr CS.RUN.PUSHEXTRA .4 jsr CS.RUN.PUSHEXTRA
ldy #S.STAT.MODE+1 ldy #S.STAT.MODE+1
lda (ZPPtr2),y lda (ZPPtr2),y
@ -265,18 +239,27 @@ CS.RUN.DIR ldy #bLong
>PUSHW ZPPtr1 >PUSHW ZPPtr1
>LDYA L.MSG.DIREXT >LDYA L.MSG.DIREXT
>SYSCALL PrintFYA >SYSCALL PrintFYA
bcs .9
rts .5 ldy #bRecurse
lda (pData),y
bpl .8
ldy #1
lda (ZPPtr1),y
cmp #'.'
beq .8
>LDYA ZPPtr1
jmp EnterSubDirYA
.8 clc
.9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.FILE ldy #bLong CS.RUN.FILE ldy #bLong
lda (pData),y lda (pData),y
bmi .8 bmi .8
ldy #S.STAT.PRODOS.TYPE
lda (ZPPtr2),y
jsr FileType2PSTR
>PUSHYA Type
>PUSHW ZPPtr1 >PUSHW ZPPtr1
>LDYA L.MSG.FILE >LDYA L.MSG.FILE
>SYSCALL PrintFYA >SYSCALL PrintFYA
@ -294,20 +277,9 @@ CS.RUN.FILE ldy #bLong
>SYSCALL COutA >SYSCALL COutA
rts rts
.7 lda #80/MAX.COL-5 .7 lda #' '
sec
sbc (ZPPtr1)
beq .71
tax
.70 lda #' '
phx
>SYSCALL COutA >SYSCALL COutA
plx rts
dex
bne .70
.71 rts
.8 jsr CS.RUN.PUSHEXTRA .8 jsr CS.RUN.PUSHEXTRA
@ -461,8 +433,9 @@ OptionVars .DA #bLong,bRecurse
*-------------------------------------- *--------------------------------------
MSG.DEV >CSTR "%15S S%d,D%d Blocks Used:%5D,Total:%5D\n" MSG.DEV >CSTR "%15S S%d,D%d Blocks Used:%5D,Total:%5D\n"
MSG.DIR >CSTR "%S/" MSG.DIR >CSTR "%S/"
MSG.ENTER >CSTR "\nDirectory:%S...\n"
MSG.DIREXT >CSTR "%16S <dir> %a %S %S\n" MSG.DIREXT >CSTR "%16S <dir> %a %S %S\n"
MSG.FILE >CSTR "%S.%S" MSG.FILE >CSTR "%18S"
MSG.FILEEXT >CSTR "%15S %S $%H %a %10u %S %S\n" MSG.FILEEXT >CSTR "%15S %S $%H %a %10u %S %S\n"
*-------------------------------------- *--------------------------------------
PRODOS.FT.HEX .HS 0406FAFCFDE2FF PRODOS.FT.HEX .HS 0406FAFCFDE2FF
@ -484,7 +457,10 @@ ArgCount .BS 1
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
hDIRs .BS MAX.RECURSE+1 Index .BS 1
hDIRs .BS MAX.RECURSE
hDIRENTs .BS MAX.RECURSE
oDIRENTs .BS MAX.RECURSE*2
hBasePath .BS 1 hBasePath .BS 1
hFilter .BS 1 hFilter .BS 1
bSTOP .BS 1 bSTOP .BS 1