diff options
Diffstat (limited to 'src/devices/bus/msx_slot/disk.h')
-rw-r--r-- | src/devices/bus/msx_slot/disk.h | 98 |
1 files changed, 66 insertions, 32 deletions
diff --git a/src/devices/bus/msx_slot/disk.h b/src/devices/bus/msx_slot/disk.h index 184ea2caf66..3b949f159e2 100644 --- a/src/devices/bus/msx_slot/disk.h +++ b/src/devices/bus/msx_slot/disk.h @@ -26,6 +26,51 @@ DECLARE_DEVICE_TYPE(MSX_SLOT_DISK5, msx_slot_disk5_device) DECLARE_DEVICE_TYPE(MSX_SLOT_DISK6, msx_slot_disk6_device) +#define MCFG_MSX_SLOT_DISK1_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ + MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK1, _startpage, _numpages) \ + downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); + +#define MCFG_MSX_SLOT_DISK2_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ + MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK2, _startpage, _numpages) \ + downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); + +#define MCFG_MSX_SLOT_DISK3_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ + MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK3, _startpage, _numpages) \ + downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); + +#define MCFG_MSX_SLOT_DISK4_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ + MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK4, _startpage, _numpages) \ + downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); + +#define MCFG_MSX_SLOT_DISK5_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag, _floppy2_tag, _floppy3_tag) \ + MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK5, _startpage, _numpages) \ + downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy2_tag(_floppy2_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy3_tag(_floppy3_tag); + +#define MCFG_MSX_SLOT_DISK6_ADD(_tag, _startpage, _numpages, _region, _offset, _fdc_tag, _floppy0_tag, _floppy1_tag) \ + MCFG_MSX_INTERNAL_SLOT_ADD(_tag, MSX_SLOT_DISK6, _startpage, _numpages) \ + downcast<msx_slot_rom_device &>(*device).set_rom_start(_region, _offset); \ + downcast<msx_slot_disk_device &>(*device).set_fdc_tag(_fdc_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy0_tag(_floppy0_tag); \ + downcast<msx_slot_disk_device &>(*device).set_floppy1_tag(_floppy1_tag); + + class msx_slot_disk_device : public msx_slot_rom_device { public: @@ -36,21 +81,6 @@ public: void set_floppy2_tag(const char *tag) { m_floppy2_tag = tag; } void set_floppy3_tag(const char *tag) { m_floppy3_tag = tag; } - void set_tags(const char *fdc_tag, const char *floppy0_tag, const char *floppy1_tag) - { - m_fdc_tag = fdc_tag; - m_floppy0_tag = floppy0_tag; - m_floppy1_tag = floppy1_tag; - } - void set_tags(const char *fdc_tag, const char *floppy0_tag, const char *floppy1_tag, const char *floppy2_tag, const char *floppy3_tag) - { - m_fdc_tag = fdc_tag; - m_floppy0_tag = floppy0_tag; - m_floppy1_tag = floppy1_tag; - m_floppy2_tag = floppy2_tag; - m_floppy3_tag = floppy3_tag; - } - protected: msx_slot_disk_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); @@ -98,13 +128,14 @@ class msx_slot_disk1_device : public msx_slot_wd_disk_device public: msx_slot_disk1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read(offs_t offset) override; - virtual void write(offs_t offset, uint8_t data) override; + virtual DECLARE_READ8_MEMBER(read) override; + virtual DECLARE_WRITE8_MEMBER(write) override; protected: virtual void device_start() override; virtual void device_reset() override; - virtual void device_post_load() override; + + void post_load(); private: uint8_t m_side_control; @@ -120,13 +151,14 @@ class msx_slot_disk2_device : public msx_slot_wd_disk_device public: msx_slot_disk2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read(offs_t offset) override; - virtual void write(offs_t offset, uint8_t data) override; + virtual DECLARE_READ8_MEMBER(read) override; + virtual DECLARE_WRITE8_MEMBER(write) override; protected: virtual void device_start() override; virtual void device_reset() override; - virtual void device_post_load() override; + + void post_load(); private: uint8_t m_control; @@ -140,8 +172,8 @@ class msx_slot_disk3_device : public msx_slot_tc8566_disk_device public: msx_slot_disk3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read(offs_t offset) override; - virtual void write(offs_t offset, uint8_t data) override; + virtual DECLARE_READ8_MEMBER(read) override; + virtual DECLARE_WRITE8_MEMBER(write) override; }; @@ -150,8 +182,8 @@ class msx_slot_disk4_device : public msx_slot_tc8566_disk_device public: msx_slot_disk4_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read(offs_t offset) override; - virtual void write(offs_t offset, uint8_t data) override; + virtual DECLARE_READ8_MEMBER(read) override; + virtual DECLARE_WRITE8_MEMBER(write) override; }; @@ -160,15 +192,16 @@ class msx_slot_disk5_device : public msx_slot_wd_disk_device public: msx_slot_disk5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + DECLARE_READ8_MEMBER(io_read); + DECLARE_WRITE8_MEMBER(io_write); + protected: virtual void device_start() override; virtual void device_reset() override; - virtual void device_post_load() override; -private: - uint8_t io_read(offs_t offset); - void io_write(offs_t offset, uint8_t data); + void post_load(); +private: uint8_t m_control; void set_control(uint8_t control); @@ -180,13 +213,14 @@ class msx_slot_disk6_device : public msx_slot_wd_disk_device public: msx_slot_disk6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - virtual uint8_t read(offs_t offset) override; - virtual void write(offs_t offset, uint8_t data) override; + virtual DECLARE_READ8_MEMBER(read) override; + virtual DECLARE_WRITE8_MEMBER(write) override; protected: virtual void device_start() override; virtual void device_reset() override; - virtual void device_post_load() override; + + void post_load(); private: uint8_t m_side_motor; |