diff options
Diffstat (limited to 'src/devices/bus/hp80_optroms/hp80_optrom.h')
-rw-r--r-- | src/devices/bus/hp80_optroms/hp80_optrom.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/src/devices/bus/hp80_optroms/hp80_optrom.h b/src/devices/bus/hp80_optroms/hp80_optrom.h new file mode 100644 index 00000000000..2fd43456264 --- /dev/null +++ b/src/devices/bus/hp80_optroms/hp80_optrom.h @@ -0,0 +1,77 @@ +// license:BSD-3-Clause +// copyright-holders: F. Ulivi +/********************************************************************* + + hp80_optrom.h + + Optional ROMs for HP80 systems + +*********************************************************************/ + +#ifndef MAME_BUS_HP80_OPTROMS_HP80_OPTROM_H +#define MAME_BUS_HP80_OPTROMS_HP80_OPTROM_H + +#pragma once + +#include "softlist_dev.h" + +// Size of optional ROMs (8k) +static constexpr offs_t HP80_OPTROM_SIZE = 0x2000; + +class hp80_optrom_cart_device : public device_t, + public device_slot_card_interface +{ +public: + // construction/destruction + hp80_optrom_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + +protected: + hp80_optrom_cart_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + + // device-level overrides + virtual void device_start() override { } +}; + +class hp80_optrom_slot_device : public device_t, + public device_image_interface, + public device_slot_interface +{ +public: + // construction/destruction + hp80_optrom_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual ~hp80_optrom_slot_device(); + + void install_read_handler(address_space& space); + +protected: + // device-level overrides + virtual void device_start() override; + + // image-level overrides + virtual image_init_result call_load() override; + virtual void call_unload() override; + virtual const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } + + virtual iodevice_t image_type() const override { return IO_ROM; } + virtual bool is_readable() const override { return true; } + virtual bool is_writeable() const override { return false; } + virtual bool is_creatable() const override { return false; } + virtual bool must_be_loaded() const override { return false; } + virtual bool is_reset_on_load() const override { return true; } + virtual const char *image_interface() const override { return "hp80_rom"; } + virtual const char *file_extensions() const override { return "bin"; } + + // slot interface overrides + virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override; + + hp80_optrom_cart_device *m_cart; + uint8_t m_select_code; +}; + +// device type definition +DECLARE_DEVICE_TYPE(HP80_OPTROM_SLOT, hp80_optrom_slot_device) +DECLARE_DEVICE_TYPE(HP80_OPTROM_CART, hp80_optrom_cart_device) + +SLOT_INTERFACE_EXTERN(hp80_optrom_slot_device); + +#endif // MAME_BUS_HP80_OPTROMS_HP80_OPTROM_H |