Browse Source

Fix IDE Detection on RC2014

pull/3/head
Wayne Warthen 8 years ago
parent
commit
ad55977d4a
  1. 7
      Source/HBIOS/Config/RC_std.asm
  2. 21
      Source/HBIOS/ide.asm

7
Source/HBIOS/Config/RC_std.asm

@ -5,4 +5,9 @@
; ;
#include "cfg_rc.asm" #include "cfg_rc.asm"
; ;
IDEENABLE .SET TRUE ; TRUE FOR IDE DEVICE SUPPORT
CPUOSC .SET 7372800 ; CPU OSC FREQ
DEFSERCFG .SET SER_115200_8N1 ; DEFAULT SERIAL LINE CONFIG (SHOULD MATCH ABOVE)
;
SIOENABLE .SET TRUE ; TRUE FOR ZILOG SIO/2 SUPPORT
;
IDEENABLE .SET TRUE ; TRUE FOR IDE DEVICE SUPPORT

21
Source/HBIOS/ide.asm

@ -750,7 +750,7 @@ IDE_GETRES:
; ;
IDE_RESET: IDE_RESET:
; ;
#IF (PLATFORM == PLT_MK4)
#IF (IDEMODE == IDEMODE_MK4)
; USE HARDWARE RESET LINE ; USE HARDWARE RESET LINE
LD A,$80 ; HIGH BIT OF XAR IS IDE RESET LD A,$80 ; HIGH BIT OF XAR IS IDE RESET
OUT (MK4_XAR),A OUT (MK4_XAR),A
@ -758,7 +758,22 @@ IDE_RESET:
CALL VDELAY CALL VDELAY
XOR A ; CLEAR RESET BIT XOR A ; CLEAR RESET BIT
OUT (MK4_XAR),A 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 ; INITIATE SOFT RESET
LD A,%00001110 ; NO INTERRUPTS, ASSERT RESET BOTH DRIVES LD A,%00001110 ; NO INTERRUPTS, ASSERT RESET BOTH DRIVES
OUT (IDE_IO_CTRL),A OUT (IDE_IO_CTRL),A
@ -767,9 +782,11 @@ IDE_RESET:
LD DE,2 ; DELAY 32US (SPEC IS >= 25US) LD DE,2 ; DELAY 32US (SPEC IS >= 25US)
CALL VDELAY CALL VDELAY
; ;
#IF (IDEMODE != IDEMODE_RC)
; CONFIGURE OPERATION AND END SOFT RESET ; CONFIGURE OPERATION AND END SOFT RESET
LD A,%00001010 ; NO INTERRUPTS, DEASSERT RESET LD A,%00001010 ; NO INTERRUPTS, DEASSERT RESET
OUT (IDE_IO_CTRL),A ; PUSH TO REGISTER OUT (IDE_IO_CTRL),A ; PUSH TO REGISTER
#ENDIF
; ;
; SPEC ALLOWS UP TO 450MS FOR DEVICES TO ASSERT THEIR PRESENCE ; SPEC ALLOWS UP TO 450MS FOR DEVICES TO ASSERT THEIR PRESENCE
; VIA -DASP. I ENCOUNTER PROBLEMS LATER ON IF I DON'T WAIT HERE ; VIA -DASP. I ENCOUNTER PROBLEMS LATER ON IF I DON'T WAIT HERE

Loading…
Cancel
Save