summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/diablo_hd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/diablo_hd.cpp')
-rw-r--r--src/devices/machine/diablo_hd.cpp43
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();