trunk/src/emu/machine/at28c16.c
| r22728 | r22729 | |
| 87 | 87 | |
| 88 | 88 | void at28c16_device::device_start() |
| 89 | 89 | { |
| 90 | | m_write_timer = machine().scheduler().timer_alloc( FUNC(write_finished), this ); |
| 90 | m_write_timer = timer_alloc(0); |
| 91 | 91 | |
| 92 | 92 | save_item( NAME(m_a9_12v) ); |
| 93 | 93 | save_item( NAME(m_oe_12v) ); |
| r22728 | r22729 | |
| 182 | 182 | // READ/WRITE HANDLERS |
| 183 | 183 | //************************************************************************** |
| 184 | 184 | |
| 185 | | WRITE8_DEVICE_HANDLER( at28c16_w ) |
| 185 | WRITE8_MEMBER( at28c16_device::write ) |
| 186 | 186 | { |
| 187 | | downcast<at28c16_device *>( device )->write( offset, data ); |
| 188 | | } |
| 189 | | |
| 190 | | void at28c16_device::write( offs_t offset, UINT8 data ) |
| 191 | | { |
| 192 | 187 | if( m_last_write >= 0 ) |
| 193 | 188 | { |
| 194 | 189 | // logerror( "%s: AT28C16: write( %04x, %02x ) busy\n", machine.describe_context(), offset, data ); |
| r22728 | r22729 | |
| 225 | 220 | } |
| 226 | 221 | |
| 227 | 222 | |
| 228 | | READ8_DEVICE_HANDLER( at28c16_r ) |
| 223 | READ8_MEMBER( at28c16_device::read ) |
| 229 | 224 | { |
| 230 | | return downcast<at28c16_device *>( device )->read( offset ); |
| 231 | | } |
| 232 | | |
| 233 | | UINT8 at28c16_device::read( offs_t offset ) |
| 234 | | { |
| 235 | 225 | if( m_last_write >= 0 ) |
| 236 | 226 | { |
| 237 | 227 | UINT8 data = m_last_write ^ 0x80; |
| r22728 | r22729 | |
| 252 | 242 | } |
| 253 | 243 | |
| 254 | 244 | |
| 255 | | WRITE_LINE_DEVICE_HANDLER( at28c16_a9_12v ) |
| 245 | WRITE_LINE_MEMBER( at28c16_device::set_a9_12v ) |
| 256 | 246 | { |
| 257 | | downcast<at28c16_device *>( device )->set_a9_12v( state ); |
| 258 | | } |
| 259 | | |
| 260 | | void at28c16_device::set_a9_12v( int state ) |
| 261 | | { |
| 262 | 247 | state &= 1; |
| 263 | 248 | if( m_a9_12v != state ) |
| 264 | 249 | { |
| r22728 | r22729 | |
| 268 | 253 | } |
| 269 | 254 | |
| 270 | 255 | |
| 271 | | WRITE_LINE_DEVICE_HANDLER( at28c16_oe_12v ) |
| 256 | WRITE_LINE_MEMBER( at28c16_device::set_oe_12v ) |
| 272 | 257 | { |
| 273 | | downcast<at28c16_device *>( device )->set_oe_12v( state ); |
| 274 | | } |
| 275 | | |
| 276 | | void at28c16_device::set_oe_12v( int state ) |
| 277 | | { |
| 278 | 258 | state &= 1; |
| 279 | 259 | if( m_oe_12v != state ) |
| 280 | 260 | { |
| r22728 | r22729 | |
| 284 | 264 | } |
| 285 | 265 | |
| 286 | 266 | |
| 287 | | //************************************************************************** |
| 288 | | // INTERNAL HELPERS |
| 289 | | //************************************************************************** |
| 290 | | |
| 291 | | TIMER_CALLBACK( at28c16_device::write_finished ) |
| 267 | void at28c16_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) |
| 292 | 268 | { |
| 293 | | reinterpret_cast<at28c16_device *>(ptr)->m_last_write = -1; |
| 269 | switch( id ) |
| 270 | { |
| 271 | case 0: |
| 272 | m_last_write = -1; |
| 273 | break; |
| 274 | } |
| 294 | 275 | } |
trunk/src/emu/machine/at28c16.h
| r22728 | r22729 | |
| 44 | 44 | at28c16_device( const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock ); |
| 45 | 45 | |
| 46 | 46 | // I/O operations |
| 47 | | void write( offs_t offset, UINT8 data ); |
| 48 | | UINT8 read( offs_t offset ); |
| 49 | | void set_a9_12v( int state ); |
| 50 | | void set_oe_12v( int state ); |
| 47 | DECLARE_WRITE8_MEMBER( write ); |
| 48 | DECLARE_READ8_MEMBER( read ); |
| 49 | DECLARE_WRITE_LINE_MEMBER( set_a9_12v ); |
| 50 | DECLARE_WRITE_LINE_MEMBER( set_oe_12v ); |
| 51 | 51 | |
| 52 | 52 | protected: |
| 53 | 53 | // device-level overrides |
| r22728 | r22729 | |
| 55 | 55 | virtual void device_validity_check(validity_checker &valid) const; |
| 56 | 56 | virtual void device_start(); |
| 57 | 57 | virtual void device_reset(); |
| 58 | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |
| 58 | 59 | |
| 59 | 60 | // device_memory_interface overrides |
| 60 | 61 | virtual const address_space_config *memory_space_config( address_spacenum spacenum = AS_0 ) const; |
| r22728 | r22729 | |
| 64 | 65 | virtual void nvram_read( emu_file &file ); |
| 65 | 66 | virtual void nvram_write( emu_file &file ); |
| 66 | 67 | |
| 67 | | // internal helpers |
| 68 | | static TIMER_CALLBACK( write_finished ); |
| 69 | | |
| 70 | 68 | // internal state |
| 71 | 69 | address_space_config m_space_config; |
| 72 | 70 | emu_timer *m_write_timer; |
| r22728 | r22729 | |
| 79 | 77 | // device type definition |
| 80 | 78 | extern const device_type AT28C16; |
| 81 | 79 | |
| 82 | | |
| 83 | | //************************************************************************** |
| 84 | | // READ/WRITE HANDLERS |
| 85 | | //************************************************************************** |
| 86 | | |
| 87 | | DECLARE_WRITE8_DEVICE_HANDLER( at28c16_w ); |
| 88 | | DECLARE_READ8_DEVICE_HANDLER( at28c16_r ); |
| 89 | | WRITE_LINE_DEVICE_HANDLER( at28c16_a9_12v ); |
| 90 | | WRITE_LINE_DEVICE_HANDLER( at28c16_oe_12v ); |
| 91 | | |
| 92 | 80 | #endif |
trunk/src/mame/drivers/vegaeo.c
| r22728 | r22729 | |
| 144 | 144 | static ADDRESS_MAP_START( vega_map, AS_PROGRAM, 32, vegaeo_state ) |
| 145 | 145 | AM_RANGE(0x00000000, 0x001fffff) AM_RAM |
| 146 | 146 | AM_RANGE(0x80000000, 0x80013fff) AM_READWRITE(vega_vram_r, vega_vram_w) |
| 147 | | AM_RANGE(0xfc000000, 0xfc0000ff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0x000000ff) |
| 147 | AM_RANGE(0xfc000000, 0xfc0000ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x000000ff) |
| 148 | 148 | AM_RANGE(0xfc200000, 0xfc2003ff) AM_RAM_WRITE(vega_palette_w) AM_SHARE("paletteram") |
| 149 | 149 | AM_RANGE(0xfc400000, 0xfc40005b) AM_WRITENOP // crt registers ? |
| 150 | 150 | AM_RANGE(0xfc600000, 0xfc600003) AM_WRITE(soundlatch_w) |
trunk/src/mame/drivers/namcos11.c
| r22728 | r22729 | |
| 730 | 730 | static ADDRESS_MAP_START( namcos11_map, AS_PROGRAM, 32, namcos11_state ) |
| 731 | 731 | AM_RANGE(0x1fa04000, 0x1fa0ffff) AM_RAM AM_SHARE("sharedram") /* shared ram with C76 */ |
| 732 | 732 | AM_RANGE(0x1fa20000, 0x1fa2ffff) AM_WRITE(keycus_w) AM_SHARE("keycus") /* keycus */ |
| 733 | | AM_RANGE(0x1fa30000, 0x1fa30fff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0x00ff00ff) /* eeprom */ |
| 733 | AM_RANGE(0x1fa30000, 0x1fa30fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */ |
| 734 | 734 | AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITENOP /* ?? */ |
| 735 | 735 | AM_RANGE(0x1fbf6000, 0x1fbf6003) AM_WRITENOP /* ?? */ |
| 736 | 736 | ADDRESS_MAP_END |
trunk/src/mame/drivers/zn.c
| r22728 | r22729 | |
| 420 | 420 | AM_RANGE(0x1fa30000, 0x1fa30003) AM_NOP /* ?? */ |
| 421 | 421 | AM_RANGE(0x1fa40000, 0x1fa40003) AM_READNOP /* ?? */ |
| 422 | 422 | AM_RANGE(0x1fa60000, 0x1fa60003) AM_READNOP /* ?? */ |
| 423 | | AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0xffffffff) /* eeprom */ |
| 423 | AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xffffffff) /* eeprom */ |
| 424 | 424 | AM_RANGE(0x1fb20000, 0x1fb20007) AM_READ(unknown_r) |
| 425 | 425 | ADDRESS_MAP_END |
| 426 | 426 | |
trunk/src/mame/drivers/taitogn.c
| r22728 | r22729 | |
| 818 | 818 | AM_RANGE(0x1fa30000, 0x1fa30003) AM_READWRITE(control3_r, control3_w) |
| 819 | 819 | AM_RANGE(0x1fa51c00, 0x1fa51dff) AM_READNOP // systematic read at spu_address + 250000, result dropped, maybe other accesses |
| 820 | 820 | AM_RANGE(0x1fa60000, 0x1fa60003) AM_READ(hack1_r) |
| 821 | | AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0xffffffff) /* eeprom */ |
| 821 | AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xffffffff) /* eeprom */ |
| 822 | 822 | AM_RANGE(0x1fb00000, 0x1fb0ffff) AM_READWRITE(rf5c296_io_r, rf5c296_io_w) |
| 823 | 823 | AM_RANGE(0x1fb40000, 0x1fb40003) AM_READWRITE(control_r, control_w) |
| 824 | 824 | AM_RANGE(0x1fb60000, 0x1fb60003) AM_WRITE(control2_w) |
trunk/src/mame/drivers/namcos12.c
| r22728 | r22729 | |
| 1257 | 1257 | static ADDRESS_MAP_START( namcos12_map, AS_PROGRAM, 32, namcos12_state ) |
| 1258 | 1258 | AM_RANGE(0x1f000000, 0x1f000003) AM_READNOP AM_WRITE(bankoffset_w) /* banking */ |
| 1259 | 1259 | AM_RANGE(0x1f080000, 0x1f083fff) AM_READWRITE(sharedram_r, sharedram_w) AM_SHARE("sharedram") /* shared ram?? */ |
| 1260 | | AM_RANGE(0x1f140000, 0x1f140fff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0x00ff00ff) /* eeprom */ |
| 1260 | AM_RANGE(0x1f140000, 0x1f140fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */ |
| 1261 | 1261 | AM_RANGE(0x1f1bff08, 0x1f1bff0f) AM_WRITENOP /* ?? */ |
| 1262 | 1262 | AM_RANGE(0x1f700000, 0x1f70ffff) AM_WRITE(dmaoffset_w) /* dma */ |
| 1263 | 1263 | AM_RANGE(0x1fa00000, 0x1fbfffff) AM_ROMBANK("bank1") /* banked roms */ |
trunk/src/mame/drivers/namcond1.c
| r22728 | r22729 | |
| 80 | 80 | AM_RANGE(0x000000, 0x0fffff) AM_ROM |
| 81 | 81 | AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(namcond1_shared_ram_r,namcond1_shared_ram_w) AM_SHARE("shared_ram") |
| 82 | 82 | AM_RANGE(0x800000, 0x80000f) AM_READWRITE_LEGACY(ygv608_r,ygv608_w) |
| 83 | | AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0xff00) |
| 83 | AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xff00) |
| 84 | 84 | #ifdef MAME_DEBUG |
| 85 | 85 | AM_RANGE(0xb00000, 0xb00001) AM_READ_LEGACY(ygv608_debug_trigger) |
| 86 | 86 | #endif |