summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/a800/rom.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/a800/rom.h')
-rw-r--r--src/devices/bus/a800/rom.h189
1 files changed, 31 insertions, 158 deletions
diff --git a/src/devices/bus/a800/rom.h b/src/devices/bus/a800/rom.h
index 9ba329b3113..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 DECLARE_READ8_MEMBER(read_80xx) 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 DECLARE_READ8_MEMBER(read_80xx) override;
- virtual DECLARE_WRITE8_MEMBER(write_80xx) 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 DECLARE_READ8_MEMBER(read_80xx) override;
- virtual DECLARE_WRITE8_MEMBER(write_d5xx) 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 DECLARE_READ8_MEMBER(read_80xx) override;
- virtual DECLARE_WRITE8_MEMBER(write_d5xx) 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 DECLARE_READ8_MEMBER(read_80xx) 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 DECLARE_READ8_MEMBER(read_80xx) override;
- virtual DECLARE_WRITE8_MEMBER(write_d5xx) 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 DECLARE_READ8_MEMBER(read_80xx) override;
- virtual DECLARE_WRITE8_MEMBER(write_80xx) override;
- virtual DECLARE_READ8_MEMBER(read_d5xx) override;
- virtual DECLARE_WRITE8_MEMBER(write_d5xx) 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 DECLARE_READ8_MEMBER(read_80xx) override;
- virtual DECLARE_WRITE8_MEMBER(write_d5xx) 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 DECLARE_READ8_MEMBER(read_80xx) override;
- virtual DECLARE_WRITE8_MEMBER(write_d5xx) 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 DECLARE_READ8_MEMBER(read_80xx) 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 DECLARE_READ8_MEMBER(read_80xx) override;
- virtual DECLARE_WRITE8_MEMBER(write_80xx) 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