diff --git a/src/emu/cpu/pdp1/tx0.c b/src/emu/cpu/pdp1/tx0.c index 3f2bc7e2910..01c41b3f1d1 100644 --- a/src/emu/cpu/pdp1/tx0.c +++ b/src/emu/cpu/pdp1/tx0.c @@ -171,7 +171,6 @@ static CPU_EXECUTE( tx0_64kw ) if (cpustate->ioh && cpustate->ios) { cpustate->ioh = 0; - cpustate->ios = 0; } @@ -187,6 +186,7 @@ static CPU_EXECUTE( tx0_64kw ) if (cpustate->iface->io_handlers[io_handler_rim]) (*cpustate->iface->io_handlers[io_handler_rim])(device); /* data will be transferred to AC */ cpustate->rim_step = 1; + cpustate->ios = 0; break; case 1: @@ -221,6 +221,7 @@ static CPU_EXECUTE( tx0_64kw ) if (cpustate->iface->io_handlers[io_handler_rim]) (*cpustate->iface->io_handlers[io_handler_rim])(device); /* data will be transferred to AC */ cpustate->rim_step = 3; + cpustate->ios = 0; break; case 3: @@ -277,7 +278,6 @@ static CPU_EXECUTE( tx0_8kw ) if (cpustate->ioh && cpustate->ios) { cpustate->ioh = 0; - cpustate->ios = 0; } @@ -293,6 +293,7 @@ static CPU_EXECUTE( tx0_8kw ) if (cpustate->iface->io_handlers[io_handler_rim]) (*cpustate->iface->io_handlers[io_handler_rim])(device); /* data will be transferred to AC */ cpustate->rim_step = 1; + cpustate->ios = 0; break; case 1: @@ -327,6 +328,7 @@ static CPU_EXECUTE( tx0_8kw ) if (cpustate->iface->io_handlers[io_handler_rim]) (*cpustate->iface->io_handlers[io_handler_rim])(device); /* data will be transferred to AC */ cpustate->rim_step = 3; + cpustate->ios = 0; break; case 3: @@ -415,7 +417,7 @@ static CPU_SET_INFO( tx0 ) case CPUINFO_INT_REGISTER + TX0_RIM: cpustate->rim = info->i ? 1 : 0; break; case CPUINFO_INT_REGISTER + TX0_CYCLE: if (LOG) logerror("tx0_set_reg to cycle counter ignored\n");/* no way!*/ break; case CPUINFO_INT_REGISTER + TX0_IOH: if (LOG) logerror("tx0_set_reg to ioh flip-flop ignored\n");/* no way!*/ break; - case CPUINFO_INT_REGISTER + TX0_IOS: if (LOG) logerror("tx0_set_reg to ios flip-flop ignored\n");/* no way!*/ break; + case CPUINFO_INT_REGISTER + TX0_IOS: cpustate->ios = info->i ? 1 : 0; break; case CPUINFO_INT_REGISTER + TX0_RESET: pulse_reset(device); break; case CPUINFO_INT_REGISTER + TX0_IO_COMPLETE:cpustate->ios = 1; break; } diff --git a/src/mess/drivers/tx0.c b/src/mess/drivers/tx0.c index f4e57d2a376..d72f7e66b63 100644 --- a/src/mess/drivers/tx0.c +++ b/src/mess/drivers/tx0.c @@ -661,7 +661,7 @@ TIMER_CALLBACK_MEMBER(tx0_state::reader_callback) if (m_tape_reader.rc == 0) { /* IO complete */ m_tape_reader.rcl = 0; - m_maincpu->set_state_int(TX0_IO_COMPLETE, (UINT64)0); + m_maincpu->set_state_int(TX0_IOS,1); } } } @@ -697,7 +697,7 @@ void tx0_punchtape_image_device::call_unload() TIMER_CALLBACK_MEMBER(tx0_state::puncher_callback) { - m_maincpu->set_state_int(TX0_IO_COMPLETE, (UINT64)0); + m_maincpu->set_state_int(TX0_IOS,1); } /* @@ -791,7 +791,7 @@ void tx0_state::typewriter_out(UINT8 data) */ TIMER_CALLBACK_MEMBER(tx0_state::prt_callback) { - m_maincpu->set_state_int(TX0_IO_COMPLETE, (UINT64)0); + m_maincpu->set_state_int(TX0_IOS,1); } /* @@ -818,7 +818,7 @@ static void tx0_io_prt(device_t *device) */ TIMER_CALLBACK_MEMBER(tx0_state::dis_callback) { - m_maincpu->set_state_int(TX0_IO_COMPLETE, (UINT64)0); + m_maincpu->set_state_int(TX0_IOS,1); } /* @@ -978,7 +978,7 @@ static void magtape_callback(device_t *device) } state->m_magtape.sel_pending = FALSE; - device->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + device->state().set_state_int(TX0_IOS,1); } break; @@ -1163,7 +1163,7 @@ static void magtape_callback(device_t *device) if (state->m_magtape.cpy_pending) { /* read command */ state->m_magtape.u.read.space_flag = FALSE; - device->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + device->state().set_state_int(TX0_IOS,1); device->state().set_state_int(TX0_LR, ((device->state().state_int(TX0_LR) >> 1) & 0333333) | ((buf & 040) << 12) | ((buf & 020) << 10) | ((buf & 010) << 8) | ((buf & 004) << 6) | ((buf & 002) << 4) | ((buf & 001) << 2)); /* check parity */ @@ -1212,7 +1212,7 @@ static void magtape_callback(device_t *device) device->state().set_state_int(TX0_PF, device->state().state_int(TX0_PF) | PF_PC); /* synchronize with cpy instruction */ if (state->m_magtape.cpy_pending) - device->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + device->state().set_state_int(TX0_IOS,1); else device->state().set_state_int(TX0_PF, device->state().state_int(TX0_PF) | PF_RWC); } @@ -1321,7 +1321,7 @@ static void magtape_callback(device_t *device) { if (state->m_magtape.cpy_pending) { - device->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + device->state().set_state_int(TX0_IOS,1); lr = device->state().state_int(TX0_LR); buf = ((lr >> 10) & 040) | ((lr >> 8) & 020) | ((lr >> 6) & 010) | ((lr >> 4) & 004) | ((lr >> 2) & 002) | (lr & 001); buf |= ((buf << 1) ^ (buf << 2) ^ (buf << 3) ^ (buf << 4) ^ (buf << 5) ^ (buf << 6) ^ ((!state->m_magtape.binary_flag) << 6)) & 0100; @@ -1404,7 +1404,7 @@ static void tx0_io_cpy(device_t *device) case MTS_UNSELECTED: case MTS_UNSELECTING: /* ignore instruction and set rwc flag? */ - device->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + device->state().set_state_int(TX0_IOS,1); break; case MTS_SELECTING: @@ -1414,7 +1414,7 @@ static void tx0_io_cpy(device_t *device) case 0: /* backspace */ case 2: /* rewind */ /* ignore instruction and set rwc flag? */ - device->state().set_state_int(TX0_IO_COMPLETE, (UINT64)0); + device->state().set_state_int(TX0_IOS,1); break; case 1: /* read */ case 3: /* write */