mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
CF Card compatibility improvement
Older CF Cards did not reset IDE registers to defaults values when reset. Implemented a work around.
This commit is contained in:
@@ -922,36 +922,15 @@ IDE_RESET:
|
||||
PRTS(" RESET$")
|
||||
#ENDIF
|
||||
;
|
||||
;#IF (IDEMODE == IDEMODE_MK4)
|
||||
;
|
||||
LD A,(IY+IDE_MODE) ; GET MODE
|
||||
CP IDEMODE_MK4 ; MK4?
|
||||
JR NZ,IDE_RESET1 ; IF NOT, BYPASS
|
||||
;
|
||||
; USE HARDWARE RESET LINE
|
||||
#IF (IDETRACE >= 3)
|
||||
PRTS(" HARD$")
|
||||
#ENDIF
|
||||
LD A,$80 ; HIGH BIT OF XAR IS IDE RESET
|
||||
;OUT (IDE_IO_XAR),A
|
||||
CALL IDE_OUT
|
||||
.DB IDE_REG_XAR
|
||||
LD DE,2 ; DELAY 32US (SPEC IS >= 25US)
|
||||
CALL VDELAY
|
||||
XOR A ; CLEAR RESET BIT
|
||||
;OUT (IDE_IO_XAR),A
|
||||
CALL IDE_OUT
|
||||
.DB IDE_REG_XAR
|
||||
;
|
||||
IDE_RESET1:
|
||||
;
|
||||
;#ENDIF
|
||||
;
|
||||
;#IF (IDEMODE == IDEMODE_RC)
|
||||
;
|
||||
LD A,(IY+IDE_MODE) ; GET MODE
|
||||
CP IDEMODE_RC ; RC2014?
|
||||
JR NZ,IDE_RESET2 ; IF NOT, BYPASS
|
||||
; OLDER CF CARDS DO NOT SEEM TO SET THE
|
||||
; REGISTERS ON RESET, SO HERE WE FAKE THINGS BY
|
||||
; SETTING THEM AS A RESET WOULD. SO WE ALWAYS
|
||||
; DO THE FAKE.
|
||||
;LD A,(IY+IDE_MODE) ; GET MODE
|
||||
;CP IDEMODE_RC ; RC2014?
|
||||
;JR NZ,IDE_RESET2 ; IF NOT, BYPASS
|
||||
;
|
||||
; RC2014 CANNOT ADDRESS THE DEVICE CONTROL PORT AND
|
||||
; HAS NO WAY TO PERFORM A HARD RESET FROM SOFTWARE,
|
||||
@@ -979,6 +958,33 @@ IDE_RESET2:
|
||||
;
|
||||
;#ENDIF
|
||||
;
|
||||
;#IF (IDEMODE == IDEMODE_MK4)
|
||||
;
|
||||
LD A,(IY+IDE_MODE) ; GET MODE
|
||||
CP IDEMODE_MK4 ; MK4?
|
||||
JR NZ,IDE_RESET1 ; IF NOT, BYPASS
|
||||
;
|
||||
; USE HARDWARE RESET LINE
|
||||
#IF (IDETRACE >= 3)
|
||||
PRTS(" HARD$")
|
||||
#ENDIF
|
||||
LD A,$80 ; HIGH BIT OF XAR IS IDE RESET
|
||||
;OUT (IDE_IO_XAR),A
|
||||
CALL IDE_OUT
|
||||
.DB IDE_REG_XAR
|
||||
LD DE,20 ; DELAY 32US (SPEC IS >= 25US)
|
||||
CALL VDELAY
|
||||
XOR A ; CLEAR RESET BIT
|
||||
;OUT (IDE_IO_XAR),A
|
||||
CALL IDE_OUT
|
||||
.DB IDE_REG_XAR
|
||||
LD DE,20
|
||||
CALL VDELAY
|
||||
;
|
||||
IDE_RESET1:
|
||||
;
|
||||
;#ENDIF
|
||||
;
|
||||
;#IF ((IDEMODE != IDEMODE_MK4) & (IDEMODE != IDEMODE_RC))
|
||||
;
|
||||
LD A,(IY+IDE_MODE) ; GET MODE
|
||||
|
||||
@@ -974,6 +974,27 @@ PPIDE_RESET:
|
||||
CALL PPIDE_PRTPREFIX
|
||||
PRTS(" RESET$")
|
||||
#ENDIF
|
||||
;
|
||||
; OLDER CF CARDS DO NOT SEEM TO SET THE
|
||||
; REGISTERS ON RESET, SO HERE WE FAKE THINGS BY
|
||||
; SETTING THEM AS A RESET WOULD
|
||||
#IF (IDETRACE >= 3)
|
||||
PRTS(" FAKE$")
|
||||
#ENDIF
|
||||
XOR A
|
||||
;OUT (IDE_IO_CYLLO),A
|
||||
CALL PPIDE_OUT
|
||||
.DB PPIDE_REG_CYLLO
|
||||
;OUT (IDE_IO_CYLHI),A
|
||||
CALL PPIDE_OUT
|
||||
.DB PPIDE_REG_CYLHI
|
||||
INC A
|
||||
;OUT (IDE_IO_COUNT),A
|
||||
CALL PPIDE_OUT
|
||||
.DB PPIDE_REG_COUNT
|
||||
;OUT (IDE_IO_SECT),A
|
||||
CALL PPIDE_OUT
|
||||
.DB PPIDE_REG_SECT
|
||||
;
|
||||
; SETUP PPI TO READ
|
||||
LD A,PPIDE_DIR_READ ; SET DATA BUS DIRECTION TO READ
|
||||
|
||||
BIN
Source/Images/d_cpm22/u0/KERMIT.COM
Normal file
BIN
Source/Images/d_cpm22/u0/KERMIT.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_cpm3/u0/KERMIT.COM
Normal file
BIN
Source/Images/d_cpm3/u0/KERMIT.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_nzcom/u0/KERMIT.COM
Normal file
BIN
Source/Images/d_nzcom/u0/KERMIT.COM
Normal file
Binary file not shown.
BIN
Source/Images/d_zpm3/u15/kermit.com
Normal file
BIN
Source/Images/d_zpm3/u15/kermit.com
Normal file
Binary file not shown.
BIN
Source/Images/d_zsdos/u0/KERMIT.COM
Normal file
BIN
Source/Images/d_zsdos/u0/KERMIT.COM
Normal file
Binary file not shown.
@@ -2,4 +2,4 @@
|
||||
#DEFINE RMN 1
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.1-pre.4"
|
||||
#DEFINE BIOSVER "3.1-pre.5"
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 1
|
||||
rup equ 0
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.1-pre.4"
|
||||
db "3.1-pre.5"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user