1 // license:GPL-2.0+
2 // copyright-holders:Dirk Best
3 /***************************************************************************
4 
5     ACT Apricot RAM Expansions
6 
7 ***************************************************************************/
8 
9 #ifndef MAME_BUS_APRICOT_RAM_H
10 #define MAME_BUS_APRICOT_RAM_H
11 
12 #pragma once
13 
14 #include "expansion.h"
15 
16 
17 //**************************************************************************
18 //  TYPE DEFINITIONS
19 //**************************************************************************
20 
21 
22 // ======================> apricot_256k_ram_device
23 
24 class apricot_256k_ram_device : public device_t, public device_apricot_expansion_card_interface
25 {
26 public:
27 	// construction/destruction
28 	apricot_256k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
29 
30 protected:
31 	virtual ioport_constructor device_input_ports() const override;
32 	virtual void device_start() override;
33 	virtual void device_reset() override;
34 
35 private:
36 	required_ioport m_sw;
37 
38 	std::vector<uint16_t> m_ram;
39 };
40 
41 
42 // ======================> apricot_128k_ram_device
43 
44 class apricot_128k_ram_device : public device_t, public device_apricot_expansion_card_interface
45 {
46 public:
47 	// construction/destruction
48 	apricot_128k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
49 
50 protected:
51 	virtual ioport_constructor device_input_ports() const override;
52 	virtual void device_start() override;
53 	virtual void device_reset() override;
54 
55 private:
56 	required_ioport m_strap;
57 
58 	std::vector<uint16_t> m_ram;
59 };
60 
61 
62 // ======================> apricot_512k_ram_device
63 
64 class apricot_512k_ram_device : public device_t, public device_apricot_expansion_card_interface
65 {
66 public:
67 	// construction/destruction
68 	apricot_512k_ram_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
69 
70 protected:
71 	virtual ioport_constructor device_input_ports() const override;
72 	virtual void device_start() override;
73 	virtual void device_reset() override;
74 
75 private:
76 	required_ioport m_strap;
77 
78 	std::vector<uint16_t> m_ram;
79 };
80 
81 
82 // device type definition
83 DECLARE_DEVICE_TYPE(APRICOT_256K_RAM, apricot_256k_ram_device)
84 DECLARE_DEVICE_TYPE(APRICOT_128K_RAM, apricot_128k_ram_device)
85 DECLARE_DEVICE_TYPE(APRICOT_512K_RAM, apricot_512k_ram_device)
86 
87 
88 #endif // MAME_BUS_APRICOT_RAM_H
89