summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/isa/sc499.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/isa/sc499.h')
-rw-r--r--src/devices/bus/isa/sc499.h36
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;