diff --git a/src/mame/drivers/cyclemb.c b/src/mame/drivers/cyclemb.c index 132999352a0..b76aad67d40 100644 --- a/src/mame/drivers/cyclemb.c +++ b/src/mame/drivers/cyclemb.c @@ -265,6 +265,12 @@ static ADDRESS_MAP_START( cyclemb_sound_io, ADDRESS_SPACE_IO, 8 ) AM_RANGE(0x40, 0x40) AM_READ(soundlatch_r) AM_WRITE(soundlatch2_w) ADDRESS_MAP_END +static MACHINE_RESET( cyclemb ) +{ + josvolly_8741_reset(); +} + + static INPUT_PORTS_START( cyclemb ) PORT_START("IN0") PORT_DIPNAME( 0x01, 0x01, "IN0" ) @@ -539,6 +545,8 @@ static MACHINE_DRIVER_START( cyclemb ) MDRV_VIDEO_START(cyclemb) MDRV_VIDEO_UPDATE(cyclemb) + MDRV_MACHINE_RESET(cyclemb) + /* sound hardware */ MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SOUND_ADD("aysnd", AY8910, 18000000/16) diff --git a/src/mame/machine/tait8741.c b/src/mame/machine/tait8741.c index 1ba6515243d..ab28534303f 100644 --- a/src/mame/machine/tait8741.c +++ b/src/mame/machine/tait8741.c @@ -389,7 +389,6 @@ typedef struct josvolly_8741_struct { UINT8 connect; UINT8 rst; - UINT8 mux_io; const char *initReadPort; }JV8741; @@ -421,8 +420,6 @@ void josvolly_8741_reset(void) i8741[2].initReadPort = "DSW1"; /* DUMMY */ i8741[3].initReadPort = "DSW2"; /* DUMMY */ - i8741[0].mux_io = 0; - i8741[1].mux_io = 0; } /* transmit data finish callback */ @@ -567,10 +564,10 @@ static void cyclemb_8741_w(const address_space *space, int num, int offset, int 0x01 sub NG RAM 0x00 ok */ - mcu->txd = 0 ^ 0x40; + mcu->rxd = 0 ^ 0x40; mcu->sts |= 0x02; /* ?? */ - mcu->rxd = 0; /* SBSTS ( DIAG ) , killed */ + //mcu->rxd = 0; /* SBSTS ( DIAG ) , killed */ mcu->sts |= 0x01; /* RD ready */ mcu->rst = 0; break; @@ -583,7 +580,6 @@ static void cyclemb_8741_w(const address_space *space, int num, int offset, int //mcu->rxd = input_port_read(space->machine, "DSW1"); mcu->sts |= 0x01; /* RD ready */ mcu->rst = 1; - mcu->mux_io = 0; break; case 0xf0: /* clear main sts ? */ @@ -597,8 +593,8 @@ static void cyclemb_8741_w(const address_space *space, int num, int offset, int /* data */ LOG(("%s:8741[%d] DW %02X\n", cpuexec_describe_context(space->machine), num, data)); - mcu->txd = data ^ 0x40; /* parity reverce ? */ - mcu->sts |= 0x02; /* TXD busy */ + mcu->txd = data; + mcu->sts |= 0x02; /* TXD busy */ #if 1 /* interrupt ? */ if(num == 0) @@ -623,12 +619,15 @@ static INT8 cyclemb_8741_r(const address_space *space,int num,int offset) { if(mcu->rst) { - static const char *const ports[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5" }; - mcu->rxd = input_port_read(space->machine, ports[mcu->mux_io]); /* port in */ - //printf("%02x\n",mcu->mux_io); - mcu->mux_io++; - if(mcu->mux_io > 5) - mcu->mux_io = 0; + //printf("%02x\n",mcu->txd); + switch(mcu->txd) + { + case 0x00: mcu->rxd = input_port_read(space->machine, "IN0"); //dip-sw1 + case 0x40: mcu->rxd = input_port_read(space->machine, "IN1"); //dip-sw3 + case 0x41: mcu->rxd = input_port_read(space->machine, "IN2"); //dip-sw3 + case 0x84: mcu->rxd = input_port_read(space->machine, "IN3"); //dip-sw3 + case 0x11: mcu->rxd = input_port_read(space->machine, "IN4"); //dip-sw3 + } } ret = mcu->sts; LOG(("%s:8741[%d] SR %02X\n",cpuexec_describe_context(space->machine),num,ret));