diff options
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 |
commit | 2b567055124a3a3de8bfa545d188be6d13a35187 (patch) | |
tree | 53ce89d2e4e8b892f4fb5694433afd718ba94bb0 | |
parent | 73c670b375eff0e5fb1720ea703a56b2c2f26014 (diff) |
mbee: make floppy sw-items show up by default. Fixed compatibility for mbeepp.
-rw-r--r-- | hash/mbee_flop.xml | 2 | ||||
-rw-r--r-- | src/mame/drivers/mbee.cpp | 56 | ||||
-rw-r--r-- | src/mame/includes/mbee.h | 3 | ||||
-rw-r--r-- | src/mame/machine/mbee.cpp | 18 |
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; +} + |