From 1c0d877a9f822f08c8005528facf5ea73648b75c Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Wed, 6 May 2026 16:17:24 +1000 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bios/exp/EXTENDED/FDD_DRIVER.asm | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/bios/exp/EXTENDED/FDD_DRIVER.asm b/src/bios/exp/EXTENDED/FDD_DRIVER.asm index 2f3fadf..f4a3cc1 100644 --- a/src/bios/exp/EXTENDED/FDD_DRIVER.asm +++ b/src/bios/exp/EXTENDED/FDD_DRIVER.asm @@ -371,20 +371,9 @@ FDD_RW_SECTOR: LD D,FDD_COUNTERS.RW_Retries LD A,XH OUT (SLOT3),A LD A,C ; COMMAND read or write - LD BC,FDD_COUNTERS.INTRQorDRQ*256 + FDC_93.Data ;██████████ КРИТИЧНЫЙ К СКОРОСТИ КУСОК ПОСЛЕ УСТАНОВКИ КОМАНДЫ ДО СНЯТИЯ РЕЗУЛЬТАТА ██████████ OUT (FDC_93.Command),A -.wait_loop_next:; этот loop именно тут для задержки между OUT (FDC_93.Command),A и IN A,(FDC_93.DrvCTRL) - INC DE - LD A,E - OR D - JR NZ,.wait_loop ; 26 - ; - DJNZ .wait_loop - SCF - JR .after_rw ; error - ; - ; в первый раз мы тут после 26 тактов + LD BC,FDD_COUNTERS.INTRQorDRQ*256 + FDC_93.Data ; именно тут для задержки между предыдущей и следующей команды .wait_loop: IN A,(FDC_93.DrvCTRL) ; 11 ; 11 ;WAIT INTRQ or DRQ AND %0100'0000 ; 7 ; 7 ;b7: INTRQ (выполняется команда = 0), b6: DRQ (запрос данных = 1). JR Z,.wait_loop_next ; 7 ; 12 + 34 (.wait_loop_next) @@ -407,7 +396,7 @@ FDD_RW_SECTOR: LD D,FDD_COUNTERS.RW_Retries INI ;█████████████████████████████████████████████████████████████████████████████████████████████ .wait_data_r: IN A,(FDC_93.DrvCTRL) - AND %1100'0000 ;b6: DRQ (запрос данных = 1). b7: INTRQ (выполняется команда = 0). + AND %1100'0000 ;b7: INTRQ (выполняется команда = 0). b6: DRQ (запрос данных = 1). JR Z,.wait_data_r JP P,.read_loop ; JUMP if "выполняется команда = 0" ; @@ -449,6 +438,16 @@ FDD_RW_SECTOR: LD D,FDD_COUNTERS.RW_Retries POP DE JR .RETRY ; +.wait_loop_next: + INC DE + LD A,E + OR D + JR NZ,.wait_loop ; 26 + ; + DJNZ .wait_loop + SCF + JR .after_rw ; error + ; ; .data_lost: DEC D ; потеря данных JR NZ,.RETRY