1 // license:BSD-3-Clause 2 // copyright-holders:Curt Coder 3 /********************************************************************** 4 5 Commodore 1700/1750/1764 RAM Expansion Unit emulation 6 7 **********************************************************************/ 8 9 #ifndef MAME_BUS_C64_REU_H 10 #define MAME_BUS_C64_REU_H 11 12 #pragma once 13 14 15 #include "bus/generic/slot.h" 16 #include "bus/generic/carts.h" 17 #include "exp.h" 18 #include "machine/mos8726.h" 19 20 21 22 //************************************************************************** 23 // TYPE DEFINITIONS 24 //************************************************************************** 25 26 // ======================> c64_reu_cartridge_device 27 28 class c64_reu_cartridge_device : public device_t, 29 public device_c64_expansion_card_interface 30 { 31 protected: 32 enum 33 { 34 TYPE_1700, 35 TYPE_1750, 36 TYPE_1764 37 }; 38 39 // construction/destruction 40 c64_reu_cartridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t variant, int jp1, size_t ram_size); 41 42 // device-level overrides 43 virtual void device_start() override; 44 virtual void device_reset() override; 45 46 // optional information overrides 47 virtual void device_add_mconfig(machine_config &config) override; 48 49 // device_c64_expansion_card_interface overrides 50 virtual uint8_t c64_cd_r(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) override; 51 virtual void c64_cd_w(offs_t offset, uint8_t data, int sphi2, int ba, int roml, int romh, int io1, int io2) override; 52 53 required_device<mos8726_device> m_dmac; 54 required_device<generic_slot_device> m_eprom; 55 optional_shared_ptr<uint8_t> m_ram; 56 57 int m_variant; 58 int m_jp1; 59 size_t m_ram_size; 60 }; 61 62 63 // ======================> c64_reu1700_cartridge_device 64 65 class c64_reu1700_cartridge_device : public c64_reu_cartridge_device 66 { 67 public: 68 // construction/destruction 69 c64_reu1700_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 70 }; 71 72 73 // ======================> c64_reu1750_cartridge_device 74 75 class c64_reu1750_cartridge_device : public c64_reu_cartridge_device 76 { 77 public: 78 // construction/destruction 79 c64_reu1750_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 80 }; 81 82 // ======================> c64_reu1700_cartridge_device 83 84 class c64_reu1764_cartridge_device : public c64_reu_cartridge_device 85 { 86 public: 87 // construction/destruction 88 c64_reu1764_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 89 }; 90 91 92 // device type definition 93 DECLARE_DEVICE_TYPE(C64_REU1700, c64_reu1700_cartridge_device) 94 DECLARE_DEVICE_TYPE(C64_REU1750, c64_reu1750_cartridge_device) 95 DECLARE_DEVICE_TYPE(C64_REU1764, c64_reu1764_cartridge_device) 96 97 98 #endif // MAME_BUS_C64_REU_H 99