summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2020-08-25 22:23:50 -0400
committer arbee <rb6502@users.noreply.github.com>2020-08-25 22:23:50 -0400
commit2c6f48331be7bcf2861218da81844587411360df (patch)
tree2c2b4abb13f2bec774fb03f7f253388d8e1fe01a
parente8376ed36173650f845685a7a293d24de119dd82 (diff)
Apollo updates: [Hans Ostermeyer]
- Changed "20 years ago" Y2K-avoidance option to "30 years ago" - Removed runtime device lookup - Fixed reset command handling in 3C505
-rw-r--r--src/devices/bus/isa/3c505.cpp20
-rw-r--r--src/mame/drivers/apollo.cpp2
-rw-r--r--src/mame/includes/apollo.h2
-rw-r--r--src/mame/machine/apollo.cpp12
4 files changed, 28 insertions, 8 deletions
diff --git a/src/devices/bus/isa/3c505.cpp b/src/devices/bus/isa/3c505.cpp
index 8efc0471ff4..c45f3e9b78a 100644
--- a/src/devices/bus/isa/3c505.cpp
+++ b/src/devices/bus/isa/3c505.cpp
@@ -487,6 +487,26 @@ void isa16_3c505_device::hcr_w(u8 data)
{
LOGMASKED(LOG_REG, "hcr_w 0x%02x (%s)\n", data, machine().describe_context());
+ // attention condition
+ if (!(m_hcr & HCR_ATTN) && (data & HCR_ATTN))
+ {
+ if (!(data & HCR_FLSH))
+ {
+ LOGMASKED(LOG_REG, "### soft reset\n");
+
+ // soft reset
+ m_cpu->set_input_line(INPUT_LINE_NMI, 1);
+ m_cpu->set_input_line(INPUT_LINE_NMI, 0);
+ }
+ else
+ {
+ LOGMASKED(LOG_REG, "### hard reset\n");
+
+ // hard reset
+ reset();
+ }
+ }
+
// update host status flags
if ((data ^ m_hcr) & HCR_HSF)
m_asr = (m_asr & ~ASR_HSF) | (data & HCR_HSF);
diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp
index a20a69a1fc1..332bad046a6 100644
--- a/src/mame/drivers/apollo.cpp
+++ b/src/mame/drivers/apollo.cpp
@@ -935,7 +935,7 @@ WRITE_LINE_MEMBER(apollo_state::apollo_reset_instr_callback)
m_graphics->reset();
m_keyboard->reset();
#ifdef APOLLO_XXL
- machine().device(APOLLO_STDIO_TAG )->reset();
+ m_sio2->reset();
#endif
}
}
diff --git a/src/mame/includes/apollo.h b/src/mame/includes/apollo.h
index ca852a59235..a645dc31a72 100644
--- a/src/mame/includes/apollo.h
+++ b/src/mame/includes/apollo.h
@@ -300,7 +300,7 @@ private:
#define APOLLO_CONF_MONO_15I 0x0008
#define APOLLO_CONF_MONO_19I 0x0010
#define APOLLO_CONF_GERMAN_KBD 0x0020
-#define APOLLO_CONF_20_YEARS_AGO 0x0040
+#define APOLLO_CONF_30_YEARS_AGO 0x0040
#define APOLLO_CONF_25_YEARS_AGO 0x0080
#define APOLLO_CONF_NODE_ID 0x0100
#define APOLLO_CONF_IDLE_SLEEP 0x0200
diff --git a/src/mame/machine/apollo.cpp b/src/mame/machine/apollo.cpp
index 4d6e1f29afe..b0097398432 100644
--- a/src/mame/machine/apollo.cpp
+++ b/src/mame/machine/apollo.cpp
@@ -91,9 +91,9 @@ INPUT_PORTS_START( apollo_config )
PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
PORT_CONFSETTING(APOLLO_CONF_GERMAN_KBD, DEF_STR ( On ) )
- PORT_CONFNAME(APOLLO_CONF_20_YEARS_AGO, APOLLO_CONF_20_YEARS_AGO, "20 Years Ago ...")
+ PORT_CONFNAME(APOLLO_CONF_30_YEARS_AGO, APOLLO_CONF_30_YEARS_AGO, "30 Years Ago ...")
PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
- PORT_CONFSETTING(APOLLO_CONF_20_YEARS_AGO, DEF_STR ( On ) )
+ PORT_CONFSETTING(APOLLO_CONF_30_YEARS_AGO, DEF_STR ( On ) )
PORT_CONFNAME(APOLLO_CONF_25_YEARS_AGO, APOLLO_CONF_25_YEARS_AGO, "25 Years Ago ...")
PORT_CONFSETTING(0x00, DEF_STR ( Off ) )
@@ -1220,15 +1220,15 @@ MACHINE_RESET_MEMBER(apollo_state,apollo)
year += 75;
apollo_rtc_w(9, year);
}
- else if (year < 20 && apollo_config(APOLLO_CONF_20_YEARS_AGO))
+ else if (year < 30 && apollo_config(APOLLO_CONF_30_YEARS_AGO))
{
- year += 80;
+ year += 70;
apollo_rtc_w(9, year);
}
- else if (year >= 80 && !apollo_config(APOLLO_CONF_20_YEARS_AGO)
+ else if (year >= 70 && !apollo_config(APOLLO_CONF_30_YEARS_AGO)
&& !apollo_config(APOLLO_CONF_25_YEARS_AGO))
{
- year -= 80;
+ year -= 70;
apollo_rtc_w(9, year);
}