diff options
Diffstat (limited to 'src/devices/bus/a800/oss.h')
-rw-r--r-- | src/devices/bus/a800/oss.h | 87 |
1 files changed, 37 insertions, 50 deletions
diff --git a/src/devices/bus/a800/oss.h b/src/devices/bus/a800/oss.h index 367bd4f8f8d..0af143028b6 100644 --- a/src/devices/bus/a800/oss.h +++ b/src/devices/bus/a800/oss.h @@ -1,99 +1,86 @@ // license:BSD-3-Clause -// copyright-holders:Fabio Priuli +// copyright-holders:Fabio Priuli, Angelo Salese #ifndef MAME_BUS_A800_OSS_H #define MAME_BUS_A800_OSS_H #pragma once #include "rom.h" +#include "machine/bankdev.h" -// ======================> a800_rom_oss8k_device - class a800_rom_oss8k_device : public a800_rom_device { public: - // construction/destruction a800_rom_oss8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + a800_rom_oss8k_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - virtual DECLARE_READ8_MEMBER(read_80xx) override; - virtual DECLARE_WRITE8_MEMBER(write_d5xx) override; + virtual void cart_map(address_map &map) override ATTR_COLD; + virtual void cctl_map(address_map &map) override ATTR_COLD; + virtual std::tuple<int, int> get_initial_rd_state() override { return std::make_tuple(0, 1); } protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; int m_bank; + virtual void bank_config_access(offs_t offset); + u8 rom_bank_r(offs_t offset); + void rom_bank_w(offs_t offset, u8 data); }; -// ======================> a800_rom_oss34_device - -class a800_rom_oss34_device : public a800_rom_device +class a800_rom_oss043m_device : public a800_rom_device { public: - // construction/destruction - a800_rom_oss34_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + a800_rom_oss043m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + a800_rom_oss043m_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - virtual DECLARE_READ8_MEMBER(read_80xx) override; - virtual DECLARE_WRITE8_MEMBER(write_d5xx) override; + virtual void cart_map(address_map &map) override ATTR_COLD; + virtual void cctl_map(address_map &map) override ATTR_COLD; + virtual std::tuple<int, int> get_initial_rd_state() override { return std::make_tuple(0, 1); } protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; + virtual void device_add_mconfig(machine_config &config) override ATTR_COLD; - int m_bank; -}; + void bankdev_map(address_map &map) ATTR_COLD; + void bank_config_access(offs_t offset); + u8 rom_bank_r(offs_t offset); + void rom_bank_w(offs_t offset, u8 data); + required_device<address_map_bank_device> m_bankdev; + + u16 m_bank_base1, m_bank_base2; +}; -// ======================> a800_rom_oss43_device -class a800_rom_oss43_device : public a800_rom_device +class a800_rom_oss034m_device : public a800_rom_oss043m_device { public: - // construction/destruction - a800_rom_oss43_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual DECLARE_READ8_MEMBER(read_80xx) override; - virtual DECLARE_WRITE8_MEMBER(write_d5xx) override; + a800_rom_oss034m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - int m_bank; + virtual void device_start() override ATTR_COLD; }; -// ======================> a800_rom_oss91_device - -class a800_rom_oss91_device : public a800_rom_device +class a800_rom_oss091m_device : public a800_rom_oss8k_device { public: - // construction/destruction - a800_rom_oss91_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual DECLARE_READ8_MEMBER(read_80xx) override; - virtual DECLARE_WRITE8_MEMBER(write_d5xx) override; + a800_rom_oss091m_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - int m_bank; + virtual void bank_config_access(offs_t offset) override; }; -// device type definition DECLARE_DEVICE_TYPE(A800_ROM_OSS8K, a800_rom_oss8k_device) -DECLARE_DEVICE_TYPE(A800_ROM_OSS34, a800_rom_oss34_device) -DECLARE_DEVICE_TYPE(A800_ROM_OSS43, a800_rom_oss43_device) -DECLARE_DEVICE_TYPE(A800_ROM_OSS91, a800_rom_oss91_device) +DECLARE_DEVICE_TYPE(A800_ROM_OSS34, a800_rom_oss034m_device) +DECLARE_DEVICE_TYPE(A800_ROM_OSS43, a800_rom_oss043m_device) +DECLARE_DEVICE_TYPE(A800_ROM_OSS91, a800_rom_oss091m_device) #endif // MAME_BUS_A800_OSS_H |