mirror of https://github.com/A2osX/A2osX.git
ProDOS.FX : bugfixes in dir entries "RESERVED" space (ACL)
This commit is contained in:
parent
6f0f9c0a3d
commit
5ff8654986
Binary file not shown.
Binary file not shown.
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue