From 6fb2859b046a7153ecda5f32a98bfa780635689d Mon Sep 17 00:00:00 2001 From: smf- Date: Fri, 10 May 2013 10:37:05 +0000 Subject: [PATCH] finished modernizing at28c16 [smf] --- src/emu/machine/at28c16.c | 43 +++++++++++-------------------------- src/emu/machine/at28c16.h | 22 +++++-------------- src/mame/drivers/namcond1.c | 2 +- src/mame/drivers/namcos11.c | 2 +- src/mame/drivers/namcos12.c | 2 +- src/mame/drivers/taitogn.c | 2 +- src/mame/drivers/vegaeo.c | 2 +- src/mame/drivers/zn.c | 2 +- 8 files changed, 23 insertions(+), 54 deletions(-) diff --git a/src/emu/machine/at28c16.c b/src/emu/machine/at28c16.c index cf86fb80c89..9a64b6cdd22 100644 --- a/src/emu/machine/at28c16.c +++ b/src/emu/machine/at28c16.c @@ -87,7 +87,7 @@ const address_space_config *at28c16_device::memory_space_config( address_spacenu void at28c16_device::device_start() { - m_write_timer = machine().scheduler().timer_alloc( FUNC(write_finished), this ); + m_write_timer = timer_alloc(0); save_item( NAME(m_a9_12v) ); save_item( NAME(m_oe_12v) ); @@ -182,12 +182,7 @@ void at28c16_device::nvram_write( emu_file &file ) // READ/WRITE HANDLERS //************************************************************************** -WRITE8_DEVICE_HANDLER( at28c16_w ) -{ - downcast( device )->write( offset, data ); -} - -void at28c16_device::write( offs_t offset, UINT8 data ) +WRITE8_MEMBER( at28c16_device::write ) { if( m_last_write >= 0 ) { @@ -225,12 +220,7 @@ void at28c16_device::write( offs_t offset, UINT8 data ) } -READ8_DEVICE_HANDLER( at28c16_r ) -{ - return downcast( device )->read( offset ); -} - -UINT8 at28c16_device::read( offs_t offset ) +READ8_MEMBER( at28c16_device::read ) { if( m_last_write >= 0 ) { @@ -252,12 +242,7 @@ UINT8 at28c16_device::read( offs_t offset ) } -WRITE_LINE_DEVICE_HANDLER( at28c16_a9_12v ) -{ - downcast( device )->set_a9_12v( state ); -} - -void at28c16_device::set_a9_12v( int state ) +WRITE_LINE_MEMBER( at28c16_device::set_a9_12v ) { state &= 1; if( m_a9_12v != state ) @@ -268,12 +253,7 @@ void at28c16_device::set_a9_12v( int state ) } -WRITE_LINE_DEVICE_HANDLER( at28c16_oe_12v ) -{ - downcast( device )->set_oe_12v( state ); -} - -void at28c16_device::set_oe_12v( int state ) +WRITE_LINE_MEMBER( at28c16_device::set_oe_12v ) { state &= 1; if( m_oe_12v != state ) @@ -284,11 +264,12 @@ void at28c16_device::set_oe_12v( int state ) } -//************************************************************************** -// INTERNAL HELPERS -//************************************************************************** - -TIMER_CALLBACK( at28c16_device::write_finished ) +void at28c16_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - reinterpret_cast(ptr)->m_last_write = -1; + switch( id ) + { + case 0: + m_last_write = -1; + break; + } } diff --git a/src/emu/machine/at28c16.h b/src/emu/machine/at28c16.h index 81206458bef..f931ac249f5 100644 --- a/src/emu/machine/at28c16.h +++ b/src/emu/machine/at28c16.h @@ -44,10 +44,10 @@ public: at28c16_device( const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock ); // I/O operations - void write( offs_t offset, UINT8 data ); - UINT8 read( offs_t offset ); - void set_a9_12v( int state ); - void set_oe_12v( int state ); + DECLARE_WRITE8_MEMBER( write ); + DECLARE_READ8_MEMBER( read ); + DECLARE_WRITE_LINE_MEMBER( set_a9_12v ); + DECLARE_WRITE_LINE_MEMBER( set_oe_12v ); protected: // device-level overrides @@ -55,6 +55,7 @@ protected: virtual void device_validity_check(validity_checker &valid) const; virtual void device_start(); virtual void device_reset(); + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); // device_memory_interface overrides virtual const address_space_config *memory_space_config( address_spacenum spacenum = AS_0 ) const; @@ -64,9 +65,6 @@ protected: virtual void nvram_read( emu_file &file ); virtual void nvram_write( emu_file &file ); - // internal helpers - static TIMER_CALLBACK( write_finished ); - // internal state address_space_config m_space_config; emu_timer *m_write_timer; @@ -79,14 +77,4 @@ protected: // device type definition extern const device_type AT28C16; - -//************************************************************************** -// READ/WRITE HANDLERS -//************************************************************************** - -DECLARE_WRITE8_DEVICE_HANDLER( at28c16_w ); -DECLARE_READ8_DEVICE_HANDLER( at28c16_r ); -WRITE_LINE_DEVICE_HANDLER( at28c16_a9_12v ); -WRITE_LINE_DEVICE_HANDLER( at28c16_oe_12v ); - #endif diff --git a/src/mame/drivers/namcond1.c b/src/mame/drivers/namcond1.c index e5e87950b5f..b03e10bf191 100644 --- a/src/mame/drivers/namcond1.c +++ b/src/mame/drivers/namcond1.c @@ -80,7 +80,7 @@ static ADDRESS_MAP_START( namcond1_map, AS_PROGRAM, 16, namcond1_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(namcond1_shared_ram_r,namcond1_shared_ram_w) AM_SHARE("shared_ram") AM_RANGE(0x800000, 0x80000f) AM_READWRITE_LEGACY(ygv608_r,ygv608_w) - AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0xff00) + AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xff00) #ifdef MAME_DEBUG AM_RANGE(0xb00000, 0xb00001) AM_READ_LEGACY(ygv608_debug_trigger) #endif diff --git a/src/mame/drivers/namcos11.c b/src/mame/drivers/namcos11.c index 5502f3e940e..2ef154f603e 100644 --- a/src/mame/drivers/namcos11.c +++ b/src/mame/drivers/namcos11.c @@ -730,7 +730,7 @@ READ32_MEMBER(namcos11_state::lightgun_r) static ADDRESS_MAP_START( namcos11_map, AS_PROGRAM, 32, namcos11_state ) AM_RANGE(0x1fa04000, 0x1fa0ffff) AM_RAM AM_SHARE("sharedram") /* shared ram with C76 */ AM_RANGE(0x1fa20000, 0x1fa2ffff) AM_WRITE(keycus_w) AM_SHARE("keycus") /* keycus */ - AM_RANGE(0x1fa30000, 0x1fa30fff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0x00ff00ff) /* eeprom */ + AM_RANGE(0x1fa30000, 0x1fa30fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */ AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITENOP /* ?? */ AM_RANGE(0x1fbf6000, 0x1fbf6003) AM_WRITENOP /* ?? */ ADDRESS_MAP_END diff --git a/src/mame/drivers/namcos12.c b/src/mame/drivers/namcos12.c index 98d7af2f67e..0655e5b6777 100644 --- a/src/mame/drivers/namcos12.c +++ b/src/mame/drivers/namcos12.c @@ -1257,7 +1257,7 @@ WRITE32_MEMBER(namcos12_state::s12_dma_bias_w) static ADDRESS_MAP_START( namcos12_map, AS_PROGRAM, 32, namcos12_state ) AM_RANGE(0x1f000000, 0x1f000003) AM_READNOP AM_WRITE(bankoffset_w) /* banking */ AM_RANGE(0x1f080000, 0x1f083fff) AM_READWRITE(sharedram_r, sharedram_w) AM_SHARE("sharedram") /* shared ram?? */ - AM_RANGE(0x1f140000, 0x1f140fff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0x00ff00ff) /* eeprom */ + AM_RANGE(0x1f140000, 0x1f140fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */ AM_RANGE(0x1f1bff08, 0x1f1bff0f) AM_WRITENOP /* ?? */ AM_RANGE(0x1f700000, 0x1f70ffff) AM_WRITE(dmaoffset_w) /* dma */ AM_RANGE(0x1fa00000, 0x1fbfffff) AM_ROMBANK("bank1") /* banked roms */ diff --git a/src/mame/drivers/taitogn.c b/src/mame/drivers/taitogn.c index 8dd1b1e5c56..3b7591f5d7c 100644 --- a/src/mame/drivers/taitogn.c +++ b/src/mame/drivers/taitogn.c @@ -818,7 +818,7 @@ static ADDRESS_MAP_START( taitogn_map, AS_PROGRAM, 32, taitogn_state ) AM_RANGE(0x1fa30000, 0x1fa30003) AM_READWRITE(control3_r, control3_w) AM_RANGE(0x1fa51c00, 0x1fa51dff) AM_READNOP // systematic read at spu_address + 250000, result dropped, maybe other accesses AM_RANGE(0x1fa60000, 0x1fa60003) AM_READ(hack1_r) - AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0xffffffff) /* eeprom */ + AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xffffffff) /* eeprom */ AM_RANGE(0x1fb00000, 0x1fb0ffff) AM_READWRITE(rf5c296_io_r, rf5c296_io_w) AM_RANGE(0x1fb40000, 0x1fb40003) AM_READWRITE(control_r, control_w) AM_RANGE(0x1fb60000, 0x1fb60003) AM_WRITE(control2_w) diff --git a/src/mame/drivers/vegaeo.c b/src/mame/drivers/vegaeo.c index b3a7ff0473f..dbd8f54824f 100644 --- a/src/mame/drivers/vegaeo.c +++ b/src/mame/drivers/vegaeo.c @@ -144,7 +144,7 @@ WRITE32_MEMBER(vegaeo_state::soundlatch_w) static ADDRESS_MAP_START( vega_map, AS_PROGRAM, 32, vegaeo_state ) AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_RANGE(0x80000000, 0x80013fff) AM_READWRITE(vega_vram_r, vega_vram_w) - AM_RANGE(0xfc000000, 0xfc0000ff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0x000000ff) + AM_RANGE(0xfc000000, 0xfc0000ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x000000ff) AM_RANGE(0xfc200000, 0xfc2003ff) AM_RAM_WRITE(vega_palette_w) AM_SHARE("paletteram") AM_RANGE(0xfc400000, 0xfc40005b) AM_WRITENOP // crt registers ? AM_RANGE(0xfc600000, 0xfc600003) AM_WRITE(soundlatch_w) diff --git a/src/mame/drivers/zn.c b/src/mame/drivers/zn.c index 31d8f0ad939..9b8f2be2dff 100644 --- a/src/mame/drivers/zn.c +++ b/src/mame/drivers/zn.c @@ -420,7 +420,7 @@ static ADDRESS_MAP_START( zn_map, AS_PROGRAM, 32, zn_state ) AM_RANGE(0x1fa30000, 0x1fa30003) AM_NOP /* ?? */ AM_RANGE(0x1fa40000, 0x1fa40003) AM_READNOP /* ?? */ AM_RANGE(0x1fa60000, 0x1fa60003) AM_READNOP /* ?? */ - AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8_LEGACY("at28c16", at28c16_r, at28c16_w, 0xffffffff) /* eeprom */ + AM_RANGE(0x1faf0000, 0x1faf07ff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xffffffff) /* eeprom */ AM_RANGE(0x1fb20000, 0x1fb20007) AM_READ(unknown_r) ADDRESS_MAP_END