summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/coco/cococart.cpp
diff options
context:
space:
mode:
author Nathan Woods <npwoods@mess.org>2016-08-18 11:38:02 -0400
committer Nathan Woods <npwoods@mess.org>2016-08-18 11:38:02 -0400
commitdbf61f379d9e90a9ae3ffca2d53c46df0055a197 (patch)
tree55ea52fe2e13aafe2968510d98de89ea0e06298f /src/devices/bus/coco/cococart.cpp
parent6b83b0dbee760766c13b0150384da7342876255d (diff)
Rough C++ modernization of CoCo cartridge infrastructure (usage of 'enum class', scoping etc)
Diffstat (limited to 'src/devices/bus/coco/cococart.cpp')
-rw-r--r--src/devices/bus/coco/cococart.cpp53
1 files changed, 27 insertions, 26 deletions
diff --git a/src/devices/bus/coco/cococart.cpp b/src/devices/bus/coco/cococart.cpp
index d0955c42f9a..bd293b60a4a 100644
--- a/src/devices/bus/coco/cococart.cpp
+++ b/src/devices/bus/coco/cococart.cpp
@@ -61,7 +61,7 @@ void cococart_slot_device::device_start()
m_cart_line.timer_index = 0;
m_cart_line.delay = 0;
- m_cart_line.value = COCOCART_LINE_VALUE_CLEAR;
+ m_cart_line.value = line_value::CLEAR;
m_cart_line.line = 0;
m_cart_line.q_count = 0;
m_cart_callback.resolve();
@@ -70,7 +70,7 @@ void cococart_slot_device::device_start()
m_nmi_line.timer_index = 0;
/* 12 allowed one more instruction to finished after the line is pulled */
m_nmi_line.delay = 12;
- m_nmi_line.value = COCOCART_LINE_VALUE_CLEAR;
+ m_nmi_line.value = line_value::CLEAR;
m_nmi_line.line = 0;
m_nmi_line.q_count = 0;
m_nmi_callback.resolve();
@@ -79,7 +79,7 @@ void cococart_slot_device::device_start()
m_halt_line.timer_index = 0;
/* 6 allowed one more instruction to finished after the line is pulled */
m_halt_line.delay = 6;
- m_halt_line.value = COCOCART_LINE_VALUE_CLEAR;
+ m_halt_line.value = line_value::CLEAR;
m_halt_line.line = 0;
m_halt_line.q_count = 0;
m_halt_callback.resolve();
@@ -113,15 +113,15 @@ void cococart_slot_device::device_timer(emu_timer &timer, device_timer_id id, in
switch(id)
{
case TIMER_CART:
- set_line("CART", m_cart_line, (cococart_line_value) param);
+ set_line("CART", m_cart_line, (line_value) param);
break;
case TIMER_NMI:
- set_line("NMI", m_nmi_line, (cococart_line_value) param);
+ set_line("NMI", m_nmi_line, (line_value) param);
break;
case TIMER_HALT:
- set_line("HALT", m_halt_line, (cococart_line_value) param);
+ set_line("HALT", m_halt_line, (line_value) param);
break;
}
}
@@ -157,18 +157,18 @@ WRITE8_MEMBER(cococart_slot_device::write)
// line_value_string
//-------------------------------------------------
-static const char *line_value_string(cococart_line_value value)
+const char *cococart_slot_device::line_value_string(line_value value)
{
const char *s;
switch(value)
{
- case COCOCART_LINE_VALUE_CLEAR:
+ case line_value::CLEAR:
s = "CLEAR";
break;
- case COCOCART_LINE_VALUE_ASSERT:
+ case line_value::ASSERT:
s = "ASSERT";
break;
- case COCOCART_LINE_VALUE_Q:
+ case line_value::Q:
s = "Q";
break;
default:
@@ -183,28 +183,29 @@ static const char *line_value_string(cococart_line_value value)
// set_line
//-------------------------------------------------
-void cococart_slot_device::set_line(const char *line_name, coco_cartridge_line &line, cococart_line_value value)
+void cococart_slot_device::set_line(const char *line_name, coco_cartridge_line &line, cococart_slot_device::line_value value)
{
- if ((line.value != value) || (value == COCOCART_LINE_VALUE_Q))
+ if ((line.value != value) || (value == line_value::Q))
{
line.value = value;
if (LOG_LINE)
logerror("[%s]: set_line(): %s <= %s\n", machine().describe_context(), line_name, line_value_string(value));
- /* engage in a bit of gymnastics for this odious 'Q' value */
+
+ // engage in a bit of gymnastics for this odious 'Q' value
switch(line.value)
{
- case COCOCART_LINE_VALUE_CLEAR:
+ case line_value::CLEAR:
line.line = 0x00;
line.q_count = 0;
break;
- case COCOCART_LINE_VALUE_ASSERT:
+ case line_value::ASSERT:
line.line = 0x01;
line.q_count = 0;
break;
- case COCOCART_LINE_VALUE_Q:
+ case line_value::Q:
line.line = line.line ? 0x00 : 0x01;
if (line.q_count++ < 4)
set_line_timer(line, value);
@@ -223,9 +224,9 @@ void cococart_slot_device::set_line(const char *line_name, coco_cartridge_line &
// set_line_timer()
//-------------------------------------------------
-void cococart_slot_device::set_line_timer(coco_cartridge_line &line, cococart_line_value value)
+void cococart_slot_device::set_line_timer(coco_cartridge_line &line, cococart_slot_device::line_value value)
{
- /* calculate delay; delay dependant on cycles per second */
+ // calculate delay; delay dependant on cycles per second
attotime delay = (line.delay != 0)
? machine().firstcpu->cycles_to_attotime(line.delay)
: attotime::zero;
@@ -242,10 +243,10 @@ void cococart_slot_device::set_line_timer(coco_cartridge_line &line, cococart_li
void cococart_slot_device::twiddle_line_if_q(coco_cartridge_line &line)
{
- if (line.value == COCOCART_LINE_VALUE_Q)
+ if (line.value == line_value::Q)
{
line.q_count = 0;
- set_line_timer(line, COCOCART_LINE_VALUE_Q);
+ set_line_timer(line, line_value::Q);
}
}
@@ -268,23 +269,23 @@ void cococart_slot_device::twiddle_q_lines()
// coco_cartridge_set_line
//-------------------------------------------------
-void cococart_slot_device::cart_set_line(cococart_line line, cococart_line_value value)
+void cococart_slot_device::cart_set_line(cococart_slot_device::line which, cococart_slot_device::line_value value)
{
- switch (line)
+ switch (which)
{
- case COCOCART_LINE_CART:
+ case line::CART:
set_line_timer(m_cart_line, value);
break;
- case COCOCART_LINE_NMI:
+ case line::NMI:
set_line_timer(m_nmi_line, value);
break;
- case COCOCART_LINE_HALT:
+ case line::HALT:
set_line_timer(m_halt_line, value);
break;
- case COCOCART_LINE_SOUND_ENABLE:
+ case line::SOUND_ENABLE:
// do nothing for now
break;
}