From 3f61f17fe9011afdda18e196787153ce5bdd4669 Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Wed, 21 May 2025 17:10:28 +0300 Subject: [PATCH] Fix Apollo AT500/2000 IDE HD controlller, AT variant boot ROM does not initialize if it sees set SCSI hardware config bit. --- expansion.cpp | 14 ++++++++++++-- idecontrollers.cpp | 4 ++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/expansion.cpp b/expansion.cpp index 0eb80774..e12678b8 100644 --- a/expansion.cpp +++ b/expansion.cpp @@ -5320,6 +5320,16 @@ static const struct expansionboardsettings cdtvsram_settings[] = { } }; +static const struct expansionboardsettings apollo500_settings[] = { + { + _T("SCSI module installed"), + _T("scsi") + }, + { + NULL + } +}; + const struct expansionromtype expansionroms[] = { { @@ -5452,8 +5462,8 @@ const struct expansionromtype expansionroms[] = { NULL, apollo_init_hd, NULL, apollo_add_scsi_unit, ROMTYPE_APOLLOHD, 0, 0, BOARD_AUTOCONFIG_Z2, false, NULL, 0, false, EXPANSIONTYPE_SCSI | EXPANSIONTYPE_IDE, - 8738, 0, 0 - }, + 8738, 0, 0, false, NULL, + false, 0, apollo500_settings }, { _T("add500"), _T("ADD-500"), _T("Archos"), NULL, add500_init, NULL, add500_add_scsi_unit, ROMTYPE_ADD500, 0, 0, BOARD_AUTOCONFIG_Z2, false, diff --git a/idecontrollers.cpp b/idecontrollers.cpp index 220df249..b2ef4e8b 100644 --- a/idecontrollers.cpp +++ b/idecontrollers.cpp @@ -2436,6 +2436,10 @@ static bool apollo_init(struct autoconfig_info *aci, int cpuboard_model) ide->userdata = currprefs.cpuboard_settings & 1; } else { ide->userdata = aci->rc->autoboot_disabled ? 2 : 0; + ide->userdata |= 1; + if (aci->rc->device_settings & 1) { + ide->userdata &= ~1; + } } ide->configured = 0; -- 2.47.3