diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2019-08-21 13:57:53 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2019-08-21 13:57:53 -0400 |
commit | 084c0472a4f09e8ad9a20294809fbae7de49d562 (patch) | |
tree | 1c85413f3b34e56a28216ad73557b8401aa8f02b /src | |
parent | d15be5652aad72316cb4e4b70d152ebc86902739 (diff) |
alto2: Use device finders for Diablo HDs (nw)
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/cpu/alto2/a2disk.h | 2 | ||||
-rw-r--r-- | src/devices/cpu/alto2/alto2cpu.cpp | 12 | ||||
-rw-r--r-- | src/devices/cpu/alto2/alto2cpu.h | 2 | ||||
-rw-r--r-- | src/mame/drivers/alto2.cpp | 9 |
4 files changed, 6 insertions, 19 deletions
diff --git a/src/devices/cpu/alto2/a2disk.h b/src/devices/cpu/alto2/a2disk.h index cb5d671c76a..19efa66d66f 100644 --- a/src/devices/cpu/alto2/a2disk.h +++ b/src/devices/cpu/alto2/a2disk.h @@ -11,7 +11,7 @@ #ifndef _A2DISK_H_ #define _A2DISK_H_ -diablo_hd_device* m_drive[2]; //!< two diablo_hd_device drives +required_device_array<diablo_hd_device, 2> m_drive; //!< two diablo_hd_device drives //! disk controller context struct { diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp index 8b26aaa6a62..5b7f58e0aca 100644 --- a/src/devices/cpu/alto2/alto2cpu.cpp +++ b/src/devices/cpu/alto2/alto2cpu.cpp @@ -181,6 +181,7 @@ alto2_cpu_device::alto2_cpu_device(const machine_config& mconfig, const char* ta m_ether_id(0), m_hw(), m_mouse(), + m_drive(*this, { finder_base::DUMMY_TAG, finder_base::DUMMY_TAG }), m_dsk(), m_dsp(), m_disp_a38(nullptr), @@ -203,7 +204,6 @@ alto2_cpu_device::alto2_cpu_device(const machine_config& mconfig, const char* ta memset(m_s_reg_bank, 0x00, sizeof(m_s_reg_bank)); memset(m_bank_reg, 0x00, sizeof(m_bank_reg)); memset(m_ram_related, 0x00, sizeof(m_ram_related)); - memset(m_drive, 0x00, sizeof(m_drive)); memset(m_sysclka0, 0x00, sizeof(m_sysclka0)); memset(m_sysclka1, 0x00, sizeof(m_sysclka1)); memset(m_sysclkb0, 0x00, sizeof(m_sysclkb0)); @@ -232,16 +232,6 @@ alto2_cpu_device::~alto2_cpu_device() } //------------------------------------------------- -// driver interface to set diablo_hd_device -//------------------------------------------------- - -void alto2_cpu_device::set_diablo(int unit, diablo_hd_device* ptr) -{ - logerror("%s: unit=%d diablo_hd_device=%p\n", __FUNCTION__, unit, (void *) ptr); - m_drive[unit] = ptr; -} - -//------------------------------------------------- // device_rom_region - device-specific (P)ROMs //------------------------------------------------- diff --git a/src/devices/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h index b8be459b3a3..e0fbc075895 100644 --- a/src/devices/cpu/alto2/alto2cpu.h +++ b/src/devices/cpu/alto2/alto2cpu.h @@ -188,7 +188,7 @@ public: auto utilout_callback() { return m_utilout_callback.bind(); } //! driver interface to set diablo_hd_device - void set_diablo(int unit, diablo_hd_device* ptr); + template <typename T> void set_diablo(int unit, T &&tag) { m_drive[unit].set_tag(std::forward<T>(tag)); } //! call in for the next sector callback void next_sector(int unit); diff --git a/src/mame/drivers/alto2.cpp b/src/mame/drivers/alto2.cpp index c6913aa2dae..b3cf0d8a09e 100644 --- a/src/mame/drivers/alto2.cpp +++ b/src/mame/drivers/alto2.cpp @@ -273,6 +273,8 @@ void alto2_state::alto2(machine_config &config) ALTO2(config, m_maincpu, XTAL(29'491'200)/5); m_maincpu->kb_read_callback().set(FUNC(alto2_state::kb_r)); m_maincpu->utilout_callback().set(FUNC(alto2_state::utilout_w)); + m_maincpu->set_diablo(0, DIABLO_HD_0); + m_maincpu->set_diablo(1, DIABLO_HD_1); // Video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -291,17 +293,12 @@ void alto2_state::alto2(machine_config &config) DIABLO_HD(config, DIABLO_HD_0, 3333333); DIABLO_HD(config, DIABLO_HD_1, 3333333); - } +} /* Driver Init */ void alto2_state::init_alto2() { - // Make the diablo drives known to the CPU core - alto2_cpu_device* cpu = downcast<alto2_cpu_device *>(m_maincpu.target()); - cpu->set_diablo(0, downcast<diablo_hd_device *>(machine().device(DIABLO_HD_0))); - cpu->set_diablo(1, downcast<diablo_hd_device *>(machine().device(DIABLO_HD_1))); - // Create a timer which fires twice per frame, once for each field m_vblank_timer = timer_alloc(TIMER_VBLANK); m_vblank_timer->adjust(attotime::from_hz(2*30),0,attotime::from_hz(30*2)); |