diff options
Diffstat (limited to 'src/devices/bus/gio64/gio64.cpp')
-rw-r--r-- | src/devices/bus/gio64/gio64.cpp | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/src/devices/bus/gio64/gio64.cpp b/src/devices/bus/gio64/gio64.cpp deleted file mode 100644 index 179debbc658..00000000000 --- a/src/devices/bus/gio64/gio64.cpp +++ /dev/null @@ -1,182 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Ryan Holtz -/*************************************************************************** - - gio64.cpp - SGI GIO64 slot bus and GIO64 device emulation - -***************************************************************************/ - -#include "emu.h" - -// Display boards -#include "newport.h" - -#include "gio64.h" - -void gio64_cards(device_slot_interface &device) -{ - device.option_add("xl8", GIO64_XL8); /* SGI 8-bit XL board */ - device.option_add("xl24", GIO64_XL24); /* SGI 24-bit XL board */ -} - -DEFINE_DEVICE_TYPE(GIO64_SLOT, gio64_slot_device, "gio64_slot", "SGI GIO64 Slot") - -gio64_slot_device::gio64_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : gio64_slot_device(mconfig, GIO64_SLOT, tag, owner, clock) -{ -} - -gio64_slot_device::gio64_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, type, tag, owner, clock) - , device_slot_interface(mconfig, *this) - , m_gio64(*this, finder_base::DUMMY_TAG) -{ -} - -void gio64_slot_device::device_validity_check(validity_checker &valid) const -{ - device_t *const card(get_card_device()); - if (card && !dynamic_cast<device_gio64_card_interface *>(card)) - osd_printf_error("Card device %s (%s) does not implement device_gio64_card_interface\n", card->tag(), card->name()); -} - -void gio64_slot_device::device_resolve_objects() -{ - device_gio64_card_interface *const gio64_card(dynamic_cast<device_gio64_card_interface *>(get_card_device())); - if (gio64_card) - gio64_card->set_gio64(m_gio64, tag()); -} - -void gio64_slot_device::device_start() -{ - device_t *const card(get_card_device()); - if (card && !dynamic_cast<device_gio64_card_interface *>(card)) - throw emu_fatalerror("gio64_slot_device: card device %s (%s) does not implement device_gio64_card_interface\n", card->tag(), card->name()); -} - - -DEFINE_DEVICE_TYPE(GIO64, gio64_device, "gio64", "SGI GIO64 Bus") - -device_memory_interface::space_config_vector gio64_device::memory_space_config() const -{ - return space_config_vector { - std::make_pair(0, &m_space_config) - }; -} - -gio64_device::gio64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : gio64_device(mconfig, GIO64, tag, owner, clock) -{ -} - -gio64_device::gio64_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, type, tag, owner, clock) - , device_memory_interface(mconfig, *this) - , m_space_config("GIO64 Space", ENDIANNESS_BIG, 64, 32, 0, address_map_constructor()) - , m_maincpu(*this, finder_base::DUMMY_TAG) - , m_hpc3(*this, finder_base::DUMMY_TAG) -{ -} - -void gio64_device::device_resolve_objects() -{ -} - -void gio64_device::device_start() -{ - std::fill(std::begin(m_device_list), std::end(m_device_list), nullptr); - - m_space = &space(0); - m_space->install_readwrite_handler(0x00000000, 0x003fffff, read64_delegate(FUNC(gio64_device::no_gfx_r), this), write64_delegate(FUNC(gio64_device::no_gfx_w), this)); - m_space->install_readwrite_handler(0x00400000, 0x005fffff, read64_delegate(FUNC(gio64_device::no_exp0_r), this), write64_delegate(FUNC(gio64_device::no_exp0_w), this)); - m_space->install_readwrite_handler(0x00600000, 0x009fffff, read64_delegate(FUNC(gio64_device::no_exp1_r), this), write64_delegate(FUNC(gio64_device::no_exp1_w), this)); -} - -READ64_MEMBER(gio64_device::no_gfx_r) { return ~0ULL; } -READ64_MEMBER(gio64_device::no_exp0_r) { return ~0ULL; } -READ64_MEMBER(gio64_device::no_exp1_r) { return ~0ULL; } -WRITE64_MEMBER(gio64_device::no_gfx_w) { } -WRITE64_MEMBER(gio64_device::no_exp0_w) { } -WRITE64_MEMBER(gio64_device::no_exp1_w) { } - -READ64_MEMBER(gio64_device::read) -{ - return m_space->read_qword(offset << 3, mem_mask); -} - -WRITE64_MEMBER(gio64_device::write) -{ - m_space->write_qword(offset << 3, data, mem_mask); -} - -device_gio64_card_interface *gio64_device::get_gio64_card(int slot) -{ - if (slot < 0) - { - return nullptr; - } - - if (m_device_list[slot]) - { - return m_device_list[slot]; - } - - return nullptr; -} - -void gio64_device::add_gio64_card(device_gio64_card_interface::gio64_slot_type_t slot_type, device_gio64_card_interface *card) -{ - m_device_list[slot_type] = card; - card->install_device(); -} - - - -device_gio64_card_interface::device_gio64_card_interface(const machine_config &mconfig, device_t &device) - : device_slot_card_interface(mconfig, device) - , m_gio64(nullptr) - , m_gio64_slottag(nullptr) - , m_slot_type(GIO64_SLOT_COUNT) -{ -} - -device_gio64_card_interface::~device_gio64_card_interface() -{ -} - -void device_gio64_card_interface::interface_validity_check(validity_checker &valid) const -{ -} - -void device_gio64_card_interface::interface_pre_start() -{ - device_slot_card_interface::interface_pre_start(); - - if (!m_gio64) - { - fatalerror("Can't find SGI GIO64 device\n"); - } - - if (GIO64_SLOT_COUNT == m_slot_type) - { - if (!m_gio64->started()) - throw device_missing_dependencies(); - - if (strcmp(m_gio64_slottag, ":gio64_gfx") == 0) - m_slot_type = GIO64_SLOT_GFX; - else if (strcmp(m_gio64_slottag, ":gio64_exp0") == 0) - m_slot_type = GIO64_SLOT_EXP0; - else if (strcmp(m_gio64_slottag, ":gio64_exp1") == 0) - m_slot_type = GIO64_SLOT_EXP1; - else - fatalerror("Slot %s incorrectly named for SGI GIO64 graphics slot\n", m_gio64_slottag); - - m_gio64->add_gio64_card(m_slot_type, this); - } -} - -void device_gio64_card_interface::set_gio64(gio64_device *gio64, const char *slottag) -{ - m_gio64 = gio64; - m_gio64_slottag = slottag; -} |