diff options
Diffstat (limited to 'src/devices/bus/cpc/cpc_rom.h')
-rw-r--r-- | src/devices/bus/cpc/cpc_rom.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/devices/bus/cpc/cpc_rom.h b/src/devices/bus/cpc/cpc_rom.h new file mode 100644 index 00000000000..06908b14539 --- /dev/null +++ b/src/devices/bus/cpc/cpc_rom.h @@ -0,0 +1,90 @@ +// license:BSD-3-Clause +// copyright-holders:Barry Rodewald +/* + * cpc_rom.h + * Amstrad CPC mountable ROM image device + * + */ + +#ifndef CPC_ROM_H_ +#define CPC_ROM_H_ + +#include "emu.h" +#include "cpcexp.h" + +/*** ROM image device ***/ + +// ======================> rom_image_device + +class rom_image_device : public device_t, + public device_image_interface +{ +public: + // construction/destruction + rom_image_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual ~rom_image_device(); + + // image-level overrides + virtual bool call_load(); + virtual void call_unload(); + + virtual iodevice_t image_type() const { return IO_ROM; } + + virtual bool is_readable() const { return 1; } + virtual bool is_writeable() const { return 0; } + virtual bool is_creatable() const { return 0; } + virtual bool must_be_loaded() const { return 0; } + virtual bool is_reset_on_load() const { return 1; } + virtual const char *image_interface() const { return "cpc_rom"; } + virtual const char *file_extensions() const { return "rom,bin"; } + virtual const option_guide *create_option_guide() const { return NULL; } + + UINT8* base() { return m_base; } + +protected: + // device-level overrides + virtual void device_config_complete() { update_names(); } + virtual void device_start(); + +private: + UINT8* m_base; +}; + + +// device type definition +extern const device_type ROMSLOT; + + +#define MCFG_ROMSLOT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, ROMSLOT, 0) + +/*** ROM box device ***/ + +class cpc_rom_device : public device_t, + public device_cpc_expansion_card_interface +{ +public: + // construction/destruction + cpc_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const; + + UINT8* base(UINT8 slot) { if(slot >=1 && slot <= 8) return m_rom[slot]->base(); else return NULL; } + +protected: + // device-level overrides + virtual void device_start(); + virtual void device_reset(); + +private: + //cpc_expansion_slot_device *m_slot; + + rom_image_device* m_rom[8]; +}; + +// device type definition +extern const device_type CPC_ROM; + + +#endif |