This commit is contained in:
Anatoliy Belyanskiy 2024-04-21 04:57:22 +10:00
parent 55620e1adf
commit e43370d8a5
2 changed files with 41 additions and 47 deletions

@ -1 +1 @@
Subproject commit 73f764ccd1ab8de8dea7eef3b4f5cd27e2ea8dab
Subproject commit 62170ee7bc7dabe6fd55b94e89826ca510a60097

View File

@ -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