ProDOS.FX : bugfixes in dir entries "RESERVED" space (ACL)

This commit is contained in:
burniouf 2023-11-25 12:51:33 +01:00
parent 6f0f9c0a3d
commit 5ff8654986
5 changed files with 29 additions and 22 deletions

Binary file not shown.

Binary file not shown.

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