diff options
Diffstat (limited to 'src/devices/bus/spectrum/exp.cpp')
-rw-r--r-- | src/devices/bus/spectrum/exp.cpp | 97 |
1 files changed, 59 insertions, 38 deletions
diff --git a/src/devices/bus/spectrum/exp.cpp b/src/devices/bus/spectrum/exp.cpp index 6092f87d9ce..22d0a5665e5 100644 --- a/src/devices/bus/spectrum/exp.cpp +++ b/src/devices/bus/spectrum/exp.cpp @@ -25,8 +25,8 @@ DEFINE_DEVICE_TYPE(SPECTRUM_EXPANSION_SLOT, spectrum_expansion_slot_device, "spe // device_spectrum_expansion_interface - constructor //------------------------------------------------- -device_spectrum_expansion_interface::device_spectrum_expansion_interface(const machine_config &mconfig, device_t &device) - : device_slot_card_interface(mconfig, device) +device_spectrum_expansion_interface::device_spectrum_expansion_interface(const machine_config &mconfig, device_t &device) : + device_interface(device, "spectrumexp") { m_slot = dynamic_cast<spectrum_expansion_slot_device *>(device.owner()); } @@ -42,54 +42,29 @@ device_spectrum_expansion_interface::device_spectrum_expansion_interface(const m spectrum_expansion_slot_device::spectrum_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SPECTRUM_EXPANSION_SLOT, tag, owner, clock), - device_slot_interface(mconfig, *this), + device_single_card_slot_interface<device_spectrum_expansion_interface>(mconfig, *this), m_card(nullptr), m_irq_handler(*this), - m_nmi_handler(*this) + m_nmi_handler(*this), + m_fb_r_handler(*this, 0xff) { } //------------------------------------------------- -// device_validity_check - device-specific checks -//------------------------------------------------- - -void spectrum_expansion_slot_device::device_validity_check(validity_checker &valid) const -{ - device_t *const card(get_card_device()); - if (card && !dynamic_cast<device_spectrum_expansion_interface *>(card)) - osd_printf_error("Card device %s (%s) does not implement device_spectrum_expansion_interface\n", card->tag(), card->name()); -} - -//------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- void spectrum_expansion_slot_device::device_start() { - device_t *const card_device(get_card_device()); - m_card = dynamic_cast<device_spectrum_expansion_interface *>(card_device); - if (card_device && !m_card) - throw emu_fatalerror("spectrum_expansion_slot_device: card device %s (%s) does not implement device_spectrum_expansion_interface\n", card_device->tag(), card_device->name()); - - // resolve callbacks - m_irq_handler.resolve_safe(); - m_nmi_handler.resolve_safe(); -} - -//------------------------------------------------- -// device_reset - device-specific reset -//------------------------------------------------- - -void spectrum_expansion_slot_device::device_reset() -{ + m_card = get_card_device(); } //------------------------------------------------- // romcs //------------------------------------------------- -READ_LINE_MEMBER(spectrum_expansion_slot_device::romcs) +bool spectrum_expansion_slot_device::romcs() { if (m_card) return m_card->romcs(); @@ -134,7 +109,7 @@ uint8_t spectrum_expansion_slot_device::iorq_r(offs_t offset) if (m_card) return m_card->iorq_r(offset); else - return 0xff; + return offset & 1 ? fb_r() : 0xff; } //------------------------------------------------- @@ -178,22 +153,33 @@ void spectrum_expansion_slot_device::mreq_w(offs_t offset, uint8_t data) // slot devices #include "beta.h" #include "beta128.h" -//#include "disciple.h" +#include "d40.h" #include "intf1.h" #include "intf2.h" +#include "floppyone.h" #include "fuller.h" #include "kempjoy.h" +#include "kempdisc.h" +#include "logitek.h" +#include "lprint.h" #include "melodik.h" #include "mface.h" +#include "mgt.h" #include "mikroplus.h" +#include "mpoker.h" +#include "musicmachine.h" #include "opus.h" #include "plus2test.h" -//#include "plusd.h" #include "protek.h" +#include "sdi.h" +#include "sixword.h" #include "specdrum.h" +#include "speccydos.h" +#include "specmate.h" #include "uslot.h" #include "usource.h" #include "uspeech.h" +#include "vtx5000.h" #include "wafa.h" void spectrum_expansion_devices(device_slot_interface &device) @@ -201,46 +187,81 @@ void spectrum_expansion_devices(device_slot_interface &device) device.option_add("betav2", SPECTRUM_BETAV2); device.option_add("betav3", SPECTRUM_BETAV3); device.option_add("betaplus", SPECTRUM_BETAPLUS); + device.option_add("betaclone", SPECTRUM_BETACLONE); + device.option_add("betacbi", SPECTRUM_BETACBI); + device.option_add("gamma", SPECTRUM_GAMMA); device.option_add("beta128", SPECTRUM_BETA128); - //device.option_add("disciple", SPECTRUM_DISCIPLE); + device.option_add("d40", SPECTRUM_D40); + device.option_add("d80", SPECTRUM_D80); + device.option_add("d80v2", SPECTRUM_D80V2); + device.option_add("disciple", SPECTRUM_DISCIPLE); device.option_add("intf1", SPECTRUM_INTF1); device.option_add("intf2", SPECTRUM_INTF2); + device.option_add("flpone", SPECTRUM_FLPONE); device.option_add("fuller", SPECTRUM_FULLER); device.option_add("kempjoy", SPECTRUM_KEMPJOY); + device.option_add("kempdisc", SPECTRUM_KEMPDISC); + device.option_add("kempcentrs", SPECTRUM_KEMPCENTRS); + device.option_add("kempcentref", SPECTRUM_KEMPCENTREF); + device.option_add("kempcentreu", SPECTRUM_KEMPCENTREU); + device.option_add("lprint", SPECTRUM_LPRINT); + device.option_add("lprint3", SPECTRUM_LPRINT3); device.option_add("melodik", SPECTRUM_MELODIK); + device.option_add("mface1v1", SPECTRUM_MFACE1V1); + device.option_add("mface1v2", SPECTRUM_MFACE1V2); + device.option_add("mface1v3", SPECTRUM_MFACE1V3); device.option_add("mface1", SPECTRUM_MFACE1); + device.option_add("mface128v1", SPECTRUM_MFACE128V1); device.option_add("mface128", SPECTRUM_MFACE128); device.option_add("mikroplus", SPECTRUM_MIKROPLUS); + device.option_add("mpoker", SPECTRUM_MPOKER); device.option_add("mprint", SPECTRUM_MPRINT); + device.option_add("musicmachine", SPECTRUM_MUSICMACHINE); device.option_add("opus", SPECTRUM_OPUS); - //device.option_add("plusd", SPECTRUM_PLUSD); + device.option_add("plusd", SPECTRUM_PLUSD); + device.option_add("proceed", SPECTRUM_PROCEED); device.option_add("protek", SPECTRUM_PROTEK); + device.option_add("sdi", SPECTRUM_SDI); + device.option_add("speccydos", SPECTRUM_SPECCYDOS); + device.option_add("spdos", SPECTRUM_SPDOS); device.option_add("specdrum", SPECTRUM_SPECDRUM); + device.option_add("specmate", SPECTRUM_SPECMATE); + device.option_add("swiftdisc", SPECTRUM_SWIFTDISC); + device.option_add("swiftdisc2", SPECTRUM_SWIFTDISC2); device.option_add("uslot", SPECTRUM_USLOT); device.option_add("usource", SPECTRUM_USOURCE); device.option_add("uspeech", SPECTRUM_USPEECH); + device.option_add("vtx5000", SPECTRUM_VTX5000); device.option_add("wafadrive", SPECTRUM_WAFA); } void spec128_expansion_devices(device_slot_interface &device) { device.option_add("beta128", SPECTRUM_BETA128); - //device.option_add("disciple", SPECTRUM_DISCIPLE); + device.option_add("disciple", SPECTRUM_DISCIPLE); device.option_add("intf1", SPECTRUM_INTF1); device.option_add("intf2", SPECTRUM_INTF2); device.option_add("kempjoy", SPECTRUM_KEMPJOY); + device.option_add("mface128v1", SPECTRUM_MFACE128V1); device.option_add("mface128", SPECTRUM_MFACE128); device.option_add("mikroplus", SPECTRUM_MIKROPLUS); device.option_add("mprint", SPECTRUM_MPRINT); + device.option_add("musicmachine", SPECTRUM_MUSICMACHINE); device.option_add("opus", SPECTRUM_OPUS); + device.option_add("plusd", SPECTRUM_PLUSD); device.option_add("plus2test", SPECTRUM_PLUS2TEST); device.option_add("protek", SPECTRUM_PROTEK); + device.option_add("speccydos", SPECTRUM_SPECCYDOS); device.option_add("specdrum", SPECTRUM_SPECDRUM); + device.option_add("swiftdisc", SPECTRUM_SWIFTDISC); + device.option_add("swiftdisc2", SPECTRUM_SWIFTDISC2); device.option_add("wafadrive", SPECTRUM_WAFA); } void specpls3_expansion_devices(device_slot_interface &device) { + device.option_add("kempjoy", SPECTRUM_KEMPJOY); device.option_add("mface3", SPECTRUM_MFACE3); + device.option_add("musicmachine", SPECTRUM_MUSICMACHINE); } |