From f37f07dc2ef80f7d140b17a8f91ad0e80f91be6c Mon Sep 17 00:00:00 2001 From: smf- Date: Thu, 13 Jun 2013 12:47:19 +0000 Subject: [PATCH] moved the reset timer across (nw) --- src/emu/machine/idectrl.c | 9 +-------- src/emu/machine/idectrl.h | 2 -- src/emu/machine/idehd.c | 12 ++++++++++++ src/emu/machine/idehd.h | 2 ++ 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/emu/machine/idectrl.c b/src/emu/machine/idectrl.c index 7cdb7f8ede8..134f1d683ce 100644 --- a/src/emu/machine/idectrl.c +++ b/src/emu/machine/idectrl.c @@ -128,10 +128,6 @@ void ide_controller_device::device_timer(emu_timer &timer, device_timer_id id, i set_irq(ASSERT_LINE); break; - case TID_RESET_CALLBACK: - reset(); - break; - case TID_SECURITY_ERROR_DONE: /* clear error state */ dev->status &= ~IDE_STATUS_ERROR; @@ -1266,7 +1262,7 @@ WRITE16_MEMBER( ide_controller_device::write_cs1 ) { dev->status |= IDE_STATUS_BUSY; dev->status &= ~IDE_STATUS_DRIVE_READY; - reset_timer->adjust(attotime::from_msec(5)); + dev->reset_timer->adjust(attotime::from_msec(5)); } break; } @@ -1310,9 +1306,6 @@ void ide_controller_device::device_start() slot[0] = subdevice("0"); slot[1] = subdevice("1"); - /* create a timer for timing status */ - reset_timer = timer_alloc(TID_RESET_CALLBACK); - /* register ide states */ save_item(NAME(config_unknown)); save_item(NAME(config_register)); diff --git a/src/emu/machine/idectrl.h b/src/emu/machine/idectrl.h index 3014ad98fc5..ad010137ca4 100644 --- a/src/emu/machine/idectrl.h +++ b/src/emu/machine/idectrl.h @@ -130,8 +130,6 @@ private: UINT8 config_register[IDE_CONFIG_REGISTERS]; UINT8 config_register_num; - emu_timer * reset_timer; - UINT8 cur_drive; ide_slot_device *slot[2]; diff --git a/src/emu/machine/idehd.c b/src/emu/machine/idehd.c index 9144cf8aa56..48b8ae96524 100644 --- a/src/emu/machine/idehd.c +++ b/src/emu/machine/idehd.c @@ -284,7 +284,9 @@ void ide_hdd_device::device_start() save_item(NAME(dma_active)); save_item(NAME(verify_only)); + /* create a timer for timing status */ last_status_timer = timer_alloc(TID_NULL); + reset_timer = timer_alloc(TID_RESET_CALLBACK); } //------------------------------------------------- @@ -330,6 +332,16 @@ void ide_hdd_device::device_reset() status = IDE_STATUS_DRIVE_READY | IDE_STATUS_SEEK_COMPLETE; } +void ide_hdd_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) +{ + switch(id) + { + case TID_RESET_CALLBACK: + reset(); + break; + } +} + //------------------------------------------------- // read device key //------------------------------------------------- diff --git a/src/emu/machine/idehd.h b/src/emu/machine/idehd.h index a727240d633..4d751ee31b2 100644 --- a/src/emu/machine/idehd.h +++ b/src/emu/machine/idehd.h @@ -68,6 +68,7 @@ public: UINT8 gnetreadlock; emu_timer * last_status_timer; + emu_timer * reset_timer; protected: UINT8 m_features[IDE_DISK_SECTOR_SIZE]; @@ -93,6 +94,7 @@ protected: // device-level overrides virtual void device_start(); virtual void device_reset(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); // optional information overrides virtual machine_config_constructor device_mconfig_additions() const;