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
.LIST OFF
*--------------------------------------
FILE.New jsr FILE.Reset
>LDYA L.MSG.NEWFILE
FILE.New >LDYA L.MSG.NEWFILE
FILE.RealPath >PUSHYA
FILE.NewYA >PUSHYA
>PUSHWZ Allocate
>SYSCALL RealPath
bcs .9
@ -14,9 +12,11 @@ FILE.RealPath >PUSHYA
txa
>STA.G hFileName
jmp FILE.Reset
.9 rts
*--------------------------------------
FILE.Load jsr FILE.RealPath
FILE.Load jsr FILE.NewYA
bcs .9
jsr FILE.Reset

View File

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

View File

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

View File

@ -992,14 +992,14 @@ XDOS.Create1 jsr XDOS.ZeroGBuf zero out XDOS.GBuf
dey
bne .5
ldy #$03 index to 'access' parameter
ldy #$03 index to ACCESS parameter
lda (ZP.A3L),y
sta XDOS.DE.Access
iny also move 'file identification'
iny also move TYPE
lda (ZP.A3L),y
sta XDOS.DE.Type
.6 iny move auxillary identification bytes
.6 iny move AUXTYPE
lda (ZP.A3L),y
sta XDOS.DE.AuxType-5,y
cpy #$06
@ -1016,23 +1016,23 @@ XDOS.Create1 jsr XDOS.ZeroGBuf zero out XDOS.GBuf
lda #$01 usage is always 1 block
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
lda XDOS.DE.DirHBlk+1
sta XDOS.DE.BlkPtr+1
lda XDOS.DE.Filename storage type.
and #$E0 is it a directory?
beq cralcblk branch if seed file.
beq XDOS.CreateDBLK branch if seed file.
*--------------------------------------
* 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
dex
bpl cmvheadr
bpl .1
eor #$30
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
cmvpass lda pass,x header info.
.2 lda pass,x header info.
sta XDOS.GBuf+20,x
lda xdosver,x
sta XDOS.GBuf+32,x
dex
bpl cmvpass
bpl .2
.ELSE
lda #$75
sta XDOS.GBuf+20
ldx #XDOS.VolHdrDef.Cnt-1
.1 lda XDOS.VolHdrDef,x
.2 lda XDOS.VolHdrDef,x
sta XDOS.GBuf+34,x
dex
bpl .1
bpl .2
lda #$75
sta XDOS.GBuf+20
ldx #7
.3 stz XDOS.GBuf+20,x
dex
bne .3
.FIN
ldx #$02 and include info about parent directory
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
dex
bpl cmvparnt
bpl .4
lda XDOS.DH.EL lastly, the length of parent's
sta XDOS.GBuf+42 directory entries.
@ -1076,8 +1083,8 @@ cmvparnt lda XDOS.DE.DirEBlk,x
.DO LOWERCASE=1
jsr XDOS.PackGBuf
.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
sta XDOS.DE.KeyPtr
@ -1088,11 +1095,11 @@ cralcblk jsr XDOS.GetFreeBlk get address of file's data block
bcs crerr3
inc XDOS.DH.FileCnt add 1 to total # of files in this dir
bne credone
bne .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
jmp XDOS.FlushBM lastly, update volume bitmap

View File

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

View File

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