diff options
Diffstat (limited to 'src/devices/bus/gio64/gio64.h')
-rw-r--r-- | src/devices/bus/gio64/gio64.h | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/src/devices/bus/gio64/gio64.h b/src/devices/bus/gio64/gio64.h deleted file mode 100644 index 9cbea5a3ab1..00000000000 --- a/src/devices/bus/gio64/gio64.h +++ /dev/null @@ -1,165 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Ryan Holtz -/*************************************************************************** - - gio64.h - SGI GIO64 slot bus and GIO64 device emulation - -***************************************************************************/ - -#ifndef MAME_BUS_GIO64_GIO64_H -#define MAME_BUS_GIO64_GIO64_H - -#pragma once - -#include "cpu/mips/r4000.h" -#include "machine/hpc3.h" - -class gio64_device; - -class gio64_slot_device : public device_t, public device_slot_interface -{ -public: - // construction/destruction - template <typename T, typename U> - gio64_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&gio64_tag, U &&opts, const char *dflt) - : gio64_slot_device(mconfig, tag, owner, (uint32_t)0) - { - option_reset(); - opts(*this); - set_default_option(dflt); - set_fixed(false); - m_gio64.set_tag(std::forward<T>(gio64_tag)); - } - gio64_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - -protected: - gio64_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - - // device-level overrides - virtual void device_validity_check(validity_checker &valid) const override; - virtual void device_resolve_objects() override; - virtual void device_start() override; - - // configuration - required_device<gio64_device> m_gio64; - - DECLARE_READ32_MEMBER(timeout_r); - DECLARE_WRITE32_MEMBER(timeout_w); -}; - -DECLARE_DEVICE_TYPE(GIO64_SLOT, gio64_slot_device) - - -// class representing interface-specific live GIO64 card -class device_gio64_card_interface : public device_slot_card_interface -{ - friend class gio64_device; -public: - // construction/destruction - virtual ~device_gio64_card_interface(); - - // inline configuration - void set_gio64(gio64_device *gio64, const char *slottag); - - virtual void mem_map(address_map &map) = 0; - -protected: - device_gio64_card_interface(const machine_config &mconfig, device_t &device); - - enum gio64_slot_type_t : uint32_t - { - GIO64_SLOT_GFX, - GIO64_SLOT_EXP0, - GIO64_SLOT_EXP1, - - GIO64_SLOT_COUNT - }; - - virtual void interface_validity_check(validity_checker &valid) const override; - virtual void interface_pre_start() override; - virtual void install_device() = 0; - - gio64_device &gio64() { assert(m_gio64); return *m_gio64; } - - gio64_device *m_gio64; - const char *m_gio64_slottag; - gio64_slot_type_t m_slot_type; -}; - - -class gio64_device : public device_t, - public device_memory_interface -{ - friend class device_gio64_card_interface; -public: - // construction/destruction - template <typename T, typename U> - gio64_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu_tag, U &&hpc3_tag) - : gio64_device(mconfig, tag, owner, (uint32_t)0) - { - set_cpu_tag(std::forward<T>(cpu_tag)); - set_hpc3_tag(std::forward<U>(hpc3_tag)); - } - - gio64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - // inline configuration - template <typename T> void set_cpu_tag(T &&tag) { m_maincpu.set_tag(std::forward<T>(tag)); } - template <typename T> void set_hpc3_tag(T &&tag) { m_hpc3.set_tag(std::forward<T>(tag)); } - - virtual space_config_vector memory_space_config() const override; - - const address_space_config m_space_config; - - void add_gio64_card(device_gio64_card_interface::gio64_slot_type_t slot_type, device_gio64_card_interface *card); - device_gio64_card_interface *get_gio64_card(int slot); - - template<typename T> void install_graphics(T &device, void (T::*map)(class address_map &map), uint64_t unitmask = ~u64(0)) - { - m_space->install_device(0x000000, 0x3fffff, device, map, unitmask); - } - - template<typename T> void install_expansion(int index, T &device, void (T::*map)(class address_map &map), uint64_t unitmask = ~u64(0)) - { - if (index == 0) - m_space->install_device(0x400000, 0x5fffff, device, map, unitmask); - else if (index == 1) - m_space->install_device(0x600000, 0x9fffff, device, map, unitmask); - else - fatalerror("Invalid SGI GIO64 expansion slot index: %d\n", index); - } - - hpc3_base_device* get_hpc3() { return m_hpc3.target(); } - - DECLARE_READ64_MEMBER(read); - DECLARE_WRITE64_MEMBER(write); - -protected: - gio64_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - - // device-level overrides - virtual void device_resolve_objects() override; - virtual void device_start() override; - - // internal state - required_device<r4000_base_device> m_maincpu; - required_device<hpc3_base_device> m_hpc3; - address_space *m_space; - - device_gio64_card_interface *m_device_list[3]; - -private: - DECLARE_READ64_MEMBER(no_gfx_r); - DECLARE_READ64_MEMBER(no_exp0_r); - DECLARE_READ64_MEMBER(no_exp1_r); - DECLARE_WRITE64_MEMBER(no_gfx_w); - DECLARE_WRITE64_MEMBER(no_exp0_w); - DECLARE_WRITE64_MEMBER(no_exp1_w); -}; - -DECLARE_DEVICE_TYPE(GIO64, gio64_device) - - -void gio64_cards(device_slot_interface &device); - -#endif // MAME_BUS_GIO_GIO_H |