diff options
Diffstat (limited to 'src/devices/bus/isa/sc499.h')
-rw-r--r-- | src/devices/bus/isa/sc499.h | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/src/devices/bus/isa/sc499.h b/src/devices/bus/isa/sc499.h index 1b61b24ca3b..8bb94221b41 100644 --- a/src/devices/bus/isa/sc499.h +++ b/src/devices/bus/isa/sc499.h @@ -13,8 +13,9 @@ #pragma once -#include "bus/isa/isa.h" -#include "softlist_dev.h" +#include "isa.h" + +#include "imagedev/magtape.h" //************************************************************************** @@ -23,38 +24,29 @@ // ======================> sc499_ctape_image_device -class sc499_ctape_image_device : public device_t, public device_image_interface +class sc499_ctape_image_device : public microtape_image_device { public: // construction/destruction sc499_ctape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // image-level overrides - virtual image_init_result call_load() override; + // device_image_interface implementation + virtual std::pair<std::error_condition, std::string> call_load() override; virtual void call_unload() override; - virtual iodevice_t image_type() const noexcept override { return IO_MAGTAPE; } - virtual bool is_readable() const noexcept override { return true; } - virtual bool is_writeable() const noexcept override { return true; } - virtual bool is_creatable() const noexcept override { return true; } - virtual bool must_be_loaded() const noexcept override { return false; } - virtual bool is_reset_on_load() const noexcept override { return false; } virtual bool support_command_line_image_creation() const noexcept override { return true; } virtual const char *image_interface() const noexcept override { return "sc499_cass"; } virtual const char *file_extensions() const noexcept override { return "act,ct"; } - virtual const char *custom_instance_name() const noexcept override { return "ctape"; } - virtual const char *custom_brief_instance_name() const noexcept override { return "ct"; } + virtual const char *image_type_name() const noexcept override { return "ctape"; } + virtual const char *image_brief_type_name() const noexcept override { return "ct"; } uint8_t *read_block(int block_num); void write_block(int block_num, uint8_t *ptr); uint64_t tapelen() { return m_ctape_data.size(); } protected: - // device-level overrides - virtual void device_start() override { } - - // device_image_interface implementation - virtual const software_list_loader &get_software_list_loader() const override { return image_software_list_loader::instance(); } + // device_t implementation + virtual void device_start() override; std::vector<uint8_t> m_ctape_data; }; @@ -75,7 +67,6 @@ private: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void device_add_mconfig(machine_config &config) override; virtual ioport_constructor device_input_ports() const override; @@ -85,14 +76,13 @@ private: virtual void eop_w(int state) override; std::string cpu_context() const; - template <typename Format, typename... Params> void logerror(Format &&fmt, Params &&... args) const; void tape_status_clear(uint16_t value); void tape_status_set(uint16_t value); // device register I/O - DECLARE_READ8_MEMBER(read); - DECLARE_WRITE8_MEMBER(write); + uint8_t read(offs_t offset); + void write(offs_t offset, uint8_t data); void check_tape(); @@ -117,6 +107,8 @@ private: int block_is_filemark(); void block_set_filemark(); + TIMER_CALLBACK_MEMBER(timer_func); + uint8_t m_data; uint8_t m_command; uint8_t m_status; |