diff options
Diffstat (limited to 'src/devices/machine/diablo_hd.cpp')
| -rw-r--r-- | src/devices/machine/diablo_hd.cpp | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/src/devices/machine/diablo_hd.cpp b/src/devices/machine/diablo_hd.cpp index 9ee566350ff..f833cf54504 100644 --- a/src/devices/machine/diablo_hd.cpp +++ b/src/devices/machine/diablo_hd.cpp @@ -87,18 +87,17 @@ diablo_hd_device::diablo_hd_device(const machine_config &mconfig, const char *ta m_head(-1), m_sector(-1), m_page(-1), - m_cache(0), - m_bits(0), + m_bits(nullptr), m_rdfirst(-1), m_rdlast(-1), m_wrfirst(-1), m_wrlast(-1), - m_sector_callback_cookie(0), - m_sector_callback(0), - m_timer(0), - m_image(0), - m_handle(0), - m_disk(0) + m_sector_callback_cookie(nullptr), + m_sector_callback(nullptr), + m_timer(nullptr), + m_image(nullptr), + m_handle(nullptr), + m_disk(nullptr) { memset(m_description, 0x00, sizeof(m_description)); } @@ -310,14 +309,13 @@ void diablo_hd_device::read_sector() if (m_disk) { // allocate a buffer for this page - m_cache[m_page] = auto_alloc_array(machine(), UINT8, sizeof(diablo_sector_t)); + m_cache[m_page] = std::make_unique<UINT8[]>(sizeof(diablo_sector_t)); // and read the page from the hard_disk image - if (hard_disk_read(m_disk, m_page, m_cache[m_page])) { + if (hard_disk_read(m_disk, m_page, m_cache[m_page].get())) { LOG_DRIVE((2,"[DHD%u] CHS:%03d/%d/%02d => page:%d loaded\n", m_unit, m_cylinder, m_head, m_sector, m_page)); } else { LOG_DRIVE((0,"[DHD%u] CHS:%03d/%d/%02d => page:%d read failed\n", m_unit, m_cylinder, m_head, m_sector, m_page)); - auto_free(machine(), m_cache[m_page]); - m_cache[m_page] = 0; + m_cache[m_page] = nullptr; } } else { LOG_DRIVE((2,"[DHD%u] no disk\n", m_unit)); @@ -432,7 +430,7 @@ UINT32* diablo_hd_device::expand_sector() size_t dst; if (!m_bits) - return NULL; + return nullptr; /* already expanded this sector? */ if (m_bits[m_page]) return m_bits[m_page]; @@ -440,9 +438,9 @@ UINT32* diablo_hd_device::expand_sector() /* allocate a sector buffer */ if (!m_cache[m_page]) { LOG_DRIVE((0,"[DHD%u] no image for page #%d\n", m_unit, m_page)); - return NULL; + return nullptr; } - diablo_sector_t *s = reinterpret_cast<diablo_sector_t *>(m_cache[m_page]); + diablo_sector_t *s = reinterpret_cast<diablo_sector_t *>(m_cache[m_page].get()); /* allocate a bits image */ UINT32 *bits = auto_alloc_array_clear(machine(), UINT32, 400); @@ -727,7 +725,7 @@ void diablo_hd_device::squeeze_sector() UINT32 *bits = m_bits[m_page]; // pointer to sector buffer - s = reinterpret_cast<diablo_sector_t *>(m_cache[m_page]); + s = reinterpret_cast<diablo_sector_t *>(m_cache[m_page].get()); // zap the sector first memset(s, 0, sizeof(*s)); @@ -775,10 +773,10 @@ void diablo_hd_device::squeeze_sector() #endif } auto_free(machine(), m_bits[m_page]); - m_bits[m_page] = 0; + m_bits[m_page] = nullptr; if (m_disk) { - if (!hard_disk_write(m_disk, m_page, m_cache[m_page])) { + if (!hard_disk_write(m_disk, m_page, m_cache[m_page].get())) { LOG_DRIVE((0,"[DHD%u] write failed for page #%d\n", m_unit, m_page)); } } else { @@ -1325,7 +1323,7 @@ void diablo_hd_device::device_start() m_packs = 1; // FIXME: get from configuration? m_unit = strstr(m_image->tag(), "diablo0") ? 0 : 1; - m_timer = timer_alloc(1, 0); + m_timer = timer_alloc(1, nullptr); } void diablo_hd_device::device_reset() @@ -1334,9 +1332,7 @@ void diablo_hd_device::device_reset() if (m_cache) { for (int page = 0; page < m_pages; page++) if (m_cache[page]) - auto_free(machine(), m_cache[page]); - auto_free(machine(), m_cache); - m_cache = 0; + m_cache[page] = nullptr; } // free previous bits cache if (m_bits) { @@ -1344,7 +1340,7 @@ void diablo_hd_device::device_reset() if (m_bits[page]) auto_free(machine(), m_bits[page]); auto_free(machine(), m_bits); - m_bits = 0; + m_bits = nullptr; } m_handle = m_image->get_chd_file(); m_diablo31 = true; // FIXME: get from m_handle meta data? @@ -1406,7 +1402,6 @@ void diablo_hd_device::device_reset() if (!m_handle) return; // for units with a CHD assigned to them start the timer - m_cache = auto_alloc_array_clear(machine(), UINT8*, m_pages); m_bits = auto_alloc_array_clear(machine(), UINT32*, m_pages); timer_set(m_sector_time - m_sector_mark_0_time, 1, 0); read_sector(); |
