trunk/src/emu/machine/7200fifo.c
r23301 | r23302 | |
4 | 4 | |
5 | 5 | TODO: |
6 | 6 | - retransmit (RT pin) |
| 7 | - cascaded width expansion mode (when needed) |
7 | 8 | |
8 | 9 | **********************************************************************/ |
9 | 10 | |
r23301 | r23302 | |
71 | 72 | |
72 | 73 | |
73 | 74 | |
74 | | void fifo7200_device::fifo_write(UINT32 data) |
| 75 | void fifo7200_device::fifo_write(UINT16 data) |
75 | 76 | { |
76 | 77 | if (m_ff) |
77 | 78 | { |
r23301 | r23302 | |
79 | 80 | return; |
80 | 81 | } |
81 | 82 | |
82 | | m_buffer[m_write_ptr] = data; |
| 83 | m_buffer[m_write_ptr] = data & 0x1ff; |
83 | 84 | m_write_ptr = (m_write_ptr + 1) % m_ram_size; |
84 | 85 | |
85 | 86 | // update flags |
r23301 | r23302 | |
102 | 103 | } |
103 | 104 | } |
104 | 105 | |
105 | | UINT32 fifo7200_device::fifo_read() |
| 106 | UINT16 fifo7200_device::fifo_read() |
106 | 107 | { |
107 | 108 | if (m_ef) |
108 | 109 | { |
109 | 110 | logerror("IDT7200 %s fifo_read underflow!\n", tag()); |
110 | | return ~0; |
| 111 | return 0x1ff; |
111 | 112 | } |
112 | 113 | |
113 | 114 | UINT16 ret = m_buffer[m_read_ptr]; |
trunk/src/emu/machine/7200fifo.h
r23301 | r23302 | |
102 | 102 | DECLARE_WRITE8_MEMBER( data_byte_w ) { fifo_write(data); } |
103 | 103 | DECLARE_READ8_MEMBER( data_byte_r ) { return (UINT8)fifo_read(); } |
104 | 104 | |
105 | | // use these for configurations in cascaded width expansion mode using more than 16 bits |
106 | | DECLARE_WRITE32_MEMBER( data_dword_w ) { fifo_write(data); } |
107 | | DECLARE_READ32_MEMBER( data_dword_r ) { return (UINT32)fifo_read(); } |
108 | | |
109 | 105 | protected: |
110 | 106 | // device-level overrides |
111 | 107 | virtual void device_start(); |
112 | 108 | virtual void device_reset(); |
113 | 109 | |
114 | 110 | private: |
115 | | void fifo_write(UINT32 data); |
116 | | UINT32 fifo_read(); |
| 111 | void fifo_write(UINT16 data); |
| 112 | UINT16 fifo_read(); |
117 | 113 | |
118 | 114 | UINT16* m_buffer; |
119 | 115 | int m_ram_size; |