summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/cpu/pdp1/tx0.c8
-rw-r--r--src/mess/drivers/tx0.c20
2 files changed, 15 insertions, 13 deletions
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 */