summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/bus/isa/sc499.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/bus/isa/sc499.h')
-rw-r--r--src/emu/bus/isa/sc499.h40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/emu/bus/isa/sc499.h b/src/emu/bus/isa/sc499.h
index 84497db97e8..825706f43a4 100644
--- a/src/emu/bus/isa/sc499.h
+++ b/src/emu/bus/isa/sc499.h
@@ -21,6 +21,42 @@
// TYPE DEFINITIONS
//**************************************************************************
+// ======================> sc499_ctape_image_device
+
+class sc499_ctape_image_device : public device_t, public device_image_interface
+{
+public:
+ // construction/destruction
+ sc499_ctape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // image-level overrides
+ virtual bool call_load();
+// virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) { return load_software(swlist, swname, start_entry); }
+ virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) { printf("%s\n", swname); return load_software(swlist, swname, start_entry); }
+ virtual void call_unload();
+ virtual iodevice_t image_type() const { return IO_MAGTAPE; }
+
+ virtual bool is_readable() const { return 1; }
+ virtual bool is_writeable() const { return 1; }
+ virtual bool is_creatable() const { return 1; }
+ virtual bool must_be_loaded() const { return 0; }
+ virtual bool is_reset_on_load() const { return 0; }
+ virtual const char *image_interface() const { return "sc499_cass"; }
+ virtual const char *file_extensions() const { return "act,ct"; }
+ virtual const option_guide *create_option_guide() const { return NULL; }
+
+ UINT8 *read_block(int block_num);
+ void write_block(int block_num, UINT8 *ptr);
+ UINT64 tapelen() { return m_ctape_data.bytes(); }
+
+protected:
+ // device-level overrides
+ virtual void device_config_complete();
+ virtual void device_start() { };
+
+ dynamic_buffer m_ctape_data;
+};
+
// ======================> sc499_device
class sc499_device: public device_t, public device_isa8_card_interface
@@ -105,8 +141,7 @@ private:
UINT64 m_image_length;
dynamic_buffer m_ctape_block_buffer;
-
- device_image_interface *m_image;
+ required_device<sc499_ctape_image_device> m_image;
enum line_state irq_state;
enum line_state dma_drq_state;
@@ -119,6 +154,7 @@ private:
bool m_installed;
};
+
// device type definition
extern const device_type ISA8_SC499;