1 // license:BSD-3-Clause
2 // copyright-holders:Nigel Barnes
3 /**********************************************************************
4 
5     Acorn 8K Static Memory Board
6 
7     http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Acorn_Memory.html
8 
9 **********************************************************************/
10 
11 
12 #ifndef MAME_BUS_ACORN_SYSTEM_8K_H
13 #define MAME_BUS_ACORN_SYSTEM_8K_H
14 
15 #pragma once
16 
17 #include "bus/acorn/bus.h"
18 #include "bus/generic/slot.h"
19 #include "bus/generic/carts.h"
20 
21 
22 //**************************************************************************
23 //  TYPE DEFINITIONS
24 //**************************************************************************
25 
26 class acorn_8k_device :
27 	public device_t,
28 	public device_acorn_bus_interface
29 {
30 public:
31 	// construction/destruction
32 	acorn_8k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
33 
34 protected:
35 	// device-level overrides
36 	virtual void device_start() override;
37 	virtual void device_reset() override;
38 
39 	// optional information overrides
40 	virtual void device_add_mconfig(machine_config &config) override;
41 	virtual ioport_constructor device_input_ports() const override;
42 
43 private:
44 	image_init_result load_rom(device_image_interface &image, generic_slot_device *slot);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom0_load)45 	DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom0_load) { return load_rom(image, m_rom[0]); }
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom1_load)46 	DECLARE_DEVICE_IMAGE_LOAD_MEMBER(rom1_load) { return load_rom(image, m_rom[1]); }
47 
48 	required_device_array<generic_slot_device, 2> m_rom;
49 	required_ioport m_links;
50 };
51 
52 
53 // device type definition
54 DECLARE_DEVICE_TYPE(ACORN_8K, acorn_8k_device)
55 
56 
57 #endif // MAME_BUS_ACORN_SYSTEM_8K_H
58