diff --git a/src/emu/machine/idectrl.c b/src/emu/machine/idectrl.c index 9aac32c64dc..d5977a97c8a 100644 --- a/src/emu/machine/idectrl.c +++ b/src/emu/machine/idectrl.c @@ -102,7 +102,9 @@ void ide_controller_device::set_irq(int state) /* signal an interrupt */ m_irq_handler(state); - dev->interrupt_pending = state; + + if (dev != NULL) + dev->interrupt_pending = state; } void ide_controller_device::set_dmarq(int state) @@ -1330,17 +1332,11 @@ void ide_controller_device::device_start() void ide_controller_device::device_reset() { - ide_device_interface *dev = slot[cur_drive]->dev(); - LOG(("IDE controller reset performed\n")); /* reset the drive state */ cur_drive = 0; status = IDE_STATUS_DRIVE_READY | IDE_STATUS_SEEK_COMPLETE; error = IDE_ERROR_DEFAULT; - dev->buffer_offset = 0; - dev->gnetreadlock = 0; - dev->master_password_enable = (dev->master_password != NULL); - dev->user_password_enable = (dev->user_password != NULL); set_irq(CLEAR_LINE); set_dmarq(0); } diff --git a/src/emu/machine/idehd.c b/src/emu/machine/idehd.c index 54a093deaf2..ff7d3f27de3 100644 --- a/src/emu/machine/idehd.c +++ b/src/emu/machine/idehd.c @@ -304,6 +304,11 @@ void ide_hdd_device::device_reset() if (m_handle->read_metadata (HARD_DISK_IDENT_METADATA_TAG, 0, m_features, IDE_DISK_SECTOR_SIZE, metalength) != CHDERR_NONE) ide_build_features(); } + + buffer_offset = 0; + gnetreadlock = 0; + master_password_enable = (master_password != NULL); + user_password_enable = (user_password != NULL); } //-------------------------------------------------