From 90bb74daacc4b8c735978be4d720f2aa9865aa13 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Fri, 28 Feb 2025 01:39:06 +1000 Subject: [PATCH] Fixed SELECT_DRIVE for slow drives. Fixed AUTOIDE too. --- src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM | 2 +- src/bios/exp/EXTENDED/IDE/shared.asm | 10 +++++++++- src/bios/rom/SETUP/AUTOIDE.asm | 12 +++++++----- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM b/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM index aeff00d..e05ed30 100644 --- a/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM +++ b/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM @@ -38,7 +38,7 @@ ATAPI_5x_RESET: LD C,IDE.Device.ATAPI CP BIOS.Error.ATAPI.UnitAttention SCF RET Z - ; + ;!FIXIT не трогать прерывания EI HALT DJNZ .loop diff --git a/src/bios/exp/EXTENDED/IDE/shared.asm b/src/bios/exp/EXTENDED/IDE/shared.asm index 903ffdb..f83e1f6 100644 --- a/src/bios/exp/EXTENDED/IDE/shared.asm +++ b/src/bios/exp/EXTENDED/IDE/shared.asm @@ -50,7 +50,15 @@ SELECT_DRIVE: AND #0F AND #F0 LD BC,IDE.Write.DeviceHead OUT (C),A - LD A,H + ; + LD A,high IDE.Read.Status + IN A,(low IDE.Read.Status) + AND IDE.CtrlByte.Busy + JR Z,.notBusy + LD B,32 + DJNZ $ + ; +.notBusy: LD A,H EXX RET ; diff --git a/src/bios/rom/SETUP/AUTOIDE.asm b/src/bios/rom/SETUP/AUTOIDE.asm index 72922f7..2353680 100644 --- a/src/bios/rom/SETUP/AUTOIDE.asm +++ b/src/bios/rom/SETUP/AUTOIDE.asm @@ -823,9 +823,10 @@ DETECTORS: .IdentPDevChk: LD E,IDE.ATAPI.IdentifyPacketDevice LD BC,IDE.Write.Command OUT (C),E - LD HL,PAUSES.WAIT.IDE + ; + LD HL,PAUSES.HALT.Time_2s LD DE,IDE.CtrlByte.Busy*256 + 0 - CALL BITS_WAITS.WAIT_PRT + CALL BITS_WAITS.Clear_BUSY RET C ; ; BC = IDE.Read.Status @@ -868,9 +869,10 @@ SetUP_CHANELS: CALL .CMD LD A,2 .CMD: CALL SELECT_IDE - LD BC,IDE.Write.Command - LD H,IDE.ATA.Nop - OUT (C),H + PAUSE_DJNZ 32 + LD BC,IDE.Write.Command + LD H,IDE.ATA.Nop + OUT (C),H PAUSE_DJNZ 32 ; Disable INTRQ ; LD BC,IDE.Write.DeviceControl