trunk/src/mess/machine/md_eeprom.c
| r21924 | r21925 | |
| 109 | 109 | |
| 110 | 110 | static const i2cmem_interface md_24c01_i2cmem_interface = |
| 111 | 111 | { |
| 112 | | I2CMEM_SLAVE_ADDRESS, 0, 0x80 |
| 112 | I2CMEM_SLAVE_ADDRESS, 4, 0x80 |
| 113 | 113 | }; |
| 114 | 114 | |
| 115 | 115 | |
| 116 | 116 | static const i2cmem_interface md_24c02_i2cmem_interface = |
| 117 | 117 | { |
| 118 | | I2CMEM_SLAVE_ADDRESS, 0, 0x100 |
| 118 | I2CMEM_SLAVE_ADDRESS, 4, 0x100 |
| 119 | 119 | }; |
| 120 | 120 | |
| 121 | 121 | |
| 122 | 122 | static const i2cmem_interface md_24c16_i2cmem_interface = |
| 123 | 123 | { |
| 124 | | I2CMEM_SLAVE_ADDRESS, 0, 0x800 |
| 124 | I2CMEM_SLAVE_ADDRESS, 8, 0x800 |
| 125 | 125 | }; |
| 126 | 126 | |
| 127 | 127 | |
| 128 | 128 | static const i2cmem_interface md_24c64_i2cmem_interface = |
| 129 | 129 | { |
| 130 | | I2CMEM_SLAVE_ADDRESS, 0, 0x2000 |
| 130 | I2CMEM_SLAVE_ADDRESS, 8, 0x2000 |
| 131 | 131 | }; |
| 132 | 132 | |
| 133 | 133 | |
| r21924 | r21925 | |
| 217 | 217 | { |
| 218 | 218 | if (offset == 0x200000/2) |
| 219 | 219 | { |
| 220 | | // m_i2c_mem = i2cmem_sda_read(m_i2cmem); |
| 221 | | return ~m_i2c_mem & 1; |
| 220 | return i2cmem_sda_read(m_i2cmem); |
| 222 | 221 | } |
| 223 | 222 | if (offset < 0x400000/2) |
| 224 | 223 | return m_rom[MD_ADDR(offset)]; |
| r21924 | r21925 | |
| 242 | 241 | if (offset == 0x200000/2) |
| 243 | 242 | { |
| 244 | 243 | // m_i2c_mem = i2cmem_sda_read(m_i2cmem); |
| 245 | | return m_i2c_mem & 1; |
| 244 | return i2cmem_sda_read(m_i2cmem); |
| 246 | 245 | } |
| 247 | 246 | if (offset < 0x400000/2) |
| 248 | 247 | return m_rom[MD_ADDR(offset)]; |
| r21924 | r21925 | |
| 266 | 265 | if (offset == 0x200000/2) |
| 267 | 266 | { |
| 268 | 267 | // m_i2c_mem = i2cmem_sda_read(m_i2cmem); |
| 269 | | return m_i2c_mem & 1; |
| 268 | return i2cmem_sda_read(m_i2cmem); |
| 270 | 269 | } |
| 271 | 270 | if (offset < 0x400000/2) |
| 272 | 271 | return m_rom[MD_ADDR(offset)]; |
| r21924 | r21925 | |
| 278 | 277 | { |
| 279 | 278 | if (offset == 0x200000/2) |
| 280 | 279 | { |
| 281 | | m_i2c_clk = BIT(data, 8); |
| 282 | | m_i2c_mem = BIT(data, 0); |
| 283 | | i2cmem_scl_write(m_i2cmem, m_i2c_clk); |
| 284 | | i2cmem_sda_write(m_i2cmem, m_i2c_mem); |
| 280 | if(ACCESSING_BITS_8_15) |
| 281 | { |
| 282 | m_i2c_clk = BIT(data, 8); |
| 283 | i2cmem_scl_write(m_i2cmem, m_i2c_clk); |
| 284 | } |
| 285 | |
| 286 | if(ACCESSING_BITS_0_7) |
| 287 | { |
| 288 | m_i2c_mem = BIT(data, 0); |
| 289 | i2cmem_sda_write(m_i2cmem, m_i2c_mem); |
| 290 | } |
| 285 | 291 | } |
| 286 | 292 | } |
| 287 | 293 | |
| r21924 | r21925 | |
| 291 | 297 | if (offset == 0x200000/2) |
| 292 | 298 | { |
| 293 | 299 | // m_i2c_mem = i2cmem_sda_read(m_i2cmem); |
| 294 | | return m_i2c_mem & 1; |
| 300 | return i2cmem_sda_read(m_i2cmem); |
| 295 | 301 | } |
| 296 | 302 | if (offset < 0x400000/2) |
| 297 | 303 | return m_rom[MD_ADDR(offset)]; |
| r21924 | r21925 | |
| 303 | 309 | { |
| 304 | 310 | if (offset == 0x200000/2) |
| 305 | 311 | { |
| 306 | | m_i2c_clk = BIT(data, 8); |
| 307 | | m_i2c_mem = BIT(data, 0); |
| 308 | | i2cmem_scl_write(m_i2cmem, m_i2c_clk); |
| 309 | | i2cmem_sda_write(m_i2cmem, m_i2c_mem); |
| 312 | if(ACCESSING_BITS_8_15) |
| 313 | { |
| 314 | m_i2c_clk = BIT(data, 8); |
| 315 | i2cmem_scl_write(m_i2cmem, m_i2c_clk); |
| 316 | } |
| 317 | |
| 318 | if(ACCESSING_BITS_0_7) |
| 319 | { |
| 320 | m_i2c_mem = BIT(data, 0); |
| 321 | i2cmem_sda_write(m_i2cmem, m_i2c_mem); |
| 322 | } |
| 310 | 323 | } |
| 311 | 324 | } |
| 312 | 325 | |
| r21924 | r21925 | |
| 316 | 329 | if (offset == 0x200000/2) |
| 317 | 330 | { |
| 318 | 331 | // m_i2c_mem = i2cmem_sda_read(m_i2cmem); |
| 319 | | return m_i2c_mem & 1; |
| 332 | return i2cmem_sda_read(m_i2cmem); |
| 320 | 333 | } |
| 321 | 334 | if (offset < 0x400000/2) |
| 322 | 335 | return m_rom[MD_ADDR(offset)]; |
| r21924 | r21925 | |
| 340 | 353 | if (offset == 0x200000/2) |
| 341 | 354 | { |
| 342 | 355 | // m_i2c_mem = i2cmem_sda_read(m_i2cmem); |
| 343 | | return (m_i2c_mem & 1) << 7; |
| 356 | return (i2cmem_sda_read(m_i2cmem) & 1) << 7; |
| 344 | 357 | } |
| 345 | 358 | if (offset < 0x400000/2) |
| 346 | 359 | return m_rom[MD_ADDR(offset)]; |
| r21924 | r21925 | |
| 364 | 377 | if (offset == 0x380000/2) |
| 365 | 378 | { |
| 366 | 379 | // m_i2c_mem = i2cmem_sda_read(m_i2cmem); |
| 367 | | return (m_i2c_mem & 1) << 7; |
| 380 | return (i2cmem_sda_read(m_i2cmem) & 1) << 7; |
| 368 | 381 | } |
| 369 | 382 | if (offset < 0x400000/2) |
| 370 | 383 | return m_rom[MD_ADDR(offset)]; |