|
|
|
@ -750,7 +750,7 @@ IDE_GETRES: |
|
|
|
; |
|
|
|
IDE_RESET: |
|
|
|
; |
|
|
|
#IF (PLATFORM == PLT_MK4) |
|
|
|
#IF (IDEMODE == IDEMODE_MK4) |
|
|
|
; USE HARDWARE RESET LINE |
|
|
|
LD A,$80 ; HIGH BIT OF XAR IS IDE RESET |
|
|
|
OUT (MK4_XAR),A |
|
|
|
@ -758,7 +758,22 @@ IDE_RESET: |
|
|
|
CALL VDELAY |
|
|
|
XOR A ; CLEAR RESET BIT |
|
|
|
OUT (MK4_XAR),A |
|
|
|
#ELSE |
|
|
|
#ENDIF |
|
|
|
|
|
|
|
#IF (IDEMODE == IDEMODE_RC) |
|
|
|
; RC2014 CANNOT ADDRESS THE DEVICE CONTROL PORT AND |
|
|
|
; HAS NO WAY TO PERFORM A HARD RESET FROM SOFTWARE, |
|
|
|
; SO FAKE IT BY SETTING THE REGISTERS TO THE SAME |
|
|
|
; VALUES THAT A RESET WOULD CAUSE. |
|
|
|
XOR A |
|
|
|
OUT (IDE_IO_CYLLO),A |
|
|
|
OUT (IDE_IO_CYLHI),A |
|
|
|
INC A |
|
|
|
OUT (IDE_IO_COUNT),A |
|
|
|
OUT (IDE_IO_SECT),A |
|
|
|
#ENDIF |
|
|
|
|
|
|
|
#IF ((IDEMODE != IDEMODE_MK4) & (IDEMODE != IDEMODE_RC)) |
|
|
|
; INITIATE SOFT RESET |
|
|
|
LD A,%00001110 ; NO INTERRUPTS, ASSERT RESET BOTH DRIVES |
|
|
|
OUT (IDE_IO_CTRL),A |
|
|
|
@ -767,9 +782,11 @@ IDE_RESET: |
|
|
|
LD DE,2 ; DELAY 32US (SPEC IS >= 25US) |
|
|
|
CALL VDELAY |
|
|
|
; |
|
|
|
#IF (IDEMODE != IDEMODE_RC) |
|
|
|
; CONFIGURE OPERATION AND END SOFT RESET |
|
|
|
LD A,%00001010 ; NO INTERRUPTS, DEASSERT RESET |
|
|
|
OUT (IDE_IO_CTRL),A ; PUSH TO REGISTER |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
; SPEC ALLOWS UP TO 450MS FOR DEVICES TO ASSERT THEIR PRESENCE |
|
|
|
; VIA -DASP. I ENCOUNTER PROBLEMS LATER ON IF I DON'T WAIT HERE |
|
|
|
|