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
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