summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/kc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/kc.cpp')
-rw-r--r--src/mame/drivers/kc.cpp114
1 files changed, 46 insertions, 68 deletions
diff --git a/src/mame/drivers/kc.cpp b/src/mame/drivers/kc.cpp
index 439fa3150f1..cdb0069591f 100644
--- a/src/mame/drivers/kc.cpp
+++ b/src/mame/drivers/kc.cpp
@@ -17,6 +17,7 @@
#include "emu.h"
#include "includes/kc.h"
+#include "machine/input_merger.h"
#include "softlist.h"
#include "screen.h"
#include "speaker.h"
@@ -96,6 +97,47 @@ void kc85_exp(device_slot_interface &device)
}
+void kc_state::kc85_slots(machine_config &config)
+{
+ /* devices */
+ QUICKLOAD(config, "quickload", "kcc", attotime::from_seconds(2)).set_load_callback(FUNC(kc_state::quickload_cb));
+
+ CASSETTE(config, m_cassette);
+ m_cassette->set_formats(kc_cassette_formats);
+ m_cassette->set_default_state(CASSETTE_PLAY);
+ m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
+ m_cassette->set_interface("kc_cass");
+
+ INPUT_MERGER_ANY_HIGH(config, "irq").output_handler().set_inputline(m_maincpu, 0);
+ INPUT_MERGER_ANY_HIGH(config, "nmi").output_handler().set_inputline(m_maincpu, INPUT_LINE_NMI);
+ INPUT_MERGER_ANY_HIGH(config, "halt").output_handler().set_inputline(m_maincpu, INPUT_LINE_HALT);
+
+ /* cartridge slot */
+ KCCART_SLOT(config, m_expansions[0], kc85_cart, "m011");
+ m_expansions[0]->set_next_slot(m_expansions[1]);
+ m_expansions[0]->irq().set("irq", FUNC(input_merger_device::in_w<0>));
+ m_expansions[0]->nmi().set("nmi", FUNC(input_merger_device::in_w<0>));
+ m_expansions[0]->halt().set("halt", FUNC(input_merger_device::in_w<0>));
+
+ KCCART_SLOT(config, m_expansions[1], kc85_cart, nullptr);
+ m_expansions[1]->set_next_slot(m_expansions[2]);
+ m_expansions[1]->irq().set("irq", FUNC(input_merger_device::in_w<1>));
+ m_expansions[1]->nmi().set("nmi", FUNC(input_merger_device::in_w<1>));
+ m_expansions[1]->halt().set("halt", FUNC(input_merger_device::in_w<1>));
+
+ /* expansion interface */
+ KCEXP_SLOT(config, m_expansions[2], kc85_exp, nullptr);
+ m_expansions[2]->irq().set("irq", FUNC(input_merger_device::in_w<2>));
+ m_expansions[2]->nmi().set("nmi", FUNC(input_merger_device::in_w<2>));
+ m_expansions[2]->halt().set("halt", FUNC(input_merger_device::in_w<2>));
+
+ /* Software lists */
+ SOFTWARE_LIST(config, "cart_list").set_original("kc_cart");
+ SOFTWARE_LIST(config, "flop_list").set_original("kc_flop");
+ SOFTWARE_LIST(config, "cass_list").set_original("kc_cass");
+}
+
+
void kc_state::kc85_3(machine_config &config)
{
/* basic machine hardware */
@@ -104,7 +146,7 @@ void kc_state::kc85_3(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &kc_state::kc85_3_io);
m_maincpu->set_daisy_config(kc85_daisy_chain);
- config.m_minimum_quantum = attotime::from_hz(60);
+ config.set_maximum_quantum(attotime::from_hz(60));
Z80PIO(config, m_z80pio, KC85_3_CLOCK);
m_z80pio->out_int_callback().set_inputline(m_maincpu, 0);
@@ -137,39 +179,7 @@ void kc_state::kc85_3(machine_config &config)
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
- /* devices */
- QUICKLOAD(config, "quickload", "kcc", attotime::from_seconds(2)).set_load_callback(FUNC(kc_state::quickload_cb));
-
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(kc_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
- m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
- m_cassette->set_interface("kc_cass");
-
- /* cartridge slot */
- KCCART_SLOT(config, m_expansions[0], kc85_cart, "m011");
- m_expansions[0]->set_next_slot("mc");
- m_expansions[0]->irq().set_inputline(m_maincpu, 0);
- m_expansions[0]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[0]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
-
- KCCART_SLOT(config, m_expansions[1], kc85_cart, nullptr);
- m_expansions[1]->set_next_slot("exp");
- m_expansions[1]->irq().set_inputline(m_maincpu, 0);
- m_expansions[1]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[1]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
-
- /* expansion interface */
- KCEXP_SLOT(config, m_expansions[2], kc85_exp, nullptr);
- m_expansions[2]->set_next_slot(nullptr);
- m_expansions[2]->irq().set_inputline(m_maincpu, 0);
- m_expansions[2]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[2]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
-
- /* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("kc_cart");
- SOFTWARE_LIST(config, "flop_list").set_original("kc_flop");
- SOFTWARE_LIST(config, "cass_list").set_original("kc_cass");
+ kc85_slots(config);
/* internal ram */
RAM(config, m_ram).set_default_size("16K");
@@ -182,7 +192,7 @@ void kc85_4_state::kc85_4(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &kc85_4_state::kc85_4_mem);
m_maincpu->set_addrmap(AS_IO, &kc85_4_state::kc85_4_io);
m_maincpu->set_daisy_config(kc85_daisy_chain);
- config.m_minimum_quantum = attotime::from_hz(60);
+ config.set_maximum_quantum(attotime::from_hz(60));
Z80PIO(config, m_z80pio, KC85_4_CLOCK);
m_z80pio->out_int_callback().set_inputline(m_maincpu, 0);
@@ -215,39 +225,7 @@ void kc85_4_state::kc85_4(machine_config &config)
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
- /* devices */
- QUICKLOAD(config, "quickload", "kcc", attotime::from_seconds(2)).set_load_callback(FUNC(kc_state::quickload_cb));
-
- CASSETTE(config, m_cassette);
- m_cassette->set_formats(kc_cassette_formats);
- m_cassette->set_default_state(CASSETTE_PLAY);
- m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
- m_cassette->set_interface("kc_cass");
-
- /* cartridge slot */
- KCCART_SLOT(config, m_expansions[0], kc85_cart, "m011");
- m_expansions[0]->set_next_slot("mc");
- m_expansions[0]->irq().set_inputline(m_maincpu, 0);
- m_expansions[0]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[0]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
-
- KCCART_SLOT(config, m_expansions[1], kc85_cart, nullptr);
- m_expansions[1]->set_next_slot("exp");
- m_expansions[1]->irq().set_inputline(m_maincpu, 0);
- m_expansions[1]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[1]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
-
- /* expansion interface */
- KCEXP_SLOT(config, m_expansions[2], kc85_exp, nullptr);
- m_expansions[2]->set_next_slot(nullptr);
- m_expansions[2]->irq().set_inputline(m_maincpu, 0);
- m_expansions[2]->nmi().set_inputline(m_maincpu, INPUT_LINE_NMI);
- m_expansions[2]->halt().set_inputline(m_maincpu, INPUT_LINE_HALT);
-
- /* Software lists */
- SOFTWARE_LIST(config, "cart_list").set_original("kc_cart");
- SOFTWARE_LIST(config, "flop_list").set_original("kc_flop");
- SOFTWARE_LIST(config, "cass_list").set_original("kc_cass");
+ kc85_slots(config);
/* internal ram */
RAM(config, m_ram).set_default_size("64K");