From e43370d8a561e1017dea39ad1c5831707ab49e66 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sun, 21 Apr 2024 04:57:22 +1000 Subject: [PATCH] ... --- Shared_Includes | 2 +- src/bios/exp/EXTENDED/IDE/HDD_DRV.ASM | 86 +++++++++++++-------------- 2 files changed, 41 insertions(+), 47 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index 73f764c..62170ee 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 73f764ccd1ab8de8dea7eef3b4f5cd27e2ea8dab +Subproject commit 62170ee7bc7dabe6fd55b94e89826ca510a60097 diff --git a/src/bios/exp/EXTENDED/IDE/HDD_DRV.ASM b/src/bios/exp/EXTENDED/IDE/HDD_DRV.ASM index eb10943..f103ecd 100644 --- a/src/bios/exp/EXTENDED/IDE/HDD_DRV.ASM +++ b/src/bios/exp/EXTENDED/IDE/HDD_DRV.ASM @@ -239,8 +239,8 @@ RDS000: LD C,IDE.Device.HDD CALL SELECT_DRIVE RET C EXX - LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0 - CALL WAITPRT + LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0 + CALL WAITPRT EXX RET C EX AF,AF' @@ -257,9 +257,8 @@ RDS000: LD C,IDE.Device.HDD ;????? ;SAVE HL! RDS002: EXX - LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0 - ;LD BC,IDE.Read.Status - CALL WAITPRT + LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0 + CALL WAITPRT EXX RET C ;NOP ;R01 REMOVED "DI" @@ -298,9 +297,8 @@ RDS004: DUP 16 ; .W44: INC XL ;INC LOADED SECTORS EXX - LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1 - ;LD BC,IDE.Read.Status - CALL WAITPRT + LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1 + CALL WAITPRT EXX RET C LD BC,IDE.Read.Status @@ -403,9 +401,8 @@ WRS000: CALL SELECT_DRIVE RET C EXX - LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0 - ;LD BC,IDE.Read.Status - CALL WAITPRT + LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0 + CALL WAITPRT EXX RET C EX AF,AF' @@ -439,9 +436,8 @@ NO_WriteProtect: OUT (C),A ;SAVE HL! WRS002: EXX - LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0 - ;LD BC,IDE.Read.Status - CALL WAITPRT + LD DE,#8908 ;WAIT BUSY=0 & DRQ=1 & ERR=0 + CALL WAITPRT EXX RET C @@ -480,9 +476,8 @@ WRS003: OUT (SLOT3),A .W33: INC XL ;INC SAVED SECTORS EXX - LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1 - ;LD BC,IDE.Read.Status - CALL WAITPRT + LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1 + CALL WAITPRT EXX RET C LD BC,IDE.Read.Status @@ -514,34 +509,31 @@ HDD_5x.VERIFY: RET ;[]================================================================[#54] ;VERIFY SECTOR(S) -VRS000: - LD C,IDE.Device.HDD - CALL SELECT_DRIVE - RET C - EXX - LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0 - ;LD BC,IDE.Read.Status - CALL WAITPRT - EXX - RET C - PUSH DE - CALL PRESET - POP HL - LD BC,IDE.Write.Command - LD A,IDE.ATA.ReadVerifySectorsWithRetry - OUT (C),A -VRS002: LD BC,IDE.Read.Status - IN A,(C) - BIT IDE.ControlBit.Error,A - JR Z,VRS003 - SCF - RET -VRS003: LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1 - ;LD BC,IDE.Read.Status - CALL WAITPRT - RET C - XOR A - RET +VRS000: LD C,IDE.Device.HDD + CALL SELECT_DRIVE + RET C + EXX + LD DE,#C140 ;WAIT BUSY=0 & READY=1 & ERR=0 + CALL WAITPRT + EXX + RET C + PUSH DE + CALL PRESET + POP HL + LD BC,IDE.Write.Command + LD A,IDE.ATA.ReadVerifySectorsWithRetry + OUT (C),A +VRS002: LD BC,IDE.Read.Status + IN A,(C) + BIT IDE.ControlBit.Error,A + JR Z,VRS003 + SCF + RET +VRS003: LD DE,#C140 ;WAIT BUSY=0 & ERR=0 & READY=1 + CALL WAITPRT + RET C + XOR A + RET ; HL:IX - LBA SECTOR ; B - SECTOR COUNTER @@ -637,7 +629,9 @@ CHS005: INC A WAITPRT: LD BC,IDE.Read.Status LD HL,#0000 ; задержка ;!HARDCODE + ; .loop: PUSH HL +; .loop2: IN A,(C) AND D CP E @@ -652,7 +646,7 @@ WAITPRT: JR NZ,.loop ; .error: LD A,BIOS.Error.WaitPort - SCF + SCF RET .ok: POP HL RET