summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2021-06-11 03:57:46 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2021-06-11 03:57:46 +1000
commit2b567055124a3a3de8bfa545d188be6d13a35187 (patch)
tree53ce89d2e4e8b892f4fb5694433afd718ba94bb0
parent73c670b375eff0e5fb1720ea703a56b2c2f26014 (diff)
mbee: make floppy sw-items show up by default. Fixed compatibility for mbeepp.
-rw-r--r--hash/mbee_flop.xml2
-rw-r--r--src/mame/drivers/mbee.cpp56
-rw-r--r--src/mame/includes/mbee.h3
-rw-r--r--src/mame/machine/mbee.cpp18
4 files changed, 55 insertions, 24 deletions
diff --git a/hash/mbee_flop.xml b/hash/mbee_flop.xml
index 7437b1cad75..82e889fc279 100644
--- a/hash/mbee_flop.xml
+++ b/hash/mbee_flop.xml
@@ -1435,7 +1435,7 @@ At the time of writing (2021-06-04) any floppy image will work in any emulated d
</software>
<software name="jandhb_01">
- <description>JHBeesware1</description>
+ <description>JHBeesware 1</description>
<year>19??</year>
<publisher>J and H Beesware</publisher>
<sharedfeat name="compatibility" value="1,2,3" />
diff --git a/src/mame/drivers/mbee.cpp b/src/mame/drivers/mbee.cpp
index bd14a316709..06c41e6bc2c 100644
--- a/src/mame/drivers/mbee.cpp
+++ b/src/mame/drivers/mbee.cpp
@@ -688,8 +688,12 @@ void mbee_state::mbee(machine_config &config)
m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
m_cassette->set_interface("mbee_cass");
- GENERIC_SOCKET(config, "optrom1", generic_plain_slot, "mbee_net", "mbn").set_device_load(FUNC(mbee_state::pak_load<1U>)); // net
- GENERIC_SOCKET(config, "optrom2", generic_plain_slot, "mbee_pak", "mbp").set_device_load(FUNC(mbee_state::pak_load<2U>)); // edasm
+ generic_slot_device &optrom1(GENERIC_SOCKET(config, "optrom1", generic_plain_slot, "mbee_net", "mbn")); // net
+ optrom1.set_device_load(FUNC(mbee_state::pak_load<1U>));
+ optrom1.set_device_unload(FUNC(mbee_state::pak_unload<1U>));
+ generic_slot_device &optrom2(GENERIC_SOCKET(config, "optrom2", generic_plain_slot, "mbee_pak", "mbp")); // edasm
+ optrom2.set_device_load(FUNC(mbee_state::pak_load<2U>));
+ optrom2.set_device_unload(FUNC(mbee_state::pak_unload<2U>));
SOFTWARE_LIST(config, "cass_list").set_original("mbee_cass").set_filter("1");
SOFTWARE_LIST(config, "quik_list").set_original("mbee_quik").set_filter("1");
@@ -752,13 +756,27 @@ void mbee_state::mbeeic(machine_config &config)
m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05);
m_cassette->set_interface("mbee_cass");
- GENERIC_SOCKET(config, "optrom1", generic_plain_slot, "mbee_net", "mbn").set_device_load(FUNC(mbee_state::pak_load<1U>)); // net
- GENERIC_SOCKET(config, "optrom2", generic_plain_slot, "mbee_pak", "mbp").set_device_load(FUNC(mbee_state::pak_load<2U>)); // pak0
- GENERIC_SOCKET(config, "optrom3", generic_plain_slot, "mbee_pak", "mbp").set_device_load(FUNC(mbee_state::pak_load<3U>)); // pak1
- GENERIC_SOCKET(config, "optrom4", generic_plain_slot, "mbee_pak", "mbp").set_device_load(FUNC(mbee_state::pak_load<4U>)); // pak2
- GENERIC_SOCKET(config, "optrom5", generic_plain_slot, "mbee_pak", "mbp").set_device_load(FUNC(mbee_state::pak_load<5U>)); // pak3
- GENERIC_SOCKET(config, "optrom6", generic_plain_slot, "mbee_pak", "mbp").set_device_load(FUNC(mbee_state::pak_load<6U>)); // pak4
- GENERIC_SOCKET(config, "optrom7", generic_plain_slot, "mbee_pak", "mbp").set_device_load(FUNC(mbee_state::pak_load<7U>)); // pak5
+ generic_slot_device &optrom1(GENERIC_SOCKET(config, "optrom1", generic_plain_slot, "mbee_net", "mbn")); // net
+ optrom1.set_device_load(FUNC(mbee_state::pak_load<1U>));
+ optrom1.set_device_unload(FUNC(mbee_state::pak_unload<1U>));
+ generic_slot_device &optrom2(GENERIC_SOCKET(config, "optrom2", generic_plain_slot, "mbee_pak", "mbp")); // pak0
+ optrom2.set_device_load(FUNC(mbee_state::pak_load<2U>));
+ optrom2.set_device_unload(FUNC(mbee_state::pak_unload<2U>));
+ generic_slot_device &optrom3(GENERIC_SOCKET(config, "optrom3", generic_plain_slot, "mbee_pak", "mbp")); // pak1
+ optrom3.set_device_load(FUNC(mbee_state::pak_load<3U>));
+ optrom3.set_device_unload(FUNC(mbee_state::pak_unload<3U>));
+ generic_slot_device &optrom4(GENERIC_SOCKET(config, "optrom4", generic_plain_slot, "mbee_pak", "mbp")); // pak2
+ optrom4.set_device_load(FUNC(mbee_state::pak_load<4U>));
+ optrom4.set_device_unload(FUNC(mbee_state::pak_unload<4U>));
+ generic_slot_device &optrom5(GENERIC_SOCKET(config, "optrom5", generic_plain_slot, "mbee_pak", "mbp")); // pak3
+ optrom5.set_device_load(FUNC(mbee_state::pak_load<5U>));
+ optrom5.set_device_unload(FUNC(mbee_state::pak_unload<5U>));
+ generic_slot_device &optrom6(GENERIC_SOCKET(config, "optrom6", generic_plain_slot, "mbee_pak", "mbp")); // pak4
+ optrom6.set_device_load(FUNC(mbee_state::pak_load<6U>));
+ optrom6.set_device_unload(FUNC(mbee_state::pak_unload<6U>));
+ generic_slot_device &optrom7(GENERIC_SOCKET(config, "optrom7", generic_plain_slot, "mbee_pak", "mbp")); // pak5
+ optrom7.set_device_load(FUNC(mbee_state::pak_load<7U>));
+ optrom7.set_device_unload(FUNC(mbee_state::pak_unload<7U>));
SOFTWARE_LIST(config, "cass_list").set_original("mbee_cass").set_filter("2");
SOFTWARE_LIST(config, "quik_list").set_original("mbee_quik").set_filter("2");
@@ -794,8 +812,8 @@ void mbee_state::mbee56(machine_config &config)
m_fdc->intrq_wr_callback().set(FUNC(mbee_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(mbee_state::fdc_drq_w));
m_fdc->enmf_rd_callback().set_constant(0);
- FLOPPY_CONNECTOR(config, m_floppy0, mbee_floppies, "525qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, m_floppy1, mbee_floppies, "525qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, m_floppy0, mbee_floppies, "35dd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, m_floppy1, mbee_floppies, "35dd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
SOFTWARE_LIST(config, "flop_list").set_original("mbee_flop").set_filter("1");
remove_carts(config);
@@ -824,24 +842,26 @@ void mbee_state::mbee128p(machine_config &config)
m_fdc->intrq_wr_callback().set(FUNC(mbee_state::fdc_intrq_w));
m_fdc->drq_wr_callback().set(FUNC(mbee_state::fdc_drq_w));
m_fdc->enmf_rd_callback().set_constant(0);
- FLOPPY_CONNECTOR(config, m_floppy0, mbee_floppies, "525qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, m_floppy1, mbee_floppies, "525qd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, m_floppy0, mbee_floppies, "35dd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
+ FLOPPY_CONNECTOR(config, m_floppy1, mbee_floppies, "35dd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
SOFTWARE_LIST(config, "flop_list").set_original("mbee_flop").set_filter("3");
remove_carts(config);
remove_quick(config);
}
+void mbee_state::mbeepp(machine_config &config)
+{
+ mbee128p(config);
+ SOFTWARE_LIST(config.replace(), "flop_list").set_original("mbee_flop").set_filter("2,3");
+}
+
void mbee_state::mbee256(machine_config &config)
{
mbee128p(config);
m_maincpu->set_addrmap(AS_PROGRAM, &mbee_state::mbee256_mem);
m_maincpu->set_addrmap(AS_IO, &mbee_state::mbee256_io);
- config.device_remove("fdc:0");
- config.device_remove("fdc:1");
- FLOPPY_CONNECTOR(config, m_floppy0, mbee_floppies, "35dd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, m_floppy1, mbee_floppies, "35dd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true);
TIMER(config, "newkb_timer").configure_periodic(FUNC(mbee_state::newkb_timer), attotime::from_hz(50));
SOFTWARE_LIST(config.replace(), "flop_list").set_original("mbee_flop").set_filter("4");
@@ -1154,4 +1174,4 @@ COMP( 1986, mbeeppc, mbee, 0, mbeeppc, mbee, mbee_state, init_mbeep
COMP( 1986, mbeett, mbee, 0, mbeett, mbee256, mbee_state, init_mbeett, "Microbee Systems", "Microbee Teleterm", MACHINE_SUPPORTS_SAVE )
COMP( 1986, mbee128p, mbee, 0, mbee128p, mbee128, mbee_state, init_mbee128p, "Microbee Systems", "Microbee 128k Premium", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
COMP( 1987, mbee256, mbee, 0, mbee256, mbee256, mbee_state, init_mbee256, "Microbee Systems", "Microbee 256TC", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-COMP( 2012, mbeepp, mbee, 0, mbee256, mbee128, mbee_state, init_mbeepp, "Microbee Systems", "Microbee Premium Plus", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+COMP( 2012, mbeepp, mbee, 0, mbeepp, mbee128, mbee_state, init_mbeepp, "Microbee Systems", "Microbee Premium Plus+", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/includes/mbee.h b/src/mame/includes/mbee.h
index 04e212d0791..8958ae2bb52 100644
--- a/src/mame/includes/mbee.h
+++ b/src/mame/includes/mbee.h
@@ -79,6 +79,7 @@ public:
void mbeeic(machine_config &config);
void mbeepc85(machine_config &config);
void mbee128p(machine_config &config);
+ void mbeepp(machine_config &config);
void remove_carts(machine_config &config);
void remove_quick(machine_config &config);
@@ -125,8 +126,10 @@ private:
uint32_t screen_update_mbee(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(newkb_timer);
image_init_result load_cart(device_image_interface &image, generic_slot_device *slot, u8);
+ void unload_cart(u8);
DECLARE_QUICKLOAD_LOAD_MEMBER(quickload_cb);
template <u8 T> DECLARE_DEVICE_IMAGE_LOAD_MEMBER(pak_load) { return load_cart(image, m_pak[T], T); }
+ template <u8 T> DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER(pak_unload) { unload_cart(T); }
WRITE_LINE_MEMBER(rtc_irq_w);
WRITE_LINE_MEMBER(fdc_intrq_w);
WRITE_LINE_MEMBER(fdc_drq_w);
diff --git a/src/mame/machine/mbee.cpp b/src/mame/machine/mbee.cpp
index e6278c42e81..a70c470c445 100644
--- a/src/mame/machine/mbee.cpp
+++ b/src/mame/machine/mbee.cpp
@@ -746,10 +746,6 @@ image_init_result mbee_state::load_cart(device_image_interface &image, generic_s
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Not a PAK rom");
slot->call_unload();
- if (m_pakdef)
- m_pak_extended[pak_index] = (m_p_pakdef[((pak_index+8)<<13)] == 0xff) ? false : true;
- else
- m_pak_extended[pak_index] = false;
return image_init_result::FAIL;
}
}
@@ -774,7 +770,6 @@ image_init_result mbee_state::load_cart(device_image_interface &image, generic_s
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Not a NET rom");
slot->call_unload();
- m_pak_extended[pak_index] = (m_netdef && (m_netdef->bytes() > 0x1000)) ? true : false;
return image_init_result::FAIL;
}
}
@@ -783,3 +778,16 @@ image_init_result mbee_state::load_cart(device_image_interface &image, generic_s
return image_init_result::PASS;
}
+void mbee_state::unload_cart(u8 pak_index)
+{
+ if (pak_index > 1)
+ {
+ if (m_pakdef)
+ m_pak_extended[pak_index] = (m_p_pakdef[((pak_index+8)<<13)] == 0xff) ? false : true;
+ else
+ m_pak_extended[pak_index] = false;
+ }
+ else
+ m_pak_extended[pak_index] = (m_netdef && (m_netdef->bytes() > 0x1000)) ? true : false;
+}
+