summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
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
commit084c0472a4f09e8ad9a20294809fbae7de49d562 (patch)
tree1c85413f3b34e56a28216ad73557b8401aa8f02b /src
parentd15be5652aad72316cb4e4b70d152ebc86902739 (diff)
alto2: Use device finders for Diablo HDs (nw)
Diffstat (limited to 'src')
-rw-r--r--src/devices/cpu/alto2/a2disk.h2
-rw-r--r--src/devices/cpu/alto2/alto2cpu.cpp12
-rw-r--r--src/devices/cpu/alto2/alto2cpu.h2
-rw-r--r--src/mame/drivers/alto2.cpp9
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));