summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/spectrum/exp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/spectrum/exp.cpp')
-rw-r--r--src/devices/bus/spectrum/exp.cpp97
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);
}