1 // license:BSD-3-Clause
2 // copyright-holders:Nigel Barnes
3 /**********************************************************************
4 
5     JAFA Systems ROMPlus-144
6 
7 **********************************************************************/
8 
9 #ifndef MAME_BUS_ELECTRON_CART_ROMP144_H
10 #define MAME_BUS_ELECTRON_CART_ROMP144_H
11 
12 #include "slot.h"
13 #include "bus/generic/slot.h"
14 #include "bus/generic/carts.h"
15 
16 //**************************************************************************
17 //  TYPE DEFINITIONS
18 //**************************************************************************
19 
20 class electron_romp144_device :
21 	public device_t,
22 	public device_electron_cart_interface
23 {
24 public:
25 	// construction/destruction
26 	electron_romp144_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
27 
28 protected:
29 	// device-level overrides
30 	virtual void device_start() override;
31 
32 	// optional information overrides
33 	virtual void device_add_mconfig(machine_config &config) override;
34 
35 	// electron_cart_interface overrides
36 	virtual uint8_t read(offs_t offset, int infc, int infd, int romqa, int oe, int oe2) override;
37 	virtual void write(offs_t offset, uint8_t data, int infc, int infd, int romqa, int oe, int oe2) override;
38 
39 private:
40 	image_init_result load_rom(device_image_interface &image, generic_slot_device *slot);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom0)41 	DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom0) { return load_rom(image, m_romslot[0]); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom1)42 	DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom1) { return load_rom(image, m_romslot[1]); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom2)43 	DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom2) { return load_rom(image, m_romslot[2]); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom3)44 	DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom3) { return load_rom(image, m_romslot[3]); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom4)45 	DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom4) { return load_rom(image, m_romslot[4]); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom5)46 	DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom5) { return load_rom(image, m_romslot[5]); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom6)47 	DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom6) { return load_rom(image, m_romslot[6]); }
48 
49 	required_device_array<generic_slot_device, 7> m_romslot;
50 
51 	uint8_t m_rom_select;
52 	uint8_t m_rom_latch;
53 };
54 
55 
56 // device type definition
57 DECLARE_DEVICE_TYPE(ELECTRON_ROMP144, electron_romp144_device)
58 
59 
60 #endif // MAME_BUS_ELECTRON_CART_ROMP144_H
61