-bug: некорректно считались свободные сектора при создании файла в 1 сектор

This commit is contained in:
Anatoliy Belyanskiy 2024-05-11 07:19:36 +10:00
parent cc435bef7d
commit e5868883f8
3 changed files with 13 additions and 9 deletions

View File

@ -1211,7 +1211,7 @@ CHECK_FIRST_CLUSTER:
OR H OR H
RET RET
; [x] fat32 ;!TEST ; [x] fat32
; WRITE SECTORS OF FILE ; WRITE SECTORS OF FILE
; ¢å®¤: HL:DE - FP (in sectors) ; ¢å®¤: HL:DE - FP (in sectors)
; IX - data in RAM ; IX - data in RAM
@ -1226,7 +1226,7 @@ BLOK_WRITE: LD (READ.PointerOnBuffer),IX
PUSH HL ; ®áâ â®ª DIV_for_SPC PUSH HL ; ®áâ â®ª DIV_for_SPC
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE ;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
PUSH BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  PUSH BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à  PUSH DE ; fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à 
; ;
; EXX ; EXX
; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High ; LD L,(IY+_sFM.FS_REC.FIRST_CLUSTER_H) ; START CLUSTER High
@ -1242,7 +1242,7 @@ BLOK_WRITE: LD (READ.PointerOnBuffer),IX
JR NZ,.FindCluster JR NZ,.FindCluster
; ;
PUSH BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  PUSH BC ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
PUSH DE ; [x] fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à  PUSH DE ; fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à 
; [x] fat32 ; [x] fat32
CALL G_CLUST CALL G_CLUST
JP C,.Error_6 JP C,.Error_6
@ -1255,6 +1255,9 @@ BLOK_WRITE: LD (READ.PointerOnBuffer),IX
LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1),H LD (IY+_sFM.FS_REC.FIRST_CLUSTER_H+1),H
EXX EXX
; ;
XOR A
CALL SET_NEW_FREE_CLUSTERS
;
CALL WRITE_TO_FAT CALL WRITE_TO_FAT
;!TEST ;!TODO 2/12/23 ; [ ] ¡ £ á ¨§¡ëâ®ç­®© § ¯¨áìî WRITE_FAT_TABLE? ;!TEST ;!TODO 2/12/23 ; [ ] ¡ £ á ¨§¡ëâ®ç­®© § ¯¨áìî WRITE_FAT_TABLE?
;PUSH HL ;PUSH HL
@ -1262,10 +1265,10 @@ BLOK_WRITE: LD (READ.PointerOnBuffer),IX
;POP HL ;POP HL
; ;
POP DE ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à  POP DE ; ¬« ¤è¥¥ á«®¢® ­®¬¥à  ª« áâ¥à 
POP BC ; [x] fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à  POP BC ; fat32 áâ à襥 á«®¢® ­®¬¥à  ª« áâ¥à 
; ;
INC B INC B
INC D ; [x] fat32 INC D ; fat32
PUSH DE PUSH DE
JP .enter_loop JP .enter_loop
;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE ;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
@ -1273,7 +1276,7 @@ BLOK_WRITE: LD (READ.PointerOnBuffer),IX
;HL': HL - ¨§¢¥áâ­ë© ª« áâ¥à ä ©«  ¤«ï ®âáçñâ  ;HL': HL - ¨§¢¥áâ­ë© ª« áâ¥à ä ©«  ¤«ï ®âáçñâ 
;DE : BC - ®á⠢襥áï ᬥ饭¨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (D=D+1, B=B+1) ;DE : BC - ®á⠢襥áï ᬥ饭¨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (D=D+1, B=B+1)
; ;
PUSH DE ; [x] ®á⠢襥áï ᬥ饭¨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®) PUSH DE ; ®á⠢襥áï ᬥ饭¨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®)
JP .enter_loop JP .enter_loop
; ;
; [x] fat32 ; [x] fat32
@ -1296,7 +1299,7 @@ BLOK_WRITE: LD (READ.PointerOnBuffer),IX
.enter_loop: INC B .enter_loop: INC B
DEC BC DEC BC
DJNZ .loop DJNZ .loop
POP BC ; [x] ®á⠢襥áï ᬥ饭¨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®) POP BC ; ®á⠢襥áï ᬥ饭¨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®)
INC B INC B
DEC BC DEC BC
DJNZ .loop_big DJNZ .loop_big

View File

@ -1 +1 @@
984 985

View File

@ -784,6 +784,7 @@ GET_BIG_DIG: ld b,"0"-1
inc ix inc ix
ret ret
; stop ; stop
; A:HL':HL - ç¨á«® ¤«ï ¯¥à¥¢®¤ 
PRINT_5BYTES: ld ix,L40BIT.Str ; "00" PRINT_5BYTES: ld ix,L40BIT.Str ; "00"
ld c,#17 ld c,#17
exx exx
@ -811,7 +812,7 @@ PRINT_5BYTES: ld ix,L40BIT.Str ; "00"
; ;
; DE':DE = 100,000,000 ; DE':DE = 100,000,000
CALL MAKE_LN.skip_1 CALL MAKE_LN.skip_1
.exit_clean: ld de,SIZE_BUFFER.high ; "0 000 000 000" ld de,SIZE_BUFFER.high ; "0 000 000 000"
ld hl,L40BIT.Str ; "0000000000" ld hl,L40BIT.Str ; "0000000000"
ldi ldi
ldi ldi