pit8253: minor refactor (nw)

This commit is contained in:
Patrick Mackinlay 2019-09-13 11:32:48 +07:00
parent 316e939078
commit d07d54536e
2 changed files with 13 additions and 21 deletions

View File

@ -297,7 +297,7 @@ void pit_counter_device::set_output(int output)
/* This emulates timer "timer" for "elapsed_cycles" cycles and assumes no
callbacks occur during that time. */
void pit_counter_device::simulate2(int64_t elapsed_cycles)
void pit_counter_device::simulate(int64_t elapsed_cycles)
{
uint32_t adjusted_value;
int bcd = CTRL_BCD(m_control);
@ -305,7 +305,7 @@ void pit_counter_device::simulate2(int64_t elapsed_cycles)
static const uint32_t CYCLES_NEVER = (0xffffffff);
uint32_t cycles_to_output = 0;
LOG2(("simulate2(): simulating %d cycles in mode %d, bcd = %d, phase = %d, gate = %d, output %d, value = 0x%04x\n",
LOG2(("simulate(): simulating %d cycles in mode %d, bcd = %d, phase = %d, gate = %d, output %d, value = 0x%04x\n",
(int)elapsed_cycles, mode, bcd, m_phase, m_gate, m_output, m_value));
switch (mode)
@ -688,22 +688,10 @@ void pit_counter_device::simulate2(int64_t elapsed_cycles)
m_updatetimer->adjust(next_fire_time - machine().time());
}
LOG2(("simulate2(): simulating %d cycles in mode %d, bcd = %d, phase = %d, gate = %d, output %d, value = 0x%04x, cycles_to_output = %04x\n",
LOG2(("simulate(): simulating %d cycles in mode %d, bcd = %d, phase = %d, gate = %d, output %d, value = 0x%04x, cycles_to_output = %04x\n",
(int)elapsed_cycles, mode, bcd, m_phase, m_gate, m_output, m_value, cycles_to_output));
}
/* This emulates timer "timer" for "elapsed_cycles" cycles, broken down into
sections punctuated by callbacks. */
void pit_counter_device::simulate(int64_t elapsed_cycles)
{
if (elapsed_cycles > 0)
simulate2(elapsed_cycles);
else if (m_clockin)
m_updatetimer->adjust(attotime::from_hz(m_clockin));
}
/* This brings timer "timer" up to date */
void pit_counter_device::update()
{
@ -720,7 +708,12 @@ void pit_counter_device::update()
else
m_last_updated = now;
simulate(elapsed_cycles);
/* This emulates timer "timer" for "elapsed_cycles" cycles, broken down into
sections punctuated by callbacks. */
if (elapsed_cycles > 0)
simulate(elapsed_cycles);
else if (m_clockin)
m_updatetimer->adjust(attotime::from_hz(m_clockin));
}
@ -976,7 +969,7 @@ void pit_counter_device::count_w(uint8_t data)
m_last_updated += attotime::from_hz(m_clockin);
load_count(data);
simulate2(0);
simulate(0);
if (CTRL_MODE(m_control) == 0)
set_output(0);
@ -990,7 +983,7 @@ void pit_counter_device::count_w(uint8_t data)
m_last_updated += attotime::from_hz(m_clockin);
load_count(data << 8);
simulate2(0);
simulate(0);
if (CTRL_MODE(m_control) == 0)
set_output(0);
@ -1005,7 +998,7 @@ void pit_counter_device::count_w(uint8_t data)
m_last_updated += attotime::from_hz(m_clockin);
load_count(m_lowcount | (data << 8));
simulate2(0);
simulate(0);
}
else
{
@ -1082,7 +1075,7 @@ void pit_counter_device::set_clock_signal(int state)
if (!m_clock_signal && state)
{
/* Advance a cycle */
simulate2(1);
simulate(1);
}
m_clock_signal = state;
}

View File

@ -57,7 +57,6 @@ private:
void decrease_counter_value(int64_t cycles);
void load_counter_value();
void set_output(int output);
void simulate2(int64_t elapsed_cycles);
void simulate(int64_t elapsed_cycles);
void update();
uint16_t masked_value() const;