diff options
Diffstat (limited to 'trunk/src/emu/machine/at28c16.h')
-rw-r--r-- | trunk/src/emu/machine/at28c16.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/trunk/src/emu/machine/at28c16.h b/trunk/src/emu/machine/at28c16.h new file mode 100644 index 00000000000..d81fe6abe0e --- /dev/null +++ b/trunk/src/emu/machine/at28c16.h @@ -0,0 +1,92 @@ +/*************************************************************************** + + ATMEL AT28C16 + + 16K ( 2K x 8 ) Parallel EEPROM + +***************************************************************************/ + +#pragma once + +#ifndef __AT28C16_H__ +#define __AT28C16_H__ + + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_AT28C16_ADD( _tag, _interface ) \ + MCFG_DEVICE_ADD( _tag, AT28C16, 0 ) + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> at28c16_interface + +struct at28c16_interface +{ +}; + + +// ======================> at28c16_device + +class at28c16_device : + public device_t, + public device_memory_interface, + public device_nvram_interface, + public at28c16_interface +{ +public: + // construction/destruction + 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 ); + +protected: + // device-level overrides + virtual void device_config_complete(); + virtual void device_validity_check(validity_checker &valid) const; + virtual void device_start(); + virtual void device_reset(); + + // device_memory_interface overrides + virtual const address_space_config *memory_space_config( address_spacenum spacenum = AS_0 ) const; + + // device_nvram_interface overrides + virtual void nvram_default(); + 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; + int m_a9_12v; + int m_oe_12v; + int m_last_write; +}; + + +// device type definition +extern const device_type AT28C16; + + +//************************************************************************** +// READ/WRITE HANDLERS +//************************************************************************** + +WRITE8_DEVICE_HANDLER( at28c16_w ); +READ8_DEVICE_HANDLER( at28c16_r ); +WRITE_LINE_DEVICE_HANDLER( at28c16_a9_12v ); +WRITE_LINE_DEVICE_HANDLER( at28c16_oe_12v ); + +#endif |