diff --git a/src/emu/machine/jvshost.c b/src/emu/machine/jvshost.c index dd3bf50d22f..c406afff250 100644 --- a/src/emu/machine/jvshost.c +++ b/src/emu/machine/jvshost.c @@ -48,17 +48,13 @@ void jvs_host::commit_raw() // - have the message length without the two header bytes but with the checksum byte in the second byte // - have at least one command byte if(send_size < 3 || send_buffer[0] == 0x00 || send_buffer[1] != send_size-1) { - logerror("JVS checksum error\n"); - } /* - Naomi suchie3 have bad working controls with this - - // "This message is crap" doesn't exist so call it checksum error - recv_buffer[0] = 0x00; - recv_buffer[1] = 0x02; - recv_buffer[2] = 0x03; - recv_size = 3; - - } else */ { + logerror("JVS checksum error\n"); + // "This message is crap" doesn't exist so call it checksum error + recv_buffer[0] = 0x00; + recv_buffer[1] = 0x02; + recv_buffer[2] = 0x03; + recv_size = 3; + } else { if(first_device) { first_device->message(send_buffer[0], send_buffer+2, send_size-2, recv_buffer+2, recv_size); recv_is_encoded = false; @@ -146,7 +142,7 @@ void jvs_host::decode(UINT8 *buffer, UINT32 &size) if(!size) return; UINT32 pos = 0; - for(UINT32 i=0; iget_encoded_reply(buf, size); @@ -329,9 +333,10 @@ READ8_MEMBER(mie_device::jvs_r) WRITE8_MEMBER(mie_device::jvs_w) { - // Hack until the ports are better understood - if(jvs_dest == 2) - jvs->push(data); + if (jvs_lcr & 0x80) + return; + + jvs->push(data); } WRITE8_MEMBER(mie_device::jvs_dest_w) @@ -359,6 +364,11 @@ WRITE8_MEMBER(mie_device::jvs_control_w) jvs_control = data; } +WRITE8_MEMBER(mie_device::jvs_lcr_w) +{ + jvs_lcr = data; +} + READ8_MEMBER(mie_device::jvs_sense_r) { return 0x8c | (jvs->get_address_set_line() ? 2 : 0) | (jvs->get_presence_line() ? 0 : 1); diff --git a/src/mame/machine/mie.h b/src/mame/machine/mie.h index 7924afbbc1c..babe47ad830 100644 --- a/src/mame/machine/mie.h +++ b/src/mame/machine/mie.h @@ -61,6 +61,7 @@ public: DECLARE_READ8_MEMBER(jvs_status_r); DECLARE_WRITE8_MEMBER(jvs_control_w); DECLARE_READ8_MEMBER(jvs_sense_r); + DECLARE_WRITE8_MEMBER(jvs_lcr_w); DECLARE_READ8_MEMBER(read_ff); DECLARE_READ8_MEMBER(read_00); @@ -106,6 +107,7 @@ private: UINT8 gpiodir, gpio_val[8]; UINT8 irq_enable, irq_pending, maple_irqlevel; UINT8 jvs_control, jvs_dest; + UINT8 jvs_lcr; void raise_irq(int level); void recalc_irq();