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

View File

@ -1 +1 @@
984
985

View File

@ -784,6 +784,7 @@ GET_BIG_DIG: ld b,"0"-1
inc ix
ret
; stop
; A:HL':HL - ç¨á«® ¤«ï ¯¥à¥¢®¤ 
PRINT_5BYTES: ld ix,L40BIT.Str ; "00"
ld c,#17
exx
@ -811,7 +812,7 @@ PRINT_5BYTES: ld ix,L40BIT.Str ; "00"
;
; DE':DE = 100,000,000
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"
ldi
ldi