void amiga_fdc::dmacon_set(UINT16 data) { live_sync(); dmacon = data; dma_check(); live_run(); }
void amiga_fdc::dmacon_set(uint16_t data) { live_sync(); dmacon = data; dma_check(); live_run(); }
void mos6530_base_t::timer_w(offs_t offset, UINT8 data, bool ie) { live_sync(); m_timer = data; switch (offset & 0x03) { case 0: m_prescale = 1; break; case 1: m_prescale = 8; break; case 2: m_prescale = 64; break; case 3: m_prescale = 1024; break; } m_ie_timer = ie; if (cur_live.tm_irq != machine().time()) { m_irq_timer = false; } update_irq(); if (LOG_TIMER) logerror("%s %s %s '%s' Timer value %02x prescale %u IE %u\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data, m_prescale, m_ie_timer ? 1 : 0); checkpoint(); if (cur_live.state != IDLE) { live_abort(); } live_start(); live_run(); }
void c2040_fdc_t::live_delay(int state) { cur_live.next_state = state; if(cur_live.tm != machine().time()) t_gen->adjust(cur_live.tm - machine().time()); else live_sync(); }
void c64h156_device::live_delay(int state) { cur_live.next_state = state; if(cur_live.tm != machine().time()) t_gen->adjust(cur_live.tm - machine().time()); else live_sync(); }
void c2040_fdc_t::stp0_w(int stp) { if (m_stp0 != stp) { live_sync(); this->stp_w(m_floppy0, m_mtr0, m_stp0, stp); checkpoint(); live_run(); } }
void c2040_fdc_t::stp1_w(int stp) { if (m_stp1 != stp) { live_sync(); if (m_floppy1) this->stp_w(m_floppy1, m_mtr1, m_stp1, stp); checkpoint(); live_run(); } }
void c8050_fdc_device::stp1_w(int stp) { if (m_stp1 != stp) { live_sync(); if (m_floppy1) stp_w(m_floppy1, m_mtr1, m_stp1, stp); checkpoint(); live_run(); } }
void c8050_fdc_device::stp0_w(int stp) { if (m_stp0 != stp) { live_sync(); stp_w(m_floppy0, m_mtr0, m_stp0, stp); checkpoint(); live_run(); } }
void amiga_fdc::dmacon_set(UINT16 data) { live_sync(); dmacon = data; dma_check(); dskbyt = dskbyt & 0xbfff; if(dma_state != DMA_IDLE) dskbyt |= 0x4000; live_run(); }
void c2040_fdc_t::ds_w(int ds) { if (m_ds != ds) { live_sync(); m_ds = cur_live.ds = ds; if (LOG) logerror("%s %s DS %u\n", machine().time().as_string(), machine().describe_context(), ds); checkpoint(); live_run(); } }
void c64h156_device::ds_w(int ds) { if (m_ds != ds) { live_sync(); m_ds = cur_live.ds = ds; checkpoint(); if (LOG) logerror("%s DS %u\n", machine().time().as_string(), ds); live_run(); } }
void amiga_fdc::dsklen_w(UINT16 data) { live_sync(); if(!(data & 0x8000) || (data == pre_dsklen)) { dsklen = pre_dsklen = data; dma_check(); } else pre_dsklen = data; live_run(); }
void c8050_fdc_device::ds_w(int ds) { if (m_ds != ds) { live_sync(); m_ds = cur_live.ds = ds; pll_reset(cur_live.tm); if (LOG) logerror("%s %s DS %u\n", machine().time().as_string(), machine().describe_context(), ds); checkpoint(); live_run(); } }
void amiga_fdc::dsklen_w(UINT16 data) { live_sync(); if(!(data & 0x8000) || (data == pre_dsklen)) { dsklen = pre_dsklen = data; dma_check(); dskbyt = dskbyt & 0x9fff; if(data & 0x4000) dskbyt |= 0x2000; if(dma_state != DMA_IDLE) dskbyt |= 0x4000; } else pre_dsklen = data; live_run(); }
void victor_9000_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { switch (id) { case TM_GEN: live_sync(); live_run(); break; case TM_TACH0: m_tach0 = !m_tach0; if (LOG_SCP) logerror("TACH0 %u\n", m_tach0); break; case TM_TACH1: m_tach1 = !m_tach1; if (LOG_SCP) logerror("TACH1 %u\n", m_tach1); break; } }
UINT8 mos6530_base_t::timer_r(bool ie) { UINT8 data; live_sync(); m_ie_timer = ie; if (cur_live.tm_irq != machine().time()) { m_irq_timer = false; } update_irq(); data = cur_live.value; if (LOG_TIMER) logerror("%s %s %s '%s' Timer read %02x IE %u\n", machine().time().as_string(), machine().describe_context(), name(), tag(), data, m_ie_timer ? 1 : 0); checkpoint(); live_run(); return data; }
void c64h156_device::stp_w(int stp) { if (m_stp != stp) { live_sync(); if (m_mtr) { int tracks = 0; switch (m_stp) { case 0: if (stp == 1) tracks++; else if (stp == 3) tracks--; break; case 1: if (stp == 2) tracks++; else if (stp == 0) tracks--; break; case 2: if (stp == 3) tracks++; else if (stp == 1) tracks--; break; case 3: if (stp == 0) tracks++; else if (stp == 2) tracks--; break; } if (tracks == -1) { m_floppy->dir_w(1); m_floppy->stp_w(1); m_floppy->stp_w(0); } else if (tracks == 1) { m_floppy->dir_w(0); m_floppy->stp_w(1); m_floppy->stp_w(0); } m_stp = stp; } checkpoint(); live_run(); } }
void mos6530_base_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { live_sync(); live_run(); }
void c2040_fdc_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { live_sync(); live_run(); }
void amiga_fdc::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { live_sync(); live_run(); }
void amiga_fdc::adkcon_set(uint16_t data) { live_sync(); adkcon = data; live_run(); }
void amiga_fdc::dsksync_w(UINT16 data) { live_sync(); dsksync = data; live_run(); }
void amiga_fdc::dskptl_w(UINT16 data) { live_sync(); dskpt = (dskpt & 0xffff0000) | data; live_run(); }
void amiga_fdc::dsksync_w(uint16_t data) { live_sync(); dsksync = data; live_run(); }
void amiga_fdc::dskpth_w(uint16_t data) { live_sync(); dskpt = (dskpt & 0xffff) | (data << 16); live_run(); }
void amiga_fdc::adkcon_set(UINT16 data) { live_sync(); adkcon = data; live_run(); }
void c64h156_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { live_sync(); live_run(); }
void amiga_fdc::dskpth_w(UINT16 data) { live_sync(); dskpt = (dskpt & 0xffff) | (data << 16); live_run(); }
void amiga_fdc::dskptl_w(uint16_t data) { live_sync(); dskpt = (dskpt & 0xffff0000) | data; live_run(); }