summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/a800/oss.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/a800/oss.h')
-rw-r--r--src/devices/bus/a800/oss.h77
1 files changed, 32 insertions, 45 deletions
diff --git a/src/devices/bus/a800/oss.h b/src/devices/bus/a800/oss.h
index 367bd4f8f8d..c8511d62abc 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;
+ virtual void cctl_map(address_map &map) override;
+ 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;
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;
+ virtual void cctl_map(address_map &map) override;
+ 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_add_mconfig(machine_config &config) override;
- int m_bank;
-};
+ void bankdev_map(address_map &map);
+ 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;
};
-// ======================> 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