diff options
Diffstat (limited to 'src/devices/machine/ps2timer.cpp')
-rw-r--r-- | src/devices/machine/ps2timer.cpp | 232 |
1 files changed, 116 insertions, 116 deletions
diff --git a/src/devices/machine/ps2timer.cpp b/src/devices/machine/ps2timer.cpp index 70970a6784a..263060b98a5 100644 --- a/src/devices/machine/ps2timer.cpp +++ b/src/devices/machine/ps2timer.cpp @@ -20,8 +20,8 @@ ps2_timer_device::ps2_timer_device(const machine_config &mconfig, const char *ta , m_overflow_timer(nullptr) , m_mode(0) , m_last_enable_time(attotime::zero) - , m_last_update_time(attotime::zero) - , m_elapsed_time(attotime::zero) + , m_last_update_time(attotime::zero) + , m_elapsed_time(attotime::zero) , m_enabled(false) , m_zero_return(false) , m_count(0) @@ -53,8 +53,8 @@ void ps2_timer_device::device_reset() m_mode = 0; m_last_enable_time = attotime::zero; - m_last_update_time = attotime::zero; - m_elapsed_time = attotime::zero; + m_last_update_time = attotime::zero; + m_elapsed_time = attotime::zero; m_enabled = false; m_zero_return = false; @@ -103,36 +103,36 @@ void ps2_timer_device::update_overflow_timer() void ps2_timer_device::update_count() { - if (!m_enabled) return; - uint32_t frequency = 0; - - switch (m_clk_select) - { - case CLKS_BUSCLK1: - frequency = clock(); - break; - case CLKS_BUSCLK16: - frequency = clock() / 16; - break; - case CLKS_BUSCLK256: - frequency = clock() / 256; - break; - case CLKS_HBLNK: - frequency = clock() / 18700; - break; - } - - attotime curr_time = machine().scheduler().time(); - attotime time_delta = curr_time - m_last_update_time; - m_last_update_time = curr_time; - m_elapsed_time += time_delta; - uint32_t ticks = (uint32_t)m_elapsed_time.as_ticks(frequency); - if (ticks > 0) - { - m_elapsed_time -= attotime::from_ticks(ticks, frequency); - m_count += ticks; - m_count &= 0xffff; - } + if (!m_enabled) return; + uint32_t frequency = 0; + + switch (m_clk_select) + { + case CLKS_BUSCLK1: + frequency = clock(); + break; + case CLKS_BUSCLK16: + frequency = clock() / 16; + break; + case CLKS_BUSCLK256: + frequency = clock() / 256; + break; + case CLKS_HBLNK: + frequency = clock() / 18700; + break; + } + + attotime curr_time = machine().scheduler().time(); + attotime time_delta = curr_time - m_last_update_time; + m_last_update_time = curr_time; + m_elapsed_time += time_delta; + uint32_t ticks = (uint32_t)m_elapsed_time.as_ticks(frequency); + if (ticks > 0) + { + m_elapsed_time -= attotime::from_ticks(ticks, frequency); + m_count += ticks; + m_count &= 0xffff; + } } void ps2_timer_device::update_hold() @@ -142,24 +142,24 @@ void ps2_timer_device::update_hold() void ps2_timer_device::set_mode(uint32_t data) { - static const char *clks_names[4] = { "BUSCLK", "BUSCLK/16", "BUSCLK/256", "HBLNK" }; - static const char *gatm_names[4] = { "low", "reset+rising", "reset+falling", "reset+both" }; - logerror("%s: CLKS=%s, GATE=%d, GATS=%cBLNK\n", machine().describe_context(), clks_names[data & 3], BIT(data, 2), BIT(data, 3) ? 'V' : 'H'); - logerror("%s: GATM=%s, ZRET=%d, CUE=%d\n", machine().describe_context(), gatm_names[(data >> 4) & 3], BIT(data, 6), BIT(data, 7)); - logerror("%s: CMPE=%d, OVFE=%d, %s, %s\n", machine().describe_context(), BIT(data, 8), BIT(data, 9), BIT(data, 10) ? "Clear Equal" : "", BIT(data, 11) ? "Clear Overflow" : ""); + static const char *clks_names[4] = { "BUSCLK", "BUSCLK/16", "BUSCLK/256", "HBLNK" }; + static const char *gatm_names[4] = { "low", "reset+rising", "reset+falling", "reset+both" }; + logerror("%s: CLKS=%s, GATE=%d, GATS=%cBLNK\n", machine().describe_context(), clks_names[data & 3], BIT(data, 2), BIT(data, 3) ? 'V' : 'H'); + logerror("%s: GATM=%s, ZRET=%d, CUE=%d\n", machine().describe_context(), gatm_names[(data >> 4) & 3], BIT(data, 6), BIT(data, 7)); + logerror("%s: CMPE=%d, OVFE=%d, %s, %s\n", machine().describe_context(), BIT(data, 8), BIT(data, 9), BIT(data, 10) ? "Clear Equal" : "", BIT(data, 11) ? "Clear Overflow" : ""); - if (!(data & (MODE_EQUF | MODE_OVFF)) && data == m_mode) return; + if (!(data & (MODE_EQUF | MODE_OVFF)) && data == m_mode) return; - const uint32_t old = m_mode; - m_mode = data; - const uint32_t changed = old ^ data; + const uint32_t old = m_mode; + m_mode = data; + const uint32_t changed = old ^ data; - m_clk_select = (timer_clock_select)(data & 3); - m_gate_enable = BIT(data, 2); - m_gate_select = BIT(data, 3) ? GATS_VBLNK : GATS_HBLNK; - m_gate_mode = (timer_gate_mode)((data >> 4) & 3); - m_zero_return = BIT(data, 6); - m_enabled = BIT(data, 7); + m_clk_select = (timer_clock_select)(data & 3); + m_gate_enable = BIT(data, 2); + m_gate_select = BIT(data, 3) ? GATS_VBLNK : GATS_HBLNK; + m_gate_mode = (timer_gate_mode)((data >> 4) & 3); + m_zero_return = BIT(data, 6); + m_enabled = BIT(data, 7); if (changed & (MODE_GATE | MODE_GATS | MODE_GATM)) { @@ -172,13 +172,13 @@ void ps2_timer_device::set_mode(uint32_t data) update_overflow_timer(); } - if (changed & (MODE_CMPE | MODE_OVFE | MODE_EQUF | MODE_OVFF)) - { + if (changed & (MODE_CMPE | MODE_OVFE | MODE_EQUF | MODE_OVFF)) + { m_cmp_int_enabled = BIT(data, 8); m_ovf_int_enabled = BIT(data, 9); m_cmp_int = BIT(data, 10) ? 0 : m_cmp_int; m_ovf_int = BIT(data, 11) ? 0 : m_ovf_int; - update_interrupts(); + update_interrupts(); } } @@ -192,81 +192,81 @@ TIMER_CALLBACK_MEMBER(ps2_timer_device::overflow) READ32_MEMBER(ps2_timer_device::read) { - uint32_t ret = 0; - switch (offset) - { - case 0x00: - { - const uint32_t old = m_count; - update_count(); - ret = m_count; - if (old != m_count) - logerror("%s: PS2 timer read: COUNT (%08x & %08x)\n", machine().describe_context(), ret, mem_mask); - break; - } - - case 0x02: - ret = m_mode; - logerror("%s: PS2 timer read: MODE (%08x & %08x)\n", machine().describe_context(), ret, mem_mask); - break; - - case 0x04: - ret = m_compare; - logerror("%s: PS2 timer read: COMP (%08x & %08x)\n", machine().describe_context(), ret, mem_mask); - break; - - case 0x06: - ret = m_hold; - logerror("%s: PS2 timer read: HOLD (%08x & %08x)\n", machine().describe_context(), ret, mem_mask); - break; - - default: - break; - } - return ret; + uint32_t ret = 0; + switch (offset) + { + case 0x00: + { + const uint32_t old = m_count; + update_count(); + ret = m_count; + if (old != m_count) + logerror("%s: PS2 timer read: COUNT (%08x & %08x)\n", machine().describe_context(), ret, mem_mask); + break; + } + + case 0x02: + ret = m_mode; + logerror("%s: PS2 timer read: MODE (%08x & %08x)\n", machine().describe_context(), ret, mem_mask); + break; + + case 0x04: + ret = m_compare; + logerror("%s: PS2 timer read: COMP (%08x & %08x)\n", machine().describe_context(), ret, mem_mask); + break; + + case 0x06: + ret = m_hold; + logerror("%s: PS2 timer read: HOLD (%08x & %08x)\n", machine().describe_context(), ret, mem_mask); + break; + + default: + break; + } + return ret; } WRITE32_MEMBER(ps2_timer_device::write) { - switch (offset) - { - case 0x00: - m_count = data; - logerror("%s: PS2 timer write: COUNT = %08x & %08x\n", machine().describe_context(), data, mem_mask); - update_compare_timer(); - update_overflow_timer(); - break; - - case 0x02: - set_mode(data); - break; - - case 0x04: - { - logerror("%s: PS2 timer write: COMP = %08x & %08x\n", machine().describe_context(), data, mem_mask); + switch (offset) + { + case 0x00: + m_count = data; + logerror("%s: PS2 timer write: COUNT = %08x & %08x\n", machine().describe_context(), data, mem_mask); + update_compare_timer(); + update_overflow_timer(); + break; + + case 0x02: + set_mode(data); + break; + + case 0x04: + { + logerror("%s: PS2 timer write: COMP = %08x & %08x\n", machine().describe_context(), data, mem_mask); if (m_compare == data) break; - m_compare = data; - update_compare_timer(); - break; + m_compare = data; + update_compare_timer(); + break; } - case 0x06: - { - if (!m_can_hold) - break; + case 0x06: + { + if (!m_can_hold) + break; - logerror("%s: PS2 timer write: HOLD = %08x & %08x\n", machine().describe_context(), data, mem_mask); - if (m_hold == data) - break; + logerror("%s: PS2 timer write: HOLD = %08x & %08x\n", machine().describe_context(), data, mem_mask); + if (m_hold == data) + break; - m_hold = data; - update_hold(); - break; + m_hold = data; + update_hold(); + break; } - default: - break; - } + default: + break; + } } |