mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
(MESS) TX0 : Fixed paper tape reader [Robbbert]
(out of whatsnew) Since this system is very much like the pdp1, it is assumed the same mods are needed. However there is no software available in the required format to test with.
This commit is contained in:
parent
0961501e5d
commit
aa45db4e8e
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user