Previous 199869 Revisions Next

r21735 Saturday 9th March, 2013 at 04:27:12 UTC by R. Belmont
(nw)
[src/mess/machine]3c505.c

trunk/src/mess/machine/3c505.c
r21734r21735
2727
2828#define  MAINCPU "maincpu"
2929
30#ifdef LSB_FIRST
31static UINT16 uint16_to_le(UINT16 value)
32{
33   return value;
34}
35
36static UINT16 uint16_from_le(UINT16 value)
37{
38   return ((value&0x00ff)<<8)|((value&0xff00)>>8);
39}
40#else
41static UINT16 uint16_to_le(UINT16 value)
42{
43   return ((value&0x00ff)<<8)|((value&0xff00)>>8);
44}
45
46static UINT16 uint16_from_le(UINT16 value)
47{
48   return value;
49}
50#endif
51
3052//**************************************************************************
3153//  CONSTANTS
3254//**************************************************************************
r21734r21735
644666//         m_response.data.rcv_resp.buf_len = htole16(buf_len);
645667
646668         // htole16 and friends are not portable beyond Linux.  It's named differently on *BSD and differently again on OS X.  Avoid!
647         #ifdef LSB_FIRST
648         m_response.data.rcv_resp.pkt_len = m_rx_data_buffer.get_length();
669         m_response.data.rcv_resp.pkt_len = uint16_to_le(m_rx_data_buffer.get_length());
649670         m_response.data.rcv_resp.timeout = 0; // successful completion
650         m_response.data.rcv_resp.status  = m_rx_data_buffer.get_length() > 0 ? 0 : 0xffff;
671         m_response.data.rcv_resp.status  = uint16_to_le(m_rx_data_buffer.get_length() > 0 ? 0 : 0xffff);
651672         m_response.data.rcv_resp.timetag = 0; // TODO: time tag
652         #else
653         UINT16 temp;
654         temp = m_rx_data_buffer.get_length();
655         m_response.data.rcv_resp.pkt_len = (temp << 8) | (temp>>8);
656         m_response.data.rcv_resp.timeout = 0; // successful completion
657         temp  = m_rx_data_buffer.get_length() > 0 ? 0 : 0xffff;
658         m_response.data.rcv_resp.status = (temp << 8) | (temp>>8);                                                                             
659         m_response.data.rcv_resp.timetag = 0; // TODO: time tag
660         #endif
661673
662674         // compute and check no of bytes to be DMA'ed (must be even)
663         #ifdef LSB_FIRST
664         UINT16 buf_len = m_response.data.rcv_resp.buf_len & ~1;
665         #else
666         UINT16 buf_len = ((m_response.data.rcv_resp.buf_len&0xff)<<8) || ((m_response.data.rcv_resp.buf_len&0xff00)>>8) & ~1;
667         #endif
675         UINT16 buf_len = uint16_from_le(m_response.data.rcv_resp.buf_len) & ~1;
668676         if (m_rx_data_buffer.get_length() > buf_len)
669677         {
670678            LOG1(("do_receive_command !!! buffer size too small (%d < %d)", buf_len, m_rx_data_buffer.get_length()));
671            #ifdef LSB_FIRST
672            m_response.data.rcv_resp.pkt_len = buf_len;
673            #else
674            m_response.data.rcv_resp.pkt_len = ((buf_len & 0xff)<<8) | ((buf_len & 0xff00)>>8);
675            #endif
679            m_response.data.rcv_resp.pkt_len = uint16_to_le(buf_len);
676680            m_response.data.rcv_resp.status = 0xffff;
677681         }
678682         else
679683         {
680684            buf_len = (m_rx_data_buffer.get_length() + 1) & ~1;
681            #ifdef LSB_FIRST
682            m_response.data.rcv_resp.pkt_len = buf_len;
683            #else
684            m_response.data.rcv_resp.pkt_len = ((buf_len & 0xff)<<8) | ((buf_len & 0xff00)>>8);
685            #endif
685            m_response.data.rcv_resp.pkt_len = uint16_to_le(buf_len);
686686         }
687687
688688         m_response_length = m_response.length + 2;
r21734r21735
815815
816816   case CMD_NETWORK_STATISTICS: // 0x0a
817817      m_response.length = sizeof(struct Netstat);
818      m_response.data.netstat.tot_recv = htole16(m_netstat.tot_recv);
819      m_response.data.netstat.tot_xmit = htole16(m_netstat.tot_xmit);
820      m_response.data.netstat.err_CRC = htole16(m_netstat.err_CRC);
821      m_response.data.netstat.err_align = htole16(m_netstat.err_align);
822      m_response.data.netstat.err_res = htole16(m_netstat.err_res);
823      m_response.data.netstat.err_ovrrun = htole16(m_netstat.err_ovrrun);
818      m_response.data.netstat.tot_recv = uint16_to_le(m_netstat.tot_recv);
819      m_response.data.netstat.tot_xmit = uint16_to_le(m_netstat.tot_xmit);
820      m_response.data.netstat.err_CRC = uint16_to_le(m_netstat.err_CRC);
821      m_response.data.netstat.err_align = uint16_to_le(m_netstat.err_align);
822      m_response.data.netstat.err_res = uint16_to_le(m_netstat.err_res);
823      m_response.data.netstat.err_ovrrun = uint16_to_le(m_netstat.err_ovrrun);
824824      break;
825825
826826   case CMD_ADAPTER_INFO: // 0x11
r21734r21735
828828      // FIXME: using demo data
829829      m_response.data.info.minor_vers = 1;
830830      m_response.data.info.major_vers = 2;
831      m_response.data.info.ROM_cksum = htole16(3);
832      m_response.data.info.RAM_sz = htole16(4);
833      m_response.data.info.free_ofs = htole16(5);
834      m_response.data.info.free_seg = htole16(6);
831      m_response.data.info.ROM_cksum = uint16_to_le(3);
832      m_response.data.info.RAM_sz = uint16_to_le(4);
833      m_response.data.info.free_ofs = uint16_to_le(5);
834      m_response.data.info.free_seg = uint16_to_le(6);
835835      break;
836836
837837   case CMD_LOAD_MULTICAST_LIST:// 0x0b

Previous 199869 Revisions Next


© 1997-2024 The MAME Team