From e5868883f87455370bb8ad4f47b6aee30d41770c Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sat, 11 May 2024 07:19:36 +1000 Subject: [PATCH] =?UTF-8?q?-bug:=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=80=D1=80?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=BD=D0=BE=20=D1=81=D1=87=D0=B8=D1=82=D0=B0?= =?UTF-8?q?=D0=BB=D0=B8=D1=81=D1=8C=20=D1=81=D0=B2=D0=BE=D0=B1=D0=BE=D0=B4?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D1=81=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B8=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20=D0=B2=201=20?= =?UTF-8?q?=D1=81=D0=B5=D0=BA=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DSS/FS/FAT/FAT_X.asm | 17 ++++++++++------- DSS/build.txt | 2 +- SHELL/Commands/DIR.ASM | 3 ++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/DSS/FS/FAT/FAT_X.asm b/DSS/FS/FAT/FAT_X.asm index e3460c2..45561f1 100644 --- a/DSS/FS/FAT/FAT_X.asm +++ b/DSS/FS/FAT/FAT_X.asm @@ -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 diff --git a/DSS/build.txt b/DSS/build.txt index 9a32da2..6f17eed 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -984 \ No newline at end of file +985 \ No newline at end of file diff --git a/SHELL/Commands/DIR.ASM b/SHELL/Commands/DIR.ASM index ae5f3f8..23008c1 100644 --- a/SHELL/Commands/DIR.ASM +++ b/SHELL/Commands/DIR.ASM @@ -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