Compare commits

...

3 Commits

Author SHA1 Message Date
Brian J. Bernstein d69b4e0488 build 2640 for 32MB and 800KB media 2023-11-25 10:11:16 -05:00
burniouf 5ff8654986 ProDOS.FX : bugfixes in dir entries "RESERVED" space (ACL) 2023-11-25 12:51:33 +01:00
burniouf 6f0f9c0a3d EDIT, LS & DU fixes 2023-11-25 09:33:04 +01:00
10 changed files with 74 additions and 48 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -2,11 +2,9 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
FILE.New jsr FILE.Reset FILE.New >LDYA L.MSG.NEWFILE
>LDYA L.MSG.NEWFILE
FILE.RealPath >PUSHYA FILE.NewYA >PUSHYA
>PUSHWZ Allocate >PUSHWZ Allocate
>SYSCALL RealPath >SYSCALL RealPath
bcs .9 bcs .9
@ -14,9 +12,11 @@ FILE.RealPath >PUSHYA
txa txa
>STA.G hFileName >STA.G hFileName
jmp FILE.Reset
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
FILE.Load jsr FILE.RealPath FILE.Load jsr FILE.NewYA
bcs .9 bcs .9
jsr FILE.Reset jsr FILE.Reset

View File

@ -175,6 +175,8 @@ CS.RUN >PUSHW L.MSG.TERMCAP
cmp #E.OOM cmp #E.OOM
beq CS.RUN.RTS beq CS.RUN.RTS
bra .3
.2 jsr FILE.New .2 jsr FILE.New
bcs CS.RUN.RTS bcs CS.RUN.RTS

View File

@ -1,6 +1,6 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
SEL2.PBuf .EQ $0280 prefix buffer SEL2.PBuf .EQ $0280 prefix buffer
SEL2.VBuf .EQ $0F00 volume buffer SEL2.VBuf .EQ $0F00 volume buffer
SEL2.FBuf .EQ $1C00 open file buffer (selector) SEL2.FBuf .EQ $1C00 open file buffer (selector)

View File

@ -992,14 +992,14 @@ XDOS.Create1 jsr XDOS.ZeroGBuf zero out XDOS.GBuf
dey dey
bne .5 bne .5
ldy #$03 index to 'access' parameter ldy #$03 index to ACCESS parameter
lda (ZP.A3L),y lda (ZP.A3L),y
sta XDOS.DE.Access sta XDOS.DE.Access
iny also move 'file identification' iny also move TYPE
lda (ZP.A3L),y lda (ZP.A3L),y
sta XDOS.DE.Type sta XDOS.DE.Type
.6 iny move auxillary identification bytes .6 iny move AUXTYPE
lda (ZP.A3L),y lda (ZP.A3L),y
sta XDOS.DE.AuxType-5,y sta XDOS.DE.AuxType-5,y
cpy #$06 cpy #$06
@ -1016,23 +1016,23 @@ XDOS.Create1 jsr XDOS.ZeroGBuf zero out XDOS.GBuf
lda #$01 usage is always 1 block lda #$01 usage is always 1 block
sta XDOS.DE.BlkUsed sta XDOS.DE.BlkUsed
lda XDOS.DE.DirHBlk place back pointer to header block lda XDOS.DE.DirHBlk place back pointer to header block
sta XDOS.DE.BlkPtr sta XDOS.DE.BlkPtr
lda XDOS.DE.DirHBlk+1 lda XDOS.DE.DirHBlk+1
sta XDOS.DE.BlkPtr+1 sta XDOS.DE.BlkPtr+1
lda XDOS.DE.Filename storage type. lda XDOS.DE.Filename storage type.
and #$E0 is it a directory? and #$E0 is it a directory?
beq cralcblk branch if seed file. beq XDOS.CreateDBLK branch if seed file.
*-------------------------------------- *--------------------------------------
* Create Dir First Block * Create Dir First Block
*-------------------------------------- *--------------------------------------
ldx #$1E move header to data block XDOS.Create2 ldx #$1E move header to data block
cmvheadr lda XDOS.DE.Filename,x .1 lda XDOS.DE.Filename,x
sta XDOS.GBuf+4,x sta XDOS.GBuf+4,x
dex dex
bpl cmvheadr bpl .1
eor #$30 eor #$30
sta XDOS.GBuf+4 make it a directory header mark. sta XDOS.GBuf+4 make it a directory header mark.
@ -1041,34 +1041,41 @@ cmvheadr lda XDOS.DE.Filename,x
ldx #$07 overwrite password area and other ldx #$07 overwrite password area and other
cmvpass lda pass,x header info. .2 lda pass,x header info.
sta XDOS.GBuf+20,x sta XDOS.GBuf+20,x
lda xdosver,x lda xdosver,x
sta XDOS.GBuf+32,x sta XDOS.GBuf+32,x
dex dex
bpl cmvpass bpl .2
.ELSE .ELSE
lda #$75
sta XDOS.GBuf+20
ldx #XDOS.VolHdrDef.Cnt-1 ldx #XDOS.VolHdrDef.Cnt-1
.1 lda XDOS.VolHdrDef,x .2 lda XDOS.VolHdrDef,x
sta XDOS.GBuf+34,x sta XDOS.GBuf+34,x
dex dex
bpl .1 bpl .2
lda #$75
sta XDOS.GBuf+20
ldx #7
.3 stz XDOS.GBuf+20,x
dex
bne .3
.FIN .FIN
ldx #$02 and include info about parent directory ldx #$02 and include info about parent directory
stx XDOS.DE.EOF+1 set file size = 512 stx XDOS.DE.EOF+1 set file size = 512
cmvparnt lda XDOS.DE.DirEBlk,x .4 lda XDOS.DE.DirEBlk,x
sta XDOS.GBuf+39,x sta XDOS.GBuf+39,x
dex dex
bpl cmvparnt bpl .4
lda XDOS.DH.EL lastly, the length of parent's lda XDOS.DH.EL lastly, the length of parent's
sta XDOS.GBuf+42 directory entries. sta XDOS.GBuf+42 directory entries.
@ -1076,8 +1083,8 @@ cmvparnt lda XDOS.DE.DirEBlk,x
.DO LOWERCASE=1 .DO LOWERCASE=1
jsr XDOS.PackGBuf jsr XDOS.PackGBuf
.FIN .FIN
*--------------------------------------
cralcblk jsr XDOS.GetFreeBlk get address of file's data block XDOS.CreateDBLK jsr XDOS.GetFreeBlk get address of file's data block
bcs crerr3 bcs crerr3
sta XDOS.DE.KeyPtr sta XDOS.DE.KeyPtr
@ -1088,11 +1095,11 @@ cralcblk jsr XDOS.GetFreeBlk get address of file's data block
bcs crerr3 bcs crerr3
inc XDOS.DH.FileCnt add 1 to total # of files in this dir inc XDOS.DH.FileCnt add 1 to total # of files in this dir
bne credone bne .1
inc XDOS.DH.FileCnt+1 inc XDOS.DH.FileCnt+1
credone jsr XDOS.DE.Update go revise directories with new file .1 jsr XDOS.DE.Update go revise directories with new file
bcs crerr3 bcs crerr3
jmp XDOS.FlushBM lastly, update volume bitmap jmp XDOS.FlushBM lastly, update volume bitmap

View File

@ -375,7 +375,7 @@ XDOS.GetDH ldx #10 move this directory info
.DO ACL=1 .DO ACL=1
ldx #7 ldx #7
lda XDOS.GBuf+$14 lda XDOS.GBuf+20
cmp #$57 cmp #$57
bne .20 bne .20

View File

@ -142,25 +142,41 @@ X.InitSrcDirPtr1
lda (ZPPtr2),y lda (ZPPtr2),y
beq .8 we have '/' beq .8 we have '/'
jsr X.Init.StatBuf jsr X.Init.Stat
bcs .1 File/DIR does not exists, go extract pattern bcs .1 File/DIR does not exists, go extract pattern
.DO X.ENTER.SUBDIR=1 .DO X.ENTER.SUBDIR=1
>LDA.G STATBUF+S.STAT.MODE+1 >LDA.G STATBUF+S.STAT.MODE+1
and #$F0 and #$F0
cmp /S.STAT.MODE.DIR cmp /S.STAT.MODE.DIR
beq .8 TYPE=DIR, do not extract pattern bne .7 Not a dir....
jsr X.GetPtr2Len
dey
lda #'/'
cmp (ZPPtr2),y
beq .8
iny
sta (ZPPtr2),y
iny
lda #0
sta (ZPPtr2),y
bra .8 TYPE=DIR, do not extract pattern
.ELSE
bra .7
.FIN .FIN
bra .4
.1 cmp #MLI.E.INVPATH .1 cmp #MLI.E.INVPATH
beq .11 bne .98
sec jsr X.GetPtr2Len TYPE is not DIR, check if wc
rts
.11 jsr X.GetPtr2Len TYPE is not DIR, check if wc
dey dey
@ -168,22 +184,23 @@ X.InitSrcDirPtr1
.2 lda (ZPPtr2),y search backward for a / .2 lda (ZPPtr2),y search backward for a /
cmp #'/' cmp #'/'
beq .3 beq .6
cmp #'?' Test if some wildcard chars.... cmp #'?' Test if some wildcard chars....
beq .21 beq .3
cmp #'*' cmp #'*'
bne .22 bne .4
.21 inx inc wildcard count .3 inx inc wildcard count
.22 dey
.4 dey
bne .2 bne .2
.3 txa .6 txa
beq .98 no wc, file not found.... beq .97 no wc, file not found....
.4 jsr X.InitSplitBuf .7 jsr X.InitSplitBuf
bcs .99 bcs .99
>STA.G hInclude >STA.G hInclude
@ -202,8 +219,8 @@ X.InitSrcDirPtr1
rts rts
.98 lda #MLI.E.INVPATH .97 lda #MLI.E.INVPATH
sec .98 sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
.DO X.RESET.SRC.DIR=1 .DO X.RESET.SRC.DIR=1
@ -239,7 +256,7 @@ X.InitDstDirPtr1
>STA.G hDstBasePath >STA.G hDstBasePath
jsr X.Init.StatBuf jsr X.Init.Stat
bcs .1 File/DIR does not exists, go extract DstFileName bcs .1 File/DIR does not exists, go extract DstFileName
>LDA.G STATBUF+S.STAT.MODE+1 >LDA.G STATBUF+S.STAT.MODE+1
@ -287,7 +304,7 @@ X.InitGetBuf >LDYAI 256
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
X.Init.StatBuf >PUSHW ZPPtr2 X.Init.Stat >PUSHW ZPPtr2
>PUSHEA.G STATBUF >PUSHEA.G STATBUF
>SYSCALL Stat >SYSCALL Stat
rts rts