diff options
Diffstat (limited to 'src/devices/bus/a800/rom.h')
-rw-r--r-- | src/devices/bus/a800/rom.h | 189 |
1 files changed, 31 insertions, 158 deletions
diff --git a/src/devices/bus/a800/rom.h b/src/devices/bus/a800/rom.h index e48b4a4ed7c..8d6b551519a 100644 --- a/src/devices/bus/a800/rom.h +++ b/src/devices/bus/a800/rom.h @@ -1,229 +1,102 @@ // license:BSD-3-Clause -// copyright-holders:Fabio Priuli +// copyright-holders:Fabio Priuli, Angelo Salese + #ifndef MAME_BUS_A800_ROM_H #define MAME_BUS_A800_ROM_H #pragma once #include "a800_slot.h" +#include "machine/nvram.h" -// ======================> a800_rom_device - class a800_rom_device : public device_t, public device_a800_cart_interface { public: - // construction/destruction a800_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read_80xx(offs_t offset) override; + virtual void cart_map(address_map &map) override; + virtual std::tuple<int, int> get_initial_rd_state() override { return std::make_tuple(0, 1); } protected: a800_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides virtual void device_start() override; virtual void device_reset() override; }; - -// ======================> a800_rom_bbsb_device - -class a800_rom_bbsb_device : public a800_rom_device +class a800_rom_right_device : public a800_rom_device { public: - // construction/destruction - a800_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + a800_rom_right_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read_80xx(offs_t offset) override; - virtual void write_80xx(offs_t offset, uint8_t data) override; + virtual void cart_map(address_map &map) override; + virtual std::tuple<int, int> get_initial_rd_state() override { return std::make_tuple(1, 0); } protected: - // device-level overrides virtual void device_start() override; virtual void device_reset() override; - - int m_banks[2]; }; - -// ======================> a800_rom_williams_device - -class a800_rom_williams_device : public a800_rom_device +class a800_rom_16kb_device : public a800_rom_device { public: - // construction/destruction - a800_rom_williams_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + a800_rom_16kb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read_80xx(offs_t offset) override; - virtual void write_d5xx(offs_t offset, uint8_t data) override; + virtual void cart_map(address_map &map) override; + virtual std::tuple<int, int> get_initial_rd_state() override { return std::make_tuple(1, 1); } protected: - // device-level overrides virtual void device_start() override; virtual void device_reset() override; - - int m_bank; }; -// ======================> a800_rom_express_device - -class a800_rom_express_device : public a800_rom_device -{ -public: - // construction/destruction - a800_rom_express_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual uint8_t read_80xx(offs_t offset) override; - virtual void write_d5xx(offs_t offset, uint8_t data) override; - -protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - int m_bank; -}; - - -// ======================> a800_rom_blizzard_device - -class a800_rom_blizzard_device : public a800_rom_device -{ -public: - // construction/destruction - a800_rom_blizzard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual uint8_t read_80xx(offs_t offset) override; - -protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; -}; - - -// ======================> a800_rom_turbo_device - -class a800_rom_turbo_device : public a800_rom_device +class xegs_rom_device : public a800_rom_device { public: - // construction/destruction - a800_rom_turbo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + xegs_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read_80xx(offs_t offset) override; - virtual void write_d5xx(offs_t offset, uint8_t data) override; + virtual void cart_map(address_map &map) override; + virtual void cctl_map(address_map &map) override; + virtual std::tuple<int, int> get_initial_rd_state() override { return std::make_tuple(1, 1); } protected: - // device-level overrides virtual void device_start() override; virtual void device_reset() override; int m_bank; }; - -// ======================> a800_rom_telelink2_device - -class a800_rom_telelink2_device : public a800_rom_device -{ -public: - // construction/destruction - a800_rom_telelink2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual uint8_t read_80xx(offs_t offset) override; - virtual void write_80xx(offs_t offset, uint8_t data) override; - virtual uint8_t read_d5xx(offs_t offset) override; - virtual void write_d5xx(offs_t offset, uint8_t data) override; -}; - - -// ======================> a800_rom_microcalc_device - -class a800_rom_microcalc_device : public a800_rom_device +class a5200_rom_device : public device_t, + public device_a5200_cart_interface { public: - // construction/destruction - a800_rom_microcalc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + a5200_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read_80xx(offs_t offset) override; - virtual void write_d5xx(offs_t offset, uint8_t data) override; + virtual void cart_map(address_map &map) override; protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - int m_bank; -}; - - -// ======================> xegs_rom_device - -class xegs_rom_device : public a800_rom_device -{ -public: - // construction/destruction - xegs_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + a5200_rom_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - // device-level overrides virtual void device_start() override; - virtual void device_reset() override; - - virtual uint8_t read_80xx(offs_t offset) override; - virtual void write_d5xx(offs_t offset, uint8_t data) override; - -protected: - int m_bank; }; - -// ======================> a5200_rom_2chips_device - -class a5200_rom_2chips_device : public a800_rom_device +class a5200_rom_2chips_device : public a5200_rom_device { public: - // construction/destruction a5200_rom_2chips_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read_80xx(offs_t offset) override; + virtual void cart_map(address_map &map) override; }; - -// ======================> a5200_rom_bbsb_device - -class a5200_rom_bbsb_device : public a800_rom_device -{ -public: - // construction/destruction - a5200_rom_bbsb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual uint8_t read_80xx(offs_t offset) override; - virtual void write_80xx(offs_t offset, uint8_t data) override; - -protected: - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - int m_banks[2]; -}; - - - -// device type definition -DECLARE_DEVICE_TYPE(A800_ROM, a800_rom_device) -DECLARE_DEVICE_TYPE(A800_ROM_BBSB, a800_rom_bbsb_device) -DECLARE_DEVICE_TYPE(A800_ROM_WILLIAMS, a800_rom_williams_device) -DECLARE_DEVICE_TYPE(A800_ROM_EXPRESS, a800_rom_express_device) -DECLARE_DEVICE_TYPE(A800_ROM_TURBO, a800_rom_turbo_device) -DECLARE_DEVICE_TYPE(A800_ROM_TELELINK2, a800_rom_telelink2_device) -DECLARE_DEVICE_TYPE(A800_ROM_MICROCALC, a800_rom_microcalc_device) -DECLARE_DEVICE_TYPE(XEGS_ROM, xegs_rom_device) -DECLARE_DEVICE_TYPE(A5200_ROM_2CHIPS, a5200_rom_2chips_device) -DECLARE_DEVICE_TYPE(A5200_ROM_BBSB, a5200_rom_bbsb_device) +DECLARE_DEVICE_TYPE(A800_ROM, a800_rom_device) +DECLARE_DEVICE_TYPE(A800_ROM_RIGHT, a800_rom_right_device) +DECLARE_DEVICE_TYPE(A800_ROM_16KB, a800_rom_16kb_device) +DECLARE_DEVICE_TYPE(XEGS_ROM, xegs_rom_device) +DECLARE_DEVICE_TYPE(A5200_ROM, a5200_rom_device) +DECLARE_DEVICE_TYPE(A5200_ROM_2CHIPS, a5200_rom_2chips_device) #endif // MAME_BUS_A800_ROM_H |