hp9k_3xx: timer fixes (#4131)

* hp9k_3xx: use delegate for timer

* mb87030: use delegate for timer

* hp9122c: use delegate for timer
This commit is contained in:
dxl 2018-10-12 16:57:44 +02:00 committed by R. Belmont
parent 28fb2156fb
commit 5f86b39c0d
6 changed files with 21 additions and 21 deletions

View File

@ -86,10 +86,10 @@ void hp9122c_device::device_start()
save_item(NAME(m_ds0)); save_item(NAME(m_ds0));
save_item(NAME(m_ds1)); save_item(NAME(m_ds1));
m_motor_timer = timer_alloc(0); m_motor_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hp9122c_device::motor_timeout), this));
} }
void hp9122c_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) TIMER_CALLBACK_MEMBER(hp9122c_device::motor_timeout)
{ {
floppy_image_device *floppy0 = m_floppy[0]->get_device(); floppy_image_device *floppy0 = m_floppy[0]->get_device();
floppy_image_device *floppy1 = m_floppy[1]->get_device(); floppy_image_device *floppy1 = m_floppy[1]->get_device();

View File

@ -118,7 +118,6 @@ private:
DECLARE_WRITE8_MEMBER(fdc_write); DECLARE_WRITE8_MEMBER(fdc_write);
void cpu_map(address_map &map); void cpu_map(address_map &map);
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
required_device<cpu_device> m_cpu; required_device<cpu_device> m_cpu;
required_device<i8291a_device> m_i8291a; required_device<i8291a_device> m_i8291a;
@ -145,6 +144,7 @@ private:
bool m_ds0; bool m_ds0;
bool m_ds1; bool m_ds1;
TIMER_CALLBACK_MEMBER(motor_timeout);
emu_timer *m_motor_timer; emu_timer *m_motor_timer;
}; };

View File

@ -132,18 +132,16 @@ void mb87030_device::update_state(mb87030_device::State new_state, int delay, in
m_timer->reset(); m_timer->reset();
} }
void mb87030_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) TIMER_CALLBACK_MEMBER(mb87030_device::timeout)
{ {
switch(id) { m_timer->reset();
case TimerId::Delay: step(true);
m_delay_timer->reset(); }
step(false);
break; TIMER_CALLBACK_MEMBER(mb87030_device::delay_timeout)
case TimerId::Timeout: {
m_timer->reset(); m_delay_timer->reset();
step(true); step(false);
break;
}
} }
void mb87030_device::scsi_command_complete() void mb87030_device::scsi_command_complete()
@ -432,8 +430,8 @@ void mb87030_device::step(bool timeout)
void mb87030_device::device_start() void mb87030_device::device_start()
{ {
m_timer = timer_alloc(TimerId::Timeout); m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mb87030_device::timeout), this));
m_delay_timer = timer_alloc(TimerId::Delay); m_delay_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mb87030_device::delay_timeout), this));
m_irq_handler.resolve_safe(); m_irq_handler.resolve_safe();
m_dreq_handler.resolve_safe(); m_dreq_handler.resolve_safe();

View File

@ -181,10 +181,12 @@ private:
uint32_t scsi_get_ctrl(); uint32_t scsi_get_ctrl();
void step(bool timeout); void step(bool timeout);
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
devcb_write_line m_irq_handler; devcb_write_line m_irq_handler;
devcb_write_line m_dreq_handler; devcb_write_line m_dreq_handler;
TIMER_CALLBACK_MEMBER(delay_timeout);
TIMER_CALLBACK_MEMBER(timeout);
// registers // registers
uint8_t m_bdid; uint8_t m_bdid;
uint8_t m_sctl; uint8_t m_sctl;

View File

@ -4,7 +4,7 @@
#include "emu.h" #include "emu.h"
#include "nereid.h" #include "nereid.h"
//#define VERBOSE 1 #define VERBOSE 1
#include "logmacro.h" #include "logmacro.h"
DEFINE_DEVICE_TYPE(NEREID, nereid_device, "nereid", "HP Nereid ASIC") DEFINE_DEVICE_TYPE(NEREID, nereid_device, "nereid", "HP Nereid ASIC")

View File

@ -100,7 +100,6 @@ private:
output_finder<8> m_diag_led; output_finder<8> m_diag_led;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
void set_bus_error(uint32_t address, bool write, uint16_t mem_mask); void set_bus_error(uint32_t address, bool write, uint16_t mem_mask);
DECLARE_READ16_MEMBER(buserror16_r); DECLARE_READ16_MEMBER(buserror16_r);
@ -133,6 +132,7 @@ private:
bool m_bus_error; bool m_bus_error;
emu_timer *m_bus_error_timer; emu_timer *m_bus_error_timer;
TIMER_CALLBACK_MEMBER(bus_error_timeout);
}; };
// shared mappings for all 9000/3xx systems // shared mappings for all 9000/3xx systems
@ -244,11 +244,11 @@ void hp9k3xx_state::machine_reset()
void hp9k3xx_state::machine_start() void hp9k3xx_state::machine_start()
{ {
m_bus_error_timer = timer_alloc(0); m_bus_error_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(hp9k3xx_state::bus_error_timeout), this));
save_item(NAME(m_bus_error)); save_item(NAME(m_bus_error));
} }
void hp9k3xx_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) TIMER_CALLBACK_MEMBER(hp9k3xx_state::bus_error_timeout)
{ {
m_bus_error = false; m_bus_error = false;
} }