diff options
author | 2013-07-29 07:34:22 +0000 | |
---|---|---|
committer | 2013-07-29 07:34:22 +0000 | |
commit | ef3fdf419561d4c237630d1aeb4a31be91708ceb (patch) | |
tree | a042b7cf6bd4fd6afda13bd9a2d9e4652c5b0352 | |
parent | b25cb902d5f6fdadf9485b1a3ab60f4762246300 (diff) |
Rewrite serial EEPROM devices, breaking them out into separate chips of
the proper size and protocol. Update all drivers, removing custom
implementations, and replacing them with standard ones. Moved core read,
write, erase functionality into the EEPROM base class a simulated delays
in write/erase cycles. Still some more testing/verification work left
to do.
164 files changed, 1983 insertions, 1982 deletions
diff --git a/src/emu/machine/eeprom.c b/src/emu/machine/eeprom.c index 62f88ae4cae..e8a6a7f16a9 100644 --- a/src/emu/machine/eeprom.c +++ b/src/emu/machine/eeprom.c @@ -55,12 +55,11 @@ // GLOBAL VARIABLES //************************************************************************** -static ADDRESS_MAP_START( eeprom_map8, AS_PROGRAM, 8, base_eeprom_device ) +static ADDRESS_MAP_START( eeprom_map8, AS_PROGRAM, 8, eeprom_base_device ) AM_RANGE(0x0000, 0x0fff) AM_RAM ADDRESS_MAP_END - -static ADDRESS_MAP_START( eeprom_map16, AS_PROGRAM, 16, base_eeprom_device ) +static ADDRESS_MAP_START( eeprom_map16, AS_PROGRAM, 16, eeprom_base_device ) AM_RANGE(0x0000, 0x07ff) AM_RAM ADDRESS_MAP_END @@ -71,10 +70,10 @@ ADDRESS_MAP_END //************************************************************************** //------------------------------------------------- -// base_eeprom_device - constructor +// eeprom_base_device - constructor //------------------------------------------------- -base_eeprom_device::base_eeprom_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file) +eeprom_base_device::eeprom_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file) : device_t(mconfig, devtype, name, tag, owner, 0, shortname, file), device_memory_interface(mconfig, *this), device_nvram_interface(mconfig, *this), @@ -84,8 +83,13 @@ base_eeprom_device::base_eeprom_device(const machine_config &mconfig, device_typ m_default_data(0), m_default_data_size(0), m_default_value(0), - m_default_value_set(false) + m_default_value_set(false), + m_completion_time(attotime::zero) { + m_operation_time[WRITE_TIME] = attotime::from_msec(2); + m_operation_time[WRITE_ALL_TIME] = attotime::from_msec(8); + m_operation_time[ERASE_TIME] = attotime::from_msec(1); + m_operation_time[ERASE_ALL_TIME] = attotime::from_msec(8); } @@ -94,9 +98,9 @@ base_eeprom_device::base_eeprom_device(const machine_config &mconfig, device_typ // to set the default data //------------------------------------------------- -void base_eeprom_device::static_set_size(device_t &device, int cells, int cellbits) +void eeprom_base_device::static_set_size(device_t &device, int cells, int cellbits) { - base_eeprom_device &eeprom = downcast<base_eeprom_device &>(device); + eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device); eeprom.m_cells = cells; eeprom.m_data_bits = cellbits; @@ -122,17 +126,17 @@ void base_eeprom_device::static_set_size(device_t &device, int cells, int cellbi // to set the default data //------------------------------------------------- -void base_eeprom_device::static_set_default_data(device_t &device, const UINT8 *data, UINT32 size) +void eeprom_base_device::static_set_default_data(device_t &device, const UINT8 *data, UINT32 size) { - base_eeprom_device &eeprom = downcast<base_eeprom_device &>(device); + eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device); assert(eeprom.m_data_bits == 8); eeprom.m_default_data.u8 = const_cast<UINT8 *>(data); eeprom.m_default_data_size = size; } -void base_eeprom_device::static_set_default_data(device_t &device, const UINT16 *data, UINT32 size) +void eeprom_base_device::static_set_default_data(device_t &device, const UINT16 *data, UINT32 size) { - base_eeprom_device &eeprom = downcast<base_eeprom_device &>(device); + eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device); assert(eeprom.m_data_bits == 16); eeprom.m_default_data.u16 = const_cast<UINT16 *>(data); eeprom.m_default_data_size = size / 2; @@ -144,37 +148,90 @@ void base_eeprom_device::static_set_default_data(device_t &device, const UINT16 // to set the default value //------------------------------------------------- -void base_eeprom_device::static_set_default_value(device_t &device, UINT32 value) +void eeprom_base_device::static_set_default_value(device_t &device, UINT32 value) { - base_eeprom_device &eeprom = downcast<base_eeprom_device &>(device); + eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device); eeprom.m_default_value = value; eeprom.m_default_value_set = true; } //------------------------------------------------- -// read_data - read data at the given address +// static_set_timing - configuration helper +// to set timing constants for various operations //------------------------------------------------- -UINT32 base_eeprom_device::read_data(offs_t address) +void eeprom_base_device::static_set_timing(device_t &device, timing_type type, attotime duration) { - if (m_data_bits == 16) - return m_addrspace[0]->read_word(address * 2); - else - return m_addrspace[0]->read_byte(address); + downcast<eeprom_base_device &>(device).m_operation_time[type] = duration; } //------------------------------------------------- -// write_data - write data at the given address +// read - read data at the given address //------------------------------------------------- -void base_eeprom_device::write_data(offs_t address, UINT32 data) +UINT32 eeprom_base_device::read(offs_t address) { - if (m_data_bits == 16) - m_addrspace[0]->write_word(address * 2, data); - else - m_addrspace[0]->write_byte(address, data); + if (!ready()) + logerror("EEPROM: Read performed before previous operation completed!"); + return internal_read(address); +} + + +//------------------------------------------------- +// write - write data at the given address +//------------------------------------------------- + +void eeprom_base_device::write(offs_t address, UINT32 data) +{ + if (!ready()) + logerror("EEPROM: Write performed before previous operation completed!"); + internal_write(address, data); + m_completion_time = machine().time() + m_operation_time[WRITE_TIME]; +} + + +//------------------------------------------------- +// write_all - write data at all addresses +// (assumes an erase has previously been +// performed) +//------------------------------------------------- + +void eeprom_base_device::write_all(UINT32 data) +{ + if (!ready()) + logerror("EEPROM: Write all performed before previous operation completed!"); + for (offs_t address = 0; address < (1 << m_address_bits); address++) + internal_write(address, internal_read(address) & data); + m_completion_time = machine().time() + m_operation_time[WRITE_ALL_TIME]; +} + + +//------------------------------------------------- +// erase - erase data at the given address +//------------------------------------------------- + +void eeprom_base_device::erase(offs_t address) +{ + if (!ready()) + logerror("EEPROM: Erase performed before previous operation completed!"); + internal_write(address, ~0); + m_completion_time = machine().time() + m_operation_time[ERASE_TIME]; +} + + +//------------------------------------------------- +// erase_all - erase data at all addresses +//------------------------------------------------- + +void eeprom_base_device::erase_all() +{ + if (!ready()) + logerror("EEPROM: Erase all performed before previous operation completed!"); + for (offs_t address = 0; address < (1 << m_address_bits); address++) + internal_write(address, ~0); + m_completion_time = machine().time() + m_operation_time[ERASE_ALL_TIME]; } @@ -183,7 +240,7 @@ void base_eeprom_device::write_data(offs_t address, UINT32 data) // on this device //------------------------------------------------- -void base_eeprom_device::device_validity_check(validity_checker &valid) const +void eeprom_base_device::device_validity_check(validity_checker &valid) const { // ensure the number of cells is an even power of 2 if (m_cells != (1 << m_address_bits)) @@ -199,8 +256,10 @@ void base_eeprom_device::device_validity_check(validity_checker &valid) const // device_start - device-specific startup //------------------------------------------------- -void base_eeprom_device::device_start() +void eeprom_base_device::device_start() { + // save states + save_item(NAME(m_completion_time)); } @@ -208,8 +267,10 @@ void base_eeprom_device::device_start() // device_reset - device-specific reset //------------------------------------------------- -void base_eeprom_device::device_reset() +void eeprom_base_device::device_reset() { + // reset any pending operations + m_completion_time = attotime::zero; } @@ -218,7 +279,7 @@ void base_eeprom_device::device_reset() // any address spaces owned by this device //------------------------------------------------- -const address_space_config *base_eeprom_device::memory_space_config(address_spacenum spacenum) const +const address_space_config *eeprom_base_device::memory_space_config(address_spacenum spacenum) const { return (spacenum == 0) ? &m_space_config : NULL; } @@ -229,7 +290,7 @@ const address_space_config *base_eeprom_device::memory_space_config(address_spac // its default state //------------------------------------------------- -void base_eeprom_device::nvram_default() +void eeprom_base_device::nvram_default() { UINT32 eeprom_length = 1 << m_address_bits; UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8; @@ -276,7 +337,7 @@ void base_eeprom_device::nvram_default() // .nv file //------------------------------------------------- -void base_eeprom_device::nvram_read(emu_file &file) +void eeprom_base_device::nvram_read(emu_file &file) { UINT32 eeprom_length = 1 << m_address_bits; UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8; @@ -293,7 +354,7 @@ void base_eeprom_device::nvram_read(emu_file &file) // .nv file //------------------------------------------------- -void base_eeprom_device::nvram_write(emu_file &file) +void eeprom_base_device::nvram_write(emu_file &file) { UINT32 eeprom_length = 1 << m_address_bits; UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8; @@ -303,3 +364,30 @@ void base_eeprom_device::nvram_write(emu_file &file) buffer[offs] = m_addrspace[0]->read_byte(offs); file.write(buffer, eeprom_bytes); } + + +//------------------------------------------------- +// internal_read - read data at the given address +//------------------------------------------------- + +UINT32 eeprom_base_device::internal_read(offs_t address) +{ + if (m_data_bits == 16) + return m_addrspace[0]->read_word(address * 2); + else + return m_addrspace[0]->read_byte(address); +} + + +//------------------------------------------------- +// internal_write - write data at the given +// address +//------------------------------------------------- + +void eeprom_base_device::internal_write(offs_t address, UINT32 data) +{ + if (m_data_bits == 16) + m_addrspace[0]->write_word(address * 2, data); + else + m_addrspace[0]->write_byte(address, data); +} diff --git a/src/emu/machine/eeprom.h b/src/emu/machine/eeprom.h index 7ac10097ef5..e90228d7a55 100644 --- a/src/emu/machine/eeprom.h +++ b/src/emu/machine/eeprom.h @@ -49,11 +49,20 @@ //************************************************************************** #define MCFG_EEPROM_SIZE(_cells, _cellbits) \ - base_eeprom_device::static_set_size(*device, _cells, _cellbits); + eeprom_base_device::static_set_size(*device, _cells, _cellbits); #define MCFG_EEPROM_DATA(_data, _size) \ - base_eeprom_device::static_set_default_data(*device, _data, _size); + eeprom_base_device::static_set_default_data(*device, _data, _size); #define MCFG_EEPROM_DEFAULT_VALUE(_value) \ - base_eeprom_device::static_set_default_value(*device, _value); + eeprom_base_device::static_set_default_value(*device, _value); + +#define MCFG_EEPROM_WRITE_TIME(_value) \ + eeprom_base_device::static_set_timing(*device, eeprom_base_device::WRITE_TIME, _value); +#define MCFG_EEPROM_WRITE_ALL_TIME(_value) \ + eeprom_base_device::static_set_timing(*device, eeprom_base_device::WRITE_ALL_TIME, _value); +#define MCFG_EEPROM_ERASE_TIME(_value) \ + eeprom_base_device::static_set_timing(*device, eeprom_base_device::ERASE_TIME, _value); +#define MCFG_EEPROM_ERASE_ALL_TIME(_value) \ + eeprom_base_device::static_set_timing(*device, eeprom_base_device::ERASE_ALL_TIME, _value); @@ -61,27 +70,44 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> base_eeprom_device +// ======================> eeprom_base_device -class base_eeprom_device : public device_t, +class eeprom_base_device : public device_t, public device_memory_interface, public device_nvram_interface { protected: // construction/destruction - base_eeprom_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file); + eeprom_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file); public: + // timing constants + enum timing_type + { + WRITE_TIME, // default = 2ms + WRITE_ALL_TIME, // default = 8ms + ERASE_TIME, // default = 1ms + ERASE_ALL_TIME, // default = 8ms + TIMING_COUNT + }; + // inline configuration helpers static void static_set_size(device_t &device, int cells, int cellbits); static void static_set_default_data(device_t &device, const UINT8 *data, UINT32 size); static void static_set_default_data(device_t &device, const UINT16 *data, UINT32 size); static void static_set_default_value(device_t &device, UINT32 value); - - // read/write data - UINT32 read_data(offs_t address); - void write_data(offs_t address, UINT32 data); - + static void static_set_timing(device_t &device, timing_type type, attotime duration); + + // read/write/erase data + UINT32 read(offs_t address); + void write(offs_t address, UINT32 data); + void write_all(UINT32 data); + void erase(offs_t address); + void erase_all(); + + // status + bool ready() const { return machine().time() >= m_completion_time; } + protected: // device-level overrides virtual void device_validity_check(validity_checker &valid) const; @@ -96,6 +122,10 @@ protected: virtual void nvram_read(emu_file &file); virtual void nvram_write(emu_file &file); + // internal read/write without side-effects + UINT32 internal_read(offs_t address); + void internal_write(offs_t address, UINT32 data); + // configuration state UINT32 m_cells; UINT8 m_address_bits; @@ -105,6 +135,10 @@ protected: UINT32 m_default_data_size; UINT32 m_default_value; bool m_default_value_set; + attotime m_operation_time[TIMING_COUNT]; + + // live state + attotime m_completion_time; }; diff --git a/src/emu/machine/eepromser.c b/src/emu/machine/eepromser.c index 53cdeacfa5f..b65a71757e9 100644 --- a/src/emu/machine/eepromser.c +++ b/src/emu/machine/eepromser.c @@ -35,6 +35,90 @@ IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**************************************************************************** + + Serial EEPROMs generally work the same across manufacturers and models, + varying largely by the size of the EEPROM and the packaging details. + + At a basic level, there are 5 signals involved: + + * CS = chip select + * CLK = serial data clock + * DI = serial data in + * DO = serial data out + * RDY/BUSY = ready (1) or busy (0) status + + Data is read or written via serial commands. A command is begun on a + low-to-high transition of the CS line, following by clocking a start + bit (1) on the DI line. After the start bit, subsequent clocks + assemble one of the following commands: + + Start Opcode Address Data + 1 01 aaaaaaaaa ddddddd WRITE data + 1 10 aaaaaaaaa READ data + 1 11 aaaaaaaaa ERASE data + 1 00 00xxxxxxx WREN = WRite ENable + 1 00 01xxxxxxx ddddddd WRAL = WRite ALl cells + 1 00 10xxxxxxx ERAL = ERase ALl cells + 1 00 11xxxxxxx WRDS = WRite DiSable + + The number of address bits (a) clocked varies based on the size of the + chip, though it does not always map 1:1 with the size of the chip. + For example, the 93C06 has 16 cells, which only needs 4 address bits; + but commands to the 93C06 require 6 address bits (the top two must + be 0). + + The number of data bits (d) clocked varies based on the chip and at + times on the state of a pin on the chip which selects between multiple + sizes (e.g., 8-bit versus 16-bit). + +**************************************************************************** + + Most EEPROMs are based on the 93Cxx design (and have similar part + designations): + + +--v--+ + CS |1 8| Vcc + CLK |2 7| NC + DI |3 6| NC + DO |4 5| GND + +-----+ + + Note the lack of a READY/BUSY pin. On the 93Cxx series, the DO pin + serves double-duty, returning READY/BUSY during a write/erase cycle, + and outputting data during a read cycle. + + Some manufacturers have released "enhanced" versions with additional + features: + + * Several manufacturers (ST) map pin 6 to "ORG", specifying the + logical organization of the data. Connecting ORG to ground + makes the EEPROM work as an 8-bit device, while connecting it + to Vcc makes it work as a 16-bit device with one less + address bit. + + * Other manufacturers (ST) have enhanced the read operations to + allow serially streaming more than one cell. Essentially, after + reading the first cell, keep CS high and keep clocking, and + data from following cells will be read as well. + + The ER5911 is only slightly different: + + +--v--+ + CS |1 8| Vcc + CLK |2 7| RDY/BUSY + DI |3 6| ORG + DO |4 5| GND + +-----+ + + Here we have an explicit RDY/BUSY signal, and the ORG flag as described + above. + + From a command perspective, the ER5911 is also slightly different: + + 93Cxx has ERASE command; this maps to WRITE on ER5911 + 93Cxx has WRITEALL command; no equivalent on ER5911 + ***************************************************************************/ #include "emu.h" @@ -46,90 +130,110 @@ // DEBUGGING //************************************************************************** -#define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +// logging levels: +// 0 = errors and warnings only +// 1 = commands +// 2 = state machine +// 3 = DI/DO/READY reads & writes +// 4 = all reads & writes + +#define VERBOSE_PRINTF 0 +#define VERBOSE_LOGERROR 0 +#define LOG_TYPE printf + +#define LOG0(x) do { if (VERBOSE_PRINTF >= 1) printf x; logerror x; } while (0) +#define LOG1(x) do { if (VERBOSE_PRINTF >= 1) printf x; if (VERBOSE_LOGERROR >= 1) logerror x; } while (0) +#define LOG2(x) do { if (VERBOSE_PRINTF >= 2) printf x; if (VERBOSE_LOGERROR >= 2) logerror x; } while (0) +#define LOG3(x) do { if (VERBOSE_PRINTF >= 3) printf x; if (VERBOSE_LOGERROR >= 3) logerror x; } while (0) +#define LOG4(x) do { if (VERBOSE_PRINTF >= 4) printf x; if (VERBOSE_LOGERROR >= 4) logerror x; } while (0) //************************************************************************** -// GLOBAL VARIABLES +// TYPE DEFINITIONS //************************************************************************** -// device type definition -const device_type SERIAL_EEPROM = &device_creator<serial_eeprom_device>; - -const serial_eeprom_interface eeprom_interface_93C46_93C66B = -{ - "*110", // read 1 10 aaaaaa - "*101", // write 1 01 aaaaaa dddddddddddddddd - "*111", // erase 1 11 aaaaaa - "*10000xxxx", // lock 1 00 00xxxx - "*10011xxxx", // unlock 1 00 11xxxx - 1, // enable_multi_read - 0 // reset_delay -// "*10001xxxx" // write all 1 00 01xxxx dddddddddddddddd -// "*10010xxxx" // erase all 1 00 10xxxx -}; +ALLOW_SAVE_TYPE(eeprom_serial_base_device::eeprom_command); +ALLOW_SAVE_TYPE(eeprom_serial_base_device::eeprom_state); //************************************************************************** -// LIVE DEVICE +// BASE DEVICE IMPLEMENTATION //************************************************************************** //------------------------------------------------- -// serial_eeprom_device - constructor +// eeprom_serial_base_device - constructor //------------------------------------------------- -serial_eeprom_device::serial_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : base_eeprom_device(mconfig, SERIAL_EEPROM, "Serial EEPROM", tag, owner, "seeprom", __FILE__), - m_serial_count(0), - m_data_buffer(0), - m_read_address(0), - m_clock_count(0), - m_latch(0), - m_reset_line(CLEAR_LINE), - m_clock_line(CLEAR_LINE), - m_sending(false), - m_locked(false), - m_reset_counter(0) +eeprom_serial_base_device::eeprom_serial_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file) + : eeprom_base_device(mconfig, devtype, name, tag, owner, shortname, file), + m_command_address_bits(0), + m_streaming_enabled(false), + m_state(STATE_IN_RESET), + m_cs_state(CLEAR_LINE), + m_last_cs_rising_edge_time(attotime::zero), + m_oe_state(CLEAR_LINE), + m_clk_state(CLEAR_LINE), + m_di_state(CLEAR_LINE), + m_locked(true), + m_bits_accum(0), + m_command_address_accum(0), + m_command(COMMAND_INVALID), + m_address(0), + m_shift_register(0) { - memset(downcast<serial_eeprom_interface *>(this), 0, sizeof(serial_eeprom_interface)); } //------------------------------------------------- -// static_set_interface - configuration helper -// to set the interface +// static_set_address_bits - configuration helper +// to set the number of address bits in the +// serial commands //------------------------------------------------- -void serial_eeprom_device::static_set_interface(device_t &device, const serial_eeprom_interface &interface) +void eeprom_serial_base_device::static_set_address_bits(device_t &device, int addrbits) { - serial_eeprom_device &eeprom = downcast<serial_eeprom_device &>(device); - static_cast<serial_eeprom_interface &>(eeprom) = interface; + downcast<eeprom_serial_base_device &>(device).m_command_address_bits = addrbits; } //------------------------------------------------- -// device_start - device-specific startup +// static_enable_streaming - configuration helper +// to enable streaming data //------------------------------------------------- -void serial_eeprom_device::device_start() +void eeprom_serial_base_device::static_enable_streaming(device_t &device) { - base_eeprom_device::device_start(); + downcast<eeprom_serial_base_device &>(device).m_streaming_enabled = true; +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- - m_locked = (m_cmd_unlock != NULL); +void eeprom_serial_base_device::device_start() +{ + // if no command address bits set, just inherit from the address bits + if (m_command_address_bits == 0) + m_command_address_bits = m_address_bits; - save_item(NAME(m_serial_buffer)); - save_item(NAME(m_clock_line)); - save_item(NAME(m_reset_line)); + // start the base class + eeprom_base_device::device_start(); + + // save the current state + save_item(NAME(m_state)); + save_item(NAME(m_cs_state)); + save_item(NAME(m_oe_state)); + save_item(NAME(m_clk_state)); + save_item(NAME(m_di_state)); save_item(NAME(m_locked)); - save_item(NAME(m_serial_count)); - save_item(NAME(m_latch)); - save_item(NAME(m_reset_counter)); - save_item(NAME(m_clock_count)); - save_item(NAME(m_data_buffer)); - save_item(NAME(m_read_address)); + save_item(NAME(m_bits_accum)); + save_item(NAME(m_command_address_accum)); + save_item(NAME(m_command)); + save_item(NAME(m_address)); + save_item(NAME(m_shift_register)); } @@ -137,18 +241,19 @@ void serial_eeprom_device::device_start() // device_reset - device-specific reset //------------------------------------------------- -void serial_eeprom_device::device_reset() +void eeprom_serial_base_device::device_reset() { - base_eeprom_device::device_reset(); - - // make a note if someone reset in the middle of a read or write - if (m_serial_count) - logerror("EEPROM %s reset, buffer = %s\n", tag(), m_serial_buffer); + // reset the base class + eeprom_base_device::device_reset(); // reset the state - m_serial_count = 0; - m_sending = false; - m_reset_counter = m_reset_delay; // delay a little before returning setting data to 1 (needed by wbeachvl) + set_state(STATE_IN_RESET); + m_locked = true; + m_bits_accum = 0; + m_command_address_accum = 0; + m_command = COMMAND_INVALID; + m_address = 0; + m_shift_register = 0; } @@ -158,280 +263,546 @@ void serial_eeprom_device::device_reset() //************************************************************************** //------------------------------------------------- -// write_bit - latch a bit to write +// base_cs_write - set the state of the chip +// select (CS) line //------------------------------------------------- -WRITE_LINE_MEMBER( serial_eeprom_device::write_bit ) +void eeprom_serial_base_device::base_cs_write(int state) { - LOG(("write bit %d\n",state)); - m_latch = state; + // ignore if the state is not changing + state &= 1; + if (state == m_cs_state) + return; + + // set the new state + LOG4((" cs_write(%d)\n", state)); + m_cs_state = state; + + // remember the rising edge time so we don't process CLK signals at the same time + if (state == ASSERT_LINE) + m_last_cs_rising_edge_time = machine().time(); + handle_event((m_cs_state == ASSERT_LINE) ? EVENT_CS_RISING_EDGE : EVENT_CS_FALLING_EDGE); } //------------------------------------------------- -// read_bit - read a bit from the eeprom +// base_clk_write - set the state of the clock +// (CLK) line //------------------------------------------------- -READ_LINE_MEMBER( serial_eeprom_device::read_bit ) +void eeprom_serial_base_device::base_clk_write(int state) { - int res; + // ignore if the state is not changing + state &= 1; + if (state == m_clk_state) + return; - // if sending, pull the next bit off - if (m_sending) - res = (m_data_buffer >> m_data_bits) & 1; - - // otherwise check for the proper number of bits needed for a reset - else - { - // this is needed by wbeachvl - if (m_reset_counter > 0) - { - m_reset_counter--; - res = 0; - } - else - res = 1; - } + // set the new state + LOG4((" clk_write(%d)\n", state)); + m_clk_state = state; + handle_event((m_clk_state == ASSERT_LINE) ? EVENT_CLK_RISING_EDGE : EVENT_CLK_FALLING_EDGE); +} - LOG(("read bit %d\n",res)); - return res; +//------------------------------------------------- +// base_di_write - set the state of the data input +// (DI) line +//------------------------------------------------- + +void eeprom_serial_base_device::base_di_write(int state) +{ + if (state != 0 && state != 1) + LOG0(("EEPROM: Unexpected data at input 0x%X treated as %d\n", state, state & 1)); + LOG3((" di_write(%d)\n", state)); + m_di_state = state & 1; } //------------------------------------------------- -// set_cs_line - set the state of the chip -// select (/CS) line +// base_do_read - read the state of the data +// output (DO) line //------------------------------------------------- -WRITE_LINE_MEMBER( serial_eeprom_device::set_cs_line ) +int eeprom_serial_base_device::base_do_read() { - // ignore if the state is not changing - if (state == m_reset_line) - return; - - LOG(("set reset line %d\n",state)); + // in most states, the output is tristated, and generally connected to a pull up + // to send back a 1 value; the only exception is if reading data and the current output + // bit is a 0 + int result = (m_state == STATE_READING_DATA && ((m_shift_register & 0x80000000) == 0)) ? CLEAR_LINE : ASSERT_LINE; + LOG3((" do_read(%d)\n", result)); + return result; +} + + +//------------------------------------------------- +// base_ready_read - read the state of the +// READY/BUSY line +//------------------------------------------------- - // if we're going active, reset things - m_reset_line = state; - if (m_reset_line != CLEAR_LINE) - reset(); +int eeprom_serial_base_device::base_ready_read() +{ + // ready by default, except during long operations + int result = (m_state == STATE_WAIT_FOR_START_BIT && !ready()) ? CLEAR_LINE : ASSERT_LINE; + LOG3((" ready_read(%d)\n", result)); + return result; } + +//************************************************************************** +// INTERNAL HELPERS +//************************************************************************** + //------------------------------------------------- -// set_clock_line - set the state of the clock -// (CLK) line +// set_state - update the state to a new one //------------------------------------------------- -WRITE_LINE_MEMBER( serial_eeprom_device::set_clock_line ) +void eeprom_serial_base_device::set_state(eeprom_state newstate) { - LOG(("set clock line %d\n",state)); - - // on a pulse or a rising edge, process - if (state == PULSE_LINE || (m_clock_line == CLEAR_LINE && state != CLEAR_LINE)) +#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0) + // for debugging purposes + static const struct { eeprom_state state; const char *string; } s_state_names[] = + { + { STATE_IN_RESET, "IN_RESET" }, + { STATE_WAIT_FOR_START_BIT, "WAIT_FOR_START_BIT" }, + { STATE_WAIT_FOR_COMMAND, "WAIT_FOR_COMMAND" }, + { STATE_READING_DATA, "READING_DATA" }, + { STATE_WAIT_FOR_DATA, "WAIT_FOR_DATA" }, + { STATE_WAIT_FOR_COMPLETION, "WAIT_FOR_COMPLETION" }, + }; + const char *newstate_string = "UNKNOWN"; + for (int index = 0; index < ARRAY_LENGTH(s_state_names); index++) + if (s_state_names[index].state == newstate) + newstate_string = s_state_names[index].string; + LOG2(("New state: %s\n", newstate_string)); +#endif + + // switch to the new state + m_state = newstate; +} + + +//------------------------------------------------- +// handle_event - handle an event via the state +// machine +//------------------------------------------------- + +void eeprom_serial_base_device::handle_event(eeprom_event event) +{ +#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0) + // for debugging purposes + if ((event & EVENT_CS_RISING_EDGE) != 0) LOG2(("Event: CS rising\n")); + if ((event & EVENT_CS_FALLING_EDGE) != 0) LOG2(("Event: CS falling\n")); + if ((event & EVENT_CLK_RISING_EDGE) != 0) + { + if (m_state == STATE_WAIT_FOR_COMMAND || m_state == STATE_WAIT_FOR_DATA) + LOG2(("Event: CLK rising (%d, DI=%d)\n", m_bits_accum + 1, m_di_state)); + else if (m_state == STATE_READING_DATA) + LOG2(("Event: CLK rising (%d, DO=%d)\n", m_bits_accum + 1, (m_shift_register >> 30) & 1)); + else if (m_state == STATE_WAIT_FOR_START_BIT) + LOG2(("Event: CLK rising (%d)\n", m_di_state)); + else + LOG2(("Event: CLK rising\n")); + } + if ((event & EVENT_CLK_FALLING_EDGE) != 0) LOG4(("Event: CLK falling\n")); +#endif + + // switch off the current state + switch (m_state) { - // only proceed if we're not held in reset - if (m_reset_line == CLEAR_LINE) - { - // if sending, clock the next bit - if (m_sending) + // CS is not asserted; wait for a rising CS to move us forward, ignoring all clocks + case STATE_IN_RESET: + if (event == EVENT_CS_RISING_EDGE) + set_state(STATE_WAIT_FOR_START_BIT); + break; + + // CS is asserted; wait for rising clock with a 1 start bit; falling CS will reset us + // note that because each bit is written independently, it is possible for us to receive + // a false rising CLK edge at the exact same time as a rising CS edge; it appears we + // should ignore these edges (makes sense really) + case STATE_WAIT_FOR_START_BIT: + if (event == EVENT_CLK_RISING_EDGE && m_di_state == ASSERT_LINE && ready() && machine().time() > m_last_cs_rising_edge_time) + { + m_command_address_accum = m_bits_accum = 0; + set_state(STATE_WAIT_FOR_COMMAND); + } + else if (event == EVENT_CS_FALLING_EDGE) + set_state(STATE_IN_RESET); + break; + + // CS is asserted; wait for a command to come through; falling CS will reset us + case STATE_WAIT_FOR_COMMAND: + if (event == EVENT_CLK_RISING_EDGE) { - // auto-advance to then next word if supported - if (m_clock_count == m_data_bits && m_enable_multi_read) - { - fill_data_buffer(m_read_address + 1); - logerror("EEPROM %s read %04x from address %02x\n", tag(), m_data_buffer, m_read_address); - } + // if we have enough bits for a command + address, check it out + m_command_address_accum = (m_command_address_accum << 1) | m_di_state; + if (++m_bits_accum == 2 + m_command_address_bits) + execute_command(); + } + else if (event == EVENT_CS_FALLING_EDGE) + set_state(STATE_IN_RESET); + break; + + // CS is asserted; reading data, clock the shift register; falling CS will reset us + case STATE_READING_DATA: + if (event == EVENT_CLK_RISING_EDGE) + { + int bit_index = m_bits_accum++; - // shift the data buffer - m_data_buffer = (m_data_buffer << 1) | 1; - m_clock_count++; + // wrapping the address on multi-read is required by pacslot(cave.c) + if (bit_index % m_data_bits == 0 && (bit_index == 0 || m_streaming_enabled)) + m_shift_register = read((m_address + m_bits_accum / m_data_bits) & ((1 << m_address_bits) - 1)) << (32 - m_data_bits); + else + m_shift_register = (m_shift_register << 1) | 1; + } + else if (event == EVENT_CS_FALLING_EDGE) + { + set_state(STATE_IN_RESET); + if (m_streaming_enabled) + LOG1((" (%d cells read)\n", m_bits_accum / m_data_bits)); + if (!m_streaming_enabled && m_bits_accum > m_data_bits + 1) + LOG0(("EEPROM: Overclocked read by %d bits\n", m_bits_accum - m_data_bits)); + else if (m_streaming_enabled && m_bits_accum > m_data_bits + 1 && m_bits_accum % m_data_bits > 2) + LOG0(("EEPROM: Overclocked read by %d bits\n", m_bits_accum % m_data_bits)); + else if (m_bits_accum < m_data_bits) + LOG0(("EEPROM: CS deasserted in READING_DATA after %d bits\n", m_bits_accum)); + } + break; + + // CS is asserted; waiting for data; clock data through until we accumulate enough; falling CS will reset us + case STATE_WAIT_FOR_DATA: + if (event == EVENT_CLK_RISING_EDGE) + { + m_shift_register = (m_shift_register << 1) | m_di_state; + if (++m_bits_accum == m_data_bits) + execute_write_command(); + } + else if (event == EVENT_CS_FALLING_EDGE) + { + set_state(STATE_IN_RESET); + LOG0(("EEPROM: CS deasserted in STATE_WAIT_FOR_DATA after %d bits\n", m_bits_accum)); + } + break; + + // CS is asserted; waiting for completion; watch for CS falling + case STATE_WAIT_FOR_COMPLETION: + if (event == EVENT_CS_FALLING_EDGE) + set_state(STATE_IN_RESET); + break; + } +} + + +//------------------------------------------------- +// execute_command - execute a command once we +// have enough bits for one +//------------------------------------------------- + +void eeprom_serial_base_device::execute_command() +{ + // parse into a generic command and reset the accumulator count + parse_command_and_address(); + m_bits_accum = 0; + +#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0) + // for debugging purposes + static const struct { eeprom_command command; const char *string; } s_command_names[] = + { + { COMMAND_INVALID, "Execute command: INVALID\n" }, + { COMMAND_READ, "Execute command:READ 0x%X\n" }, + { COMMAND_WRITE, "Execute command:WRITE 0x%X\n" }, + { COMMAND_ERASE, "Execute command:ERASE 0x%X\n" }, + { COMMAND_LOCK, "Execute command:LOCK\n" }, + { COMMAND_UNLOCK, "Execute command:UNLOCK\n" }, + { COMMAND_WRITEALL, "Execute command:WRITEALL\n" }, + { COMMAND_ERASEALL, "Execute command:ERASEALL\n" }, + }; + const char *command_string = s_command_names[0].string; + for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++) + if (s_command_names[index].command == m_command) + command_string = s_command_names[index].string; + LOG1((command_string, m_address)); +#endif + + // each command advances differently + switch (m_command) + { + // advance to the READING_DATA state; data is fetched after first CLK + case COMMAND_READ: + set_state(STATE_READING_DATA); + break; + + // reset the shift register and wait for enough data to be clocked through + case COMMAND_WRITE: + case COMMAND_WRITEALL: + m_shift_register = 0; + set_state(STATE_WAIT_FOR_DATA); + break; + + // erase the parsed address (unless locked) and wait for it to complete + case COMMAND_ERASE: + if (m_locked) + { + LOG0(("EEPROM: Attempt to erase while locked\n")); + set_state(STATE_IN_RESET); + break; } + erase(m_address); + set_state(STATE_WAIT_FOR_COMPLETION); + break; + + // lock the chip; return to IN_RESET state + case COMMAND_LOCK: + m_locked = true; + set_state(STATE_IN_RESET); + break; - // if not sending, then write the data that was latched - else - write(m_latch); - } + // unlock the chip; return to IN_RESET state + case COMMAND_UNLOCK: + m_locked = false; + set_state(STATE_IN_RESET); + break; + + // erase the entire chip (unless locked) and wait for it to complete + case COMMAND_ERASEALL: + if (m_locked) + { + LOG0(("EEPROM: Attempt to erase all while locked\n")); + set_state(STATE_IN_RESET); + break; + } + erase_all(); + set_state(STATE_WAIT_FOR_COMPLETION); + break; + + default: + throw emu_fatalerror("execute_command called with invalid command %d\n", m_command); } +} + - // remember the news state - m_clock_line = state; +//------------------------------------------------- +// execute_write_command - execute a write +// command after receiving the data bits +//------------------------------------------------- + +void eeprom_serial_base_device::execute_write_command() +{ +#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0) + // for debugging purposes + static const struct { eeprom_command command; const char *string; } s_command_names[] = + { + { COMMAND_WRITE, "Execute write command: WRITE 0x%X = 0x%X\n" }, + { COMMAND_WRITEALL, "Execute write command: WRITEALL (%X) = 0x%X\n" }, + }; + const char *command_string = "UNKNOWN"; + for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++) + if (s_command_names[index].command == m_command) + command_string = s_command_names[index].string; + LOG1((command_string, m_address, m_shift_register)); +#endif + + // each command advances differently + switch (m_command) + { + // reset the shift register and wait for enough data to be clocked through + case COMMAND_WRITE: + if (m_locked) + { + LOG0(("EEPROM: Attempt to write to address 0x%X while locked\n", m_address)); + set_state(STATE_IN_RESET); + break; + } + write(m_address, m_shift_register); + set_state(STATE_WAIT_FOR_COMPLETION); + break; + + // write the entire EEPROM with the same data; ERASEALL is required before so we + // AND against the already-present data + case COMMAND_WRITEALL: + if (m_locked) + { + LOG0(("EEPROM: Attempt to write all while locked\n")); + set_state(STATE_IN_RESET); + break; + } + write_all(m_shift_register); + set_state(STATE_WAIT_FOR_COMPLETION); + break; + + default: + throw emu_fatalerror("execute_write_command called with invalid command %d\n", m_command); + } } //************************************************************************** -// INTERNAL HELPERS +// STANDARD INTERFACE IMPLEMENTATION //************************************************************************** //------------------------------------------------- -// decode_value - convert accumulated bits to -// a binary value, releative to the end of the -// accumulation buffer +// eeprom_serial_93cxx_device - constructor //------------------------------------------------- -UINT32 serial_eeprom_device::decode_value(int numbits, int bitsfromend) +eeprom_serial_93cxx_device::eeprom_serial_93cxx_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file) + : eeprom_serial_base_device(mconfig, devtype, name, tag, owner, shortname, file) { - UINT32 value = 0; - for (int bitnum = m_serial_count - bitsfromend - numbits; bitnum < m_serial_count - bitsfromend; bitnum++) - value = (value << 1) | (m_serial_buffer[bitnum] - '0'); - return value; } //------------------------------------------------- -// fill_data_buffer - fill the data buffer with -// the appropriately-sized chunk of data +// parse_command_and_address - extract the +// command and address from a bitstream //------------------------------------------------- -void serial_eeprom_device::fill_data_buffer(offs_t address) +void eeprom_serial_93cxx_device::parse_command_and_address() { - // make the address to be in range - address &= (1 << m_address_bits) - 1; + // set the defaults + m_command = COMMAND_INVALID; + m_address = m_command_address_accum & ((1 << m_command_address_bits) - 1); - // fetch the appropriately-sized data - m_data_buffer = read_data(address); + // extract the command portion and handle it + switch (m_command_address_accum >> m_command_address_bits) + { + // opcode 0 needs two more bits to decode the operation + case 0: + switch (m_address >> (m_command_address_bits - 2)) + { + case 0: m_command = COMMAND_LOCK; break; + case 1: m_command = COMMAND_WRITEALL; break; + case 2: m_command = COMMAND_ERASEALL; break; + case 3: m_command = COMMAND_UNLOCK; break; + } + m_address = 0; + break; + case 1: m_command = COMMAND_WRITE; break; + case 2: m_command = COMMAND_READ; break; + case 3: m_command = COMMAND_ERASE; break; + } - // remember the address and reset the clock count - m_read_address = address; - m_clock_count = 0; + // warn about out-of-range addresses + if (m_address >= (1 << m_address_bits)) + LOG0(("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1)); } //------------------------------------------------- -// write - process an EEPROM write +// do_read - read handlers +//------------------------------------------------- + +READ_LINE_MEMBER(eeprom_serial_93cxx_device::do_read) { return base_do_read() & base_ready_read(); } + + +//------------------------------------------------- +// cs_write/clk_write/di_write - write handlers //------------------------------------------------- -void serial_eeprom_device::write(int bit) +WRITE_LINE_MEMBER(eeprom_serial_93cxx_device::cs_write) { base_cs_write(state); } +WRITE_LINE_MEMBER(eeprom_serial_93cxx_device::clk_write) { base_clk_write(state); } +WRITE_LINE_MEMBER(eeprom_serial_93cxx_device::di_write) { base_di_write(state); } + + + +//************************************************************************** +// ER5911 DEVICE IMPLEMENTATION +//************************************************************************** + +//------------------------------------------------- +// eeprom_serial_er5911_device - constructor +//------------------------------------------------- + +eeprom_serial_er5911_device::eeprom_serial_er5911_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file) + : eeprom_serial_base_device(mconfig, devtype, name, tag, owner, shortname, file) { - LOG(("EEPROM %s write bit %d\n", tag(), bit)); +} - // if too much data was written without seeing a command, log it and return - if (m_serial_count >= SERIAL_BUFFER_LENGTH - 1) - { - logerror("error: EEPROM %s serial buffer overflow\n", tag()); - return; - } - // update the buffer - m_serial_buffer[m_serial_count++] = (bit ? '1' : '0'); - m_serial_buffer[m_serial_count] = 0; // nul terminate so we can treat it as a string +//------------------------------------------------- +// parse_command_and_address - extract the +// command and address from a bitstream +//------------------------------------------------- - // look for a read command - if (m_cmd_read != NULL && m_serial_count > m_address_bits && command_match(m_cmd_read, m_address_bits)) - { - fill_data_buffer(decode_value(m_address_bits)); - m_sending = true; - m_serial_count = 0; - logerror("EEPROM %s read %04x from address %02x\n", tag(), m_data_buffer, m_read_address); - } - - // look for an erase command - else if (m_cmd_erase != NULL && m_serial_count > m_address_bits && command_match(m_cmd_erase, m_address_bits)) - { - offs_t address = decode_value(m_address_bits); - logerror("EEPROM %s erase address %02x\n", tag(), address); - if (m_locked == 0) - write_data(address, ~0); - else - logerror("Error: EEPROM %s is locked\n", tag()); - m_serial_count = 0; - } - - // look for a write command - else if (m_cmd_write != NULL && m_serial_count > m_address_bits + m_data_bits && command_match(m_cmd_write, m_address_bits + m_data_bits)) - { - offs_t address = decode_value(m_address_bits, m_data_bits); - UINT32 data = decode_value(m_data_bits); - logerror("EEPROM %s write %04x to address %02x\n", tag(), data, address); - if (m_locked == 0) - write_data(address, data); - else - logerror("Error: EEPROM %s is locked\n", tag()); - m_serial_count = 0; - } +void eeprom_serial_er5911_device::parse_command_and_address() +{ + // set the defaults + m_command = COMMAND_INVALID; + m_address = m_command_address_accum & ((1 << m_command_address_bits) - 1); - // look for a lock command - else if (m_cmd_lock != NULL && command_match(m_cmd_lock)) + // extract the command portion and handle it + switch (m_command_address_accum >> m_command_address_bits) { - logerror("EEPROM %s lock\n", tag()); - m_locked = 1; - m_serial_count = 0; + // opcode 0 needs two more bits to decode the operation + case 0: + switch (m_address >> (m_command_address_bits - 2)) + { + case 0: m_command = COMMAND_LOCK; break; + case 1: m_command = COMMAND_INVALID; break; // not on ER5911 + case 2: m_command = COMMAND_ERASEALL; break; + case 3: m_command = COMMAND_UNLOCK; break; + } + m_address = 0; + break; + case 1: m_command = COMMAND_WRITE; break; + case 2: m_command = COMMAND_READ; break; + case 3: m_command = COMMAND_WRITE; break; // WRITE instead of ERASE on ER5911 } - // look for an unlock command - else if (m_cmd_unlock != NULL && command_match(m_cmd_unlock)) - { - logerror("EEPROM %s unlock\n", tag()); - m_locked = 0; - m_serial_count = 0; - } + // warn about out-of-range addresses + if (m_address >= (1 << m_address_bits)) + LOG0(("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1)); } //------------------------------------------------- -// command_match - try to match incoming data -// against a command template +// do_read/ready_read - read handlers //------------------------------------------------- -bool serial_eeprom_device::command_match(const char *cmd, int ignorebits) -{ - // - // The serial buffer only contains '0' or '1' (e.g. "1001"). - // The command can contain: '0' or '1' or these wildcards: - // 'x' : match both '0' and '1' - // "*1": match "1", "01", "001", "0001" etc. - // "*0": match "0", "10", "110", "1110" etc. - // - - int len = m_serial_count - ignorebits; - const char *buf = m_serial_buffer; - while (len > 0) - { - char bufbit = *buf; - char cmdbit = *cmd; - - // stop when we hit the end of either string - if (bufbit == 0 || cmdbit == 0) - return (bufbit == cmdbit); - - // parse based on the cmdbit - switch (cmdbit) - { - case '0': - case '1': - // these require an exact match - if (bufbit != cmdbit) - return false; - - // fall through... - - case 'X': - case 'x': - // this is 'ignore', so just accept anything - buf++; - len--; - cmd++; - break; +READ_LINE_MEMBER(eeprom_serial_er5911_device::do_read) { return base_do_read(); } +READ_LINE_MEMBER(eeprom_serial_er5911_device::ready_read) { return base_ready_read(); } - case '*': - // for a wildcard, check for the opposit bit - cmdbit = cmd[1]; - switch (cmdbit) - { - case '0': - case '1': - if (bufbit == cmdbit) - cmd++; - else - buf++, len--; - break; - - default: - return false; - } - } - } - return (*cmd == 0); -} + +//------------------------------------------------- +// cs_write/clk_write/di_write - write handlers +//------------------------------------------------- + +WRITE_LINE_MEMBER(eeprom_serial_er5911_device::cs_write) { base_cs_write(state); } +WRITE_LINE_MEMBER(eeprom_serial_er5911_device::clk_write) { base_clk_write(state); } +WRITE_LINE_MEMBER(eeprom_serial_er5911_device::di_write) { base_di_write(state); } + + + +//************************************************************************** +// DERIVED TYPES +//************************************************************************** + +// macro for defining a new device class +#define DEFINE_SERIAL_EEPROM_DEVICE(_baseclass, _lowercase, _uppercase, _bits, _cells, _addrbits) \ +eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) \ + : eeprom_serial_##_baseclass##_device(mconfig, EEPROM_SERIAL_##_uppercase##_##_bits##BIT, "Serial EEPROM " #_uppercase " (" #_cells "x" #_bits ")", tag, owner, #_lowercase "_" #_bits, __FILE__) \ +{ \ + static_set_size(*this, _cells, _bits); \ + static_set_address_bits(*this, _addrbits); \ +}; \ +const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT = &device_creator<eeprom_serial_##_lowercase##_##_bits##bit_device>; \ + +// standard 93CX6 class of 16-bit EEPROMs +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16, 16, 6) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16, 64, 6) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c56, 93C56, 16, 128, 8) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c57, 93C57, 16, 128, 7) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c66, 93C66, 16, 256, 8) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c76, 93C76, 16, 512, 10) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c86, 93C86, 16, 1024, 10) + +// some manufacturers use pin 6 as an "ORG" pin which, when pulled low, configures memory for 8-bit accesses +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 8, 128, 7) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c56, 93C56, 8, 256, 9) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c57, 93C57, 8, 256, 8) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c66, 93C66, 8, 512, 9) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c76, 93C76, 8, 1024, 11) +DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c86, 93C86, 8, 2048, 11) + +// ER5911 has a separate ready pin, a reduced command set, and supports 8/16 bit out of the box +DEFINE_SERIAL_EEPROM_DEVICE(er5911, er5911, ER5911, 8, 128, 9) +DEFINE_SERIAL_EEPROM_DEVICE(er5911, er5911, ER5911, 16, 64, 8) diff --git a/src/emu/machine/eepromser.h b/src/emu/machine/eepromser.h index 42177ace744..99caeab6b54 100644 --- a/src/emu/machine/eepromser.h +++ b/src/emu/machine/eepromser.h @@ -49,24 +49,49 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_SERIAL_EEPROM_ADD(_tag, _cells, _cellbits, _interface) \ - MCFG_DEVICE_ADD(_tag, SERIAL_EEPROM, 0) \ - MCFG_EEPROM_SIZE(_cells, _cellbits) \ - serial_eeprom_device::static_set_interface(*device, _interface); - -#define MCFG_SERIAL_EEPROM_DATA(_data, _size) \ - serial_eeprom_device::static_set_default_data(*device, _data, _size); -#define MCFG_SERIAL_EEPROM_DEFAULT_VALUE(_value) \ - serial_eeprom_device::static_set_default_value(*device, _value); - -#define MCFG_EEPROM_93C46_ADD(_tag) \ - MCFG_SERIAL_EEPROM_ADD(_tag, 64, 16, eeprom_interface_93C46_93C66B) - -#define MCFG_EEPROM_93C46_8BIT_ADD(_tag) \ - MCFG_SERIAL_EEPROM_ADD(_tag, 128, 8, eeprom_interface_93C46_93C66B) - -#define MCFG_EEPROM_93C66B_ADD(_tag) \ - MCFG_SERIAL_EEPROM_ADD(_tag, 256, 16, eeprom_interface_93C46_93C66B) +// standard 93CX6 class of 16-bit EEPROMs +#define MCFG_EEPROM_SERIAL_93C06_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C06_16BIT, 0) +#define MCFG_EEPROM_SERIAL_93C46_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C46_16BIT, 0) +#define MCFG_EEPROM_SERIAL_93C56_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C56_16BIT, 0) +#define MCFG_EEPROM_SERIAL_93C57_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C57_16BIT, 0) +#define MCFG_EEPROM_SERIAL_93C66_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C66_16BIT, 0) +#define MCFG_EEPROM_SERIAL_93C76_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C76_16BIT, 0) +#define MCFG_EEPROM_SERIAL_93C86_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C86_16BIT, 0) + +// some manufacturers use pin 6 as an "ORG" pin which, when pulled low, configures memory for 8-bit accesses +#define MCFG_EEPROM_SERIAL_93C46_8BIT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C46_8BIT, 0) +#define MCFG_EEPROM_SERIAL_93C56_8BIT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C56_8BIT, 0) +#define MCFG_EEPROM_SERIAL_93C57_8BIT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C57_8BIT, 0) +#define MCFG_EEPROM_SERIAL_93C66_8BIT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C66_8BIT, 0) +#define MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C76_8BIT, 0) +#define MCFG_EEPROM_SERIAL_93C86_8BIT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C86_8BIT, 0) + +// ER5911 has a separate ready pin, a reduced command set, and supports 8/16 bit out of the box +#define MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_ER5911_8BIT, 0) +#define MCFG_EEPROM_SERIAL_ER5911_16BIT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_ER5911_16BIT, 0) + +// optional enable for streaming reads +#define MCFG_EEPROM_SERIAL_ENABLE_STREAMING() \ + eeprom_serial_base_device::static_enable_streaming(*device); \ + +// pass-throughs to the base class for setting default data +#define MCFG_EEPROM_SERIAL_DATA MCFG_EEPROM_DATA +#define MCFG_EEPROM_SERIAL_DEFAULT_VALUE MCFG_EEPROM_DEFAULT_VALUE @@ -75,78 +100,176 @@ //************************************************************************** -// ======================> serial_eeprom_interface +// ======================> eeprom_serial_base_device -struct serial_eeprom_interface +class eeprom_serial_base_device : public eeprom_base_device { - const char *m_cmd_read; // read command string, e.g. "0110" - const char *m_cmd_write; // write command string, e.g. "0111" - const char *m_cmd_erase; // erase command string, or 0 if n/a - const char *m_cmd_lock; // lock command string, or 0 if n/a - const char *m_cmd_unlock; // unlock command string, or 0 if n/a - bool m_enable_multi_read; // set to 1 to enable multiple values to be read from one read command - int m_reset_delay; // number of times eeprom_read_bit() should return 0 after a reset, - // before starting to return 1. +protected: + // construction/destruction + eeprom_serial_base_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file); + +public: + // inline configuration helpers + static void static_set_address_bits(device_t &device, int addrbits); + static void static_enable_streaming(device_t &device); + +protected: + // device-level overrides + virtual void device_start(); + virtual void device_reset(); + + // read interfaces differ between implementations + + // commands + enum eeprom_command + { + COMMAND_INVALID, + COMMAND_READ, + COMMAND_WRITE, + COMMAND_ERASE, + COMMAND_LOCK, + COMMAND_UNLOCK, + COMMAND_WRITEALL, + COMMAND_ERASEALL + }; + + // states + enum eeprom_state + { + STATE_IN_RESET, + STATE_WAIT_FOR_START_BIT, + STATE_WAIT_FOR_COMMAND, + STATE_READING_DATA, + STATE_WAIT_FOR_DATA, + STATE_WAIT_FOR_COMPLETION + }; + + // events + enum eeprom_event + { + EVENT_CS_RISING_EDGE = 1 << 0, + EVENT_CS_FALLING_EDGE = 1 << 1, + EVENT_CLK_RISING_EDGE = 1 << 2, + EVENT_CLK_FALLING_EDGE = 1 << 3 + }; + + // internal helpers + void set_state(eeprom_state newstate); + void handle_event(eeprom_event event); + void execute_command(); + void execute_write_command(); + + // subclass helpers + void base_cs_write(int state); + void base_clk_write(int state); + void base_di_write(int state); + int base_do_read(); + int base_ready_read(); + + // subclass overrides + virtual void parse_command_and_address() = 0; + + // configuration state + UINT8 m_command_address_bits; // number of address bits in a command + bool m_streaming_enabled; // true if streaming is enabled + + // runtime state + eeprom_state m_state; // current internal state + UINT8 m_cs_state; // state of the CS line + attotime m_last_cs_rising_edge_time; // time of the last CS rising edge + UINT8 m_oe_state; // state of the OE line + UINT8 m_clk_state; // state of the CLK line + UINT8 m_di_state; // state of the DI line + bool m_locked; // are we locked against writes? + UINT32 m_bits_accum; // number of bits accumulated + UINT32 m_command_address_accum; // accumulator of command+address bits + eeprom_command m_command; // current command + UINT32 m_address; // current address extracted from command + UINT32 m_shift_register; // holds data coming in/going out }; -// ======================> serial_eeprom_device +// ======================> eeprom_serial_93cxx_device -class serial_eeprom_device : public base_eeprom_device, - public serial_eeprom_interface +class eeprom_serial_93cxx_device : public eeprom_serial_base_device { -public: +protected: // construction/destruction - serial_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + eeprom_serial_93cxx_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file); - // inline configuration helpers - static void static_set_interface(device_t &device, const serial_eeprom_interface &interface); +public: + // read handlers + DECLARE_READ_LINE_MEMBER(do_read); // combined DO+READY/BUSY - // I/O operations - DECLARE_WRITE_LINE_MEMBER( write_bit ); - DECLARE_READ_LINE_MEMBER( read_bit ); - DECLARE_WRITE_LINE_MEMBER( set_cs_line ); - DECLARE_WRITE_LINE_MEMBER( set_clock_line ); + // write handlers + DECLARE_WRITE_LINE_MEMBER(cs_write); // CS signal (active high) + DECLARE_WRITE_LINE_MEMBER(clk_write); // CLK signal (active high) + DECLARE_WRITE_LINE_MEMBER(di_write); // DI protected: - // device-level overrides - virtual void device_start(); - virtual void device_reset(); + // subclass overrides + virtual void parse_command_and_address(); +}; - // internal helpers - UINT32 decode_value(int numbits, int bitsfromend = 0); - void fill_data_buffer(offs_t address); - void write(int bit); - bool command_match(const char *cmd, int ignorebits = 0); - static const int SERIAL_BUFFER_LENGTH = 40; +// ======================> eeprom_serial_er5911_device - // runtime state - int m_serial_count; - char m_serial_buffer[SERIAL_BUFFER_LENGTH]; - int m_data_buffer; - int m_read_address; - int m_clock_count; - int m_latch; - int m_reset_line; - int m_clock_line; - bool m_sending; - bool m_locked; - int m_reset_counter; -}; +class eeprom_serial_er5911_device : public eeprom_serial_base_device +{ +protected: + // construction/destruction + eeprom_serial_er5911_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, const char *shortname, const char *file); +public: + // read handlers + DECLARE_READ_LINE_MEMBER(do_read); // DO + DECLARE_READ_LINE_MEMBER(ready_read); // READY/BUSY only -// device type definition -extern const device_type SERIAL_EEPROM; + // write handlers + DECLARE_WRITE_LINE_MEMBER(cs_write); // CS signal (active high) + DECLARE_WRITE_LINE_MEMBER(clk_write); // CLK signal (active high) + DECLARE_WRITE_LINE_MEMBER(di_write); // DI + +protected: + // subclass overrides + virtual void parse_command_and_address(); +}; //************************************************************************** -// GLOBAL VARIABLES +// DERIVED TYPES //************************************************************************** -extern const serial_eeprom_interface eeprom_interface_93C46_93C66B; - +// macro for declaring a new device class +#define DECLARE_SERIAL_EEPROM_DEVICE(_baseclass, _lowercase, _uppercase, _bits) \ +class eeprom_serial_##_lowercase##_##_bits##bit_device : public eeprom_serial_##_baseclass##_device \ +{ \ +public: \ + eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); \ +}; \ +extern const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT; \ + +// standard 93CX6 class of 16-bit EEPROMs +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c56, 93C56, 16) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c57, 93C57, 16) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c66, 93C66, 16) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c76, 93C76, 16) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c86, 93C86, 16) + +// some manufacturers use pin 6 as an "ORG" pin which, when pulled low, configures memory for 8-bit accesses +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 8) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c56, 93C56, 8) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c57, 93C57, 8) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c66, 93C66, 8) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c76, 93C76, 8) +DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c86, 93C86, 8) + +// ER5911 has a separate ready pin, a reduced command set, and supports 8/16 bit out of the box +DECLARE_SERIAL_EEPROM_DEVICE(er5911, er5911, ER5911, 8) +DECLARE_SERIAL_EEPROM_DEVICE(er5911, er5911, ER5911, 16) #endif diff --git a/src/emu/machine/smpc.c b/src/emu/machine/smpc.c index 97cf3270c3a..c1633353fe7 100644 --- a/src/emu/machine/smpc.c +++ b/src/emu/machine/smpc.c @@ -819,7 +819,7 @@ READ8_HANDLER( stv_SMPC_r ) return_data = state->ioport("DSW1")->read(); if (offset == 0x77)//PDR2 read - return_data = (0xfe | state->m_eeprom->read_bit()); + return_data = (0xfe | state->m_eeprom->do_read()); return return_data; } @@ -881,9 +881,9 @@ WRITE8_HANDLER( stv_SMPC_w ) ---- -x-- EEPROM CS line ---- --xx A-Bus bank bits */ - state->m_eeprom->set_clock_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE); - state->m_eeprom->write_bit(data & 0x10); - state->m_eeprom->set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE); + state->m_eeprom->clk_write((data & 0x08) ? ASSERT_LINE : CLEAR_LINE); + state->m_eeprom->di_write((data >> 4) & 1); + state->m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE); state->m_stv_multi_bank = data & 3; stv_select_game(space.machine(), state->m_stv_multi_bank); diff --git a/src/emu/video/pc_vga.c b/src/emu/video/pc_vga.c index b49d391fd63..5962168f562 100644 --- a/src/emu/video/pc_vga.c +++ b/src/emu/video/pc_vga.c @@ -2104,16 +2104,6 @@ WRITE8_MEMBER(vga_device::mem_linear_w) vga.memory[offset] = data; } - -static struct serial_eeprom_interface ati_eeprom_interface = -{ - "*110", /* read command */ - "*101", /* write command */ - "*111", /* erase command */ - "*10000xxxx", // lock 1 00 00xxxx - "*10011xxxx" // unlock 1 00 11xxxx -}; - MACHINE_CONFIG_FRAGMENT( pcvideo_vga ) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480) @@ -2162,7 +2152,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( ati_vga ) MCFG_MACH8_ADD_OWNER("8514a") - MCFG_SERIAL_EEPROM_ADD("ati_eeprom",64,16,ati_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_ADD("ati_eeprom") MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( s3_764 ) @@ -5253,9 +5243,9 @@ READ8_MEMBER(ati_vga_device::ati_port_ext_r) break; case 0x37: { - serial_eeprom_device* eep = subdevice<serial_eeprom_device>("ati_eeprom"); + eeprom_serial_93cxx_device* eep = subdevice<eeprom_serial_93cxx_device>("ati_eeprom"); ret = 0x00; - ret |= eep->read_bit() << 3; + ret |= eep->do_read() << 3; } break; default: @@ -5313,12 +5303,12 @@ WRITE8_MEMBER(ati_vga_device::ati_port_ext_w) if(data & 0x04) { - serial_eeprom_device* eep = subdevice<serial_eeprom_device>("ati_eeprom"); + eeprom_serial_93cxx_device* eep = subdevice<eeprom_serial_93cxx_device>("ati_eeprom"); if(eep != NULL) { - eep->write_bit((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); - eep->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); - eep->set_cs_line((data & 0x08) ? CLEAR_LINE : ASSERT_LINE); + eep->di_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); + eep->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); + eep->cs_write((data & 0x08) ? ASSERT_LINE : CLEAR_LINE); } } else diff --git a/src/mame/drivers/20pacgal.c b/src/mame/drivers/20pacgal.c index 0fafc1878b0..031a99b699f 100644 --- a/src/mame/drivers/20pacgal.c +++ b/src/mame/drivers/20pacgal.c @@ -135,22 +135,6 @@ static const namco_interface namco_config = /************************************* * - * Non-volatile memory - * - *************************************/ - -static const serial_eeprom_interface _20pacgal_eeprom_intf = -{ - "*110", /* read command */ - "*101", /* write command */ - 0, /* erase command */ - "*10000xxxxx", /* lock command */ - "*10011xxxxx", /* unlock command */ -}; - - -/************************************* - * * Coin counter * *************************************/ @@ -304,12 +288,12 @@ static INPUT_PORTS_START( 20pacgal ) PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) PORT_START( "EEPROMIN" ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* bit 7 is EEPROM data */ + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* bit 7 is EEPROM data */ PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) /* bit 5 is cs (active low) */ - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) /* bit 6 is clock (active high) */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) /* bit 7 is data */ + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) /* bit 5 is cs (active high) */ + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) /* bit 6 is clock (active high) */ + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) /* bit 7 is data */ INPUT_PORTS_END @@ -366,7 +350,7 @@ static MACHINE_CONFIG_START( 20pacgal, _20pacgal_state ) MCFG_CPU_VBLANK_INT_DRIVER("screen", _20pacgal_state, vblank_irq) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, _20pacgal_eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* video hardware */ MCFG_FRAGMENT_ADD(20pacgal_video) diff --git a/src/mame/drivers/39in1.c b/src/mame/drivers/39in1.c index 2a1deefbd17..ce591e1384b 100644 --- a/src/mame/drivers/39in1.c +++ b/src/mame/drivers/39in1.c @@ -50,7 +50,7 @@ public: PXA255_LCD_Regs m_lcd_regs; dmadac_sound_device *m_dmadac[2]; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; UINT32 m_pxa255_lcd_palette[0x100]; UINT8 m_pxa255_lcd_framebuffer[0x100000]; @@ -806,7 +806,7 @@ READ32_MEMBER(_39in1_state::pxa255_gpio_r) { case PXA255_GPLR0: verboselog( machine(), 3, "pxa255_gpio_r: GPIO Pin-Level Register 0: %08x & %08x\n", gpio_regs->gplr0 | (1 << 1), mem_mask ); - return gpio_regs->gplr0 | (1 << 1) | (m_eeprom->read_bit() << 5); // Must be on. Probably a DIP switch. + return gpio_regs->gplr0 | (1 << 1) | (m_eeprom->do_read() << 5); // Must be on. Probably a DIP switch. case PXA255_GPLR1: verboselog( machine(), 3, "pxa255_gpio_r: *Not Yet Implemented* GPIO Pin-Level Register 1: %08x & %08x\n", gpio_regs->gplr1, mem_mask ); return 0xff9fffff; @@ -927,15 +927,15 @@ WRITE32_MEMBER(_39in1_state::pxa255_gpio_w) gpio_regs->gpsr0 |= data & gpio_regs->gpdr0; if(data & 0x00000004) { - m_eeprom->set_cs_line(CLEAR_LINE); + m_eeprom->cs_write(ASSERT_LINE); } if(data & 0x00000008) { - m_eeprom->set_clock_line(ASSERT_LINE); + m_eeprom->clk_write(ASSERT_LINE); } if(data & 0x00000010) { - m_eeprom->write_bit(1); + m_eeprom->di_write(1); } break; case PXA255_GPSR1: @@ -951,15 +951,15 @@ WRITE32_MEMBER(_39in1_state::pxa255_gpio_w) gpio_regs->gpsr0 &= ~(data & gpio_regs->gpdr0); if(data & 0x00000004) { - m_eeprom->set_cs_line(ASSERT_LINE); + m_eeprom->cs_write(ASSERT_LINE); } if(data & 0x00000008) { - m_eeprom->set_clock_line(CLEAR_LINE); + m_eeprom->clk_write(CLEAR_LINE); } if(data & 0x00000010) { - m_eeprom->write_bit(0); + m_eeprom->di_write(0); } break; case PXA255_GPCR1: @@ -1591,7 +1591,7 @@ static MACHINE_CONFIG_START( 39in1, _39in1_state ) MCFG_PALETTE_LENGTH(256) - MCFG_EEPROM_93C66B_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C66_ADD("eeprom") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") diff --git a/src/mame/drivers/8080bw.c b/src/mame/drivers/8080bw.c index 63ee9c0edb0..8bcf02cb4d2 100644 --- a/src/mame/drivers/8080bw.c +++ b/src/mame/drivers/8080bw.c @@ -175,7 +175,6 @@ #include "emu.h" #include "cpu/m6800/m6800.h" #include "cpu/i8085/i8085.h" -#include "machine/eepromser.h" #include "sound/ay8910.h" #include "sound/speaker.h" #include "includes/8080bw.h" @@ -3148,19 +3147,19 @@ ADDRESS_MAP_END READ8_MEMBER(_8080bw_state::invmulti_eeprom_r) { - return m_eeprom->read_bit(); + return m_eeprom->do_read(); } WRITE8_MEMBER(_8080bw_state::invmulti_eeprom_w) { // d0: latch bit - m_eeprom->write_bit(data & 1); + m_eeprom->di_write(data & 1); // d6: reset - m_eeprom->set_cs_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); // d4: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); } WRITE8_MEMBER(_8080bw_state::invmulti_bank_w) @@ -3184,7 +3183,7 @@ MACHINE_CONFIG_DERIVED_CLASS( invmulti, invaders, _8080bw_state ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(invmulti_map) - MCFG_EEPROM_93C46_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state,invmulti) MACHINE_CONFIG_END diff --git a/src/mame/drivers/albazg.c b/src/mame/drivers/albazg.c index a7720638aba..63cf6536cda 100644 --- a/src/mame/drivers/albazg.c +++ b/src/mame/drivers/albazg.c @@ -268,7 +268,7 @@ static INPUT_PORTS_START( yumefuda ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Coin Out") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Init SW") - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN0") @@ -322,9 +322,9 @@ static INPUT_PORTS_START( yumefuda ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) /* Unused, on the PCB there's just one bank */ PORT_START("DSW1") @@ -384,8 +384,7 @@ static MACHINE_CONFIG_START( yumefuda, albazg_state ) MCFG_CPU_IO_MAP(port_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", albazg_state, irq0_line_hold) - - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_WATCHDOG_VBLANK_INIT(8) // timing is unknown diff --git a/src/mame/drivers/asterix.c b/src/mame/drivers/asterix.c index 04753dac38c..62563d753af 100644 --- a/src/mame/drivers/asterix.c +++ b/src/mame/drivers/asterix.c @@ -18,15 +18,6 @@ colour, including the word "Konami" #include "includes/konamipt.h" #include "includes/asterix.h" -static const serial_eeprom_interface eeprom_intf = -{ - "111000", /* read command */ - "111100", /* write command */ - "1100100000000",/* erase command */ - "1100000000000",/* lock command */ - "1100110000000" /* unlock command */ -}; - #if 0 READ16_MEMBER(asterix_state::control2_r) { @@ -211,15 +202,15 @@ static INPUT_PORTS_START( asterix ) PORT_START("IN1") KONAMI16_LSB(2, IPT_UNKNOWN, IPT_START2) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED ) // EEPROM ready (always 1) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_SERVICE_NO_TOGGLE(0x0400, IP_ACTIVE_LOW ) PORT_BIT( 0xf800, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END @@ -286,8 +277,7 @@ static MACHINE_CONFIG_START( asterix, asterix_state ) MCFG_CPU_ADD("audiocpu", Z80, 8000000) MCFG_CPU_PROGRAM_MAP(sound_map) - - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS) diff --git a/src/mame/drivers/astrcorp.c b/src/mame/drivers/astrcorp.c index c98c0b01fb0..90a7159d164 100644 --- a/src/mame/drivers/astrcorp.c +++ b/src/mame/drivers/astrcorp.c @@ -380,12 +380,12 @@ static INPUT_PORTS_START( showhand ) PORT_START( "EEPROMIN" ) PORT_BIT( 0xfff7, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( showhanc ) @@ -409,12 +409,12 @@ static INPUT_PORTS_START( showhanc ) PORT_START( "EEPROMIN" ) PORT_BIT( 0xfff7, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( skilldrp ) @@ -438,12 +438,12 @@ static INPUT_PORTS_START( skilldrp ) PORT_START( "EEPROMIN" ) PORT_BIT( 0xfff7, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END /*************************************************************************** @@ -480,8 +480,8 @@ static MACHINE_CONFIG_START( showhand, astrocorp_state ) MCFG_CPU_VBLANK_INT_DRIVER("screen", astrocorp_state, irq4_line_hold) MCFG_NVRAM_ADD_0FILL("nvram") - MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SERIAL_EEPROM_DATA(showhand_default_eeprom, sizeof(showhand_default_eeprom)) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(showhand_default_eeprom, sizeof(showhand_default_eeprom)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -529,7 +529,7 @@ static MACHINE_CONFIG_START( skilldrp, astrocorp_state ) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", astrocorp_state, skilldrp_scanline, "screen", 0, 1) MCFG_NVRAM_ADD_0FILL("nvram") - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW ) MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW ) diff --git a/src/mame/drivers/ataxx.c b/src/mame/drivers/ataxx.c index ac0473caac1..b15ada30ca4 100644 --- a/src/mame/drivers/ataxx.c +++ b/src/mame/drivers/ataxx.c @@ -119,7 +119,7 @@ static INPUT_PORTS_START( ataxx ) PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN2") /* 0x20 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("AN0") /* 0x00 - analog X */ @@ -150,7 +150,7 @@ static INPUT_PORTS_START( wsf ) PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN2") /* 0x20 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -202,7 +202,7 @@ static INPUT_PORTS_START( indyheat ) PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN2") /* 0x20 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("AN0") /* Analog wheel 1 */ @@ -248,7 +248,7 @@ static INPUT_PORTS_START( brutforc ) PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN2") /* 0x20 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("P1") /* 0x0E */ @@ -286,24 +286,6 @@ INPUT_PORTS_END /************************************* * - * EEPROM interface - * - *************************************/ - -static const serial_eeprom_interface eeprom_intf = -{ - "000001100", - "000001010", - 0, - "0000010000000000", - "0000010011000000", - 1 -}; - - - -/************************************* - * * Machine driver * *************************************/ @@ -326,7 +308,9 @@ static MACHINE_CONFIG_START( ataxx, leland_state ) MCFG_MACHINE_START_OVERRIDE(leland_state,ataxx) MCFG_MACHINE_RESET_OVERRIDE(leland_state,ataxx) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C56_ADD("eeprom") + MCFG_EEPROM_SERIAL_ENABLE_STREAMING() + MCFG_NVRAM_ADD_0FILL("battery") /* video hardware */ diff --git a/src/mame/drivers/backfire.c b/src/mame/drivers/backfire.c index 168e972af67..e8eb46d39dd 100644 --- a/src/mame/drivers/backfire.c +++ b/src/mame/drivers/backfire.c @@ -60,7 +60,7 @@ public: required_device<deco16ic_device> m_deco_tilegen1; required_device<deco16ic_device> m_deco_tilegen2; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; /* memory */ UINT16 m_pf1_rowscroll[0x0800/2]; @@ -197,7 +197,7 @@ READ32_MEMBER(backfire_state::backfire_eeprom_r) { /* some kind of screen indicator? checked by backfirea set before it will boot */ int backfire_screen = machine().rand() & 1; - return ((m_eeprom->read_bit() << 24) | m_io_in0->read() + return ((m_eeprom->do_read() << 24) | m_io_in0->read() | ((m_io_in2->read() & 0xbf) << 16) | ((m_io_in3->read() & 0x40) << 16)) ^ (backfire_screen << 26) ; } @@ -205,14 +205,14 @@ READ32_MEMBER(backfire_state::backfire_eeprom_r) READ32_MEMBER(backfire_state::backfire_control2_r) { // logerror("%08x:Read eprom %08x (%08x)\n", space.device().safe_pc(), offset << 1, mem_mask); - return (m_eeprom->read_bit() << 24) | m_io_in1->read() | (m_io_in1->read() << 16); + return (m_eeprom->do_read() << 24) | m_io_in1->read() | (m_io_in1->read() << 16); } #ifdef UNUSED_FUNCTION READ32_MEMBER(backfire_state::backfire_control3_r) { // logerror("%08x:Read eprom %08x (%08x)\n", space.device().safe_pc(), offset << 1, mem_mask); - return (m_eeprom->read_bit() << 24) | m_io_in2->read() | (m_io_in2->read() << 16); + return (m_eeprom->do_read() << 24) | m_io_in2->read() | (m_io_in2->read() << 16); } #endif @@ -222,9 +222,9 @@ WRITE32_MEMBER(backfire_state::backfire_eeprom_w) logerror("%s:write eprom %08x (%08x) %08x\n",machine().describe_context(),offset<<1,mem_mask,data); if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(BIT(data, 0)); - m_eeprom->set_cs_line(BIT(data, 2) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write(BIT(data, 0)); + m_eeprom->cs_write(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE); } } @@ -499,7 +499,7 @@ static MACHINE_CONFIG_START( backfire, backfire_state ) MCFG_CPU_PROGRAM_MAP(backfire_map) MCFG_CPU_VBLANK_INT_DRIVER("lscreen", backfire_state, deco32_vbl_interrupt) /* or is it "rscreen?" */ - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ diff --git a/src/mame/drivers/cave.c b/src/mame/drivers/cave.c index 0c64876d882..ff5503f421c 100644 --- a/src/mame/drivers/cave.c +++ b/src/mame/drivers/cave.c @@ -297,13 +297,13 @@ WRITE16_MEMBER(cave_state::cave_eeprom_msb_w) coin_counter_w(machine(), 0, data & 0x1000); // latch the bit - m_eeprom->write_bit(data & 0x0800); + m_eeprom->di_write((data & 0x0800) >> 11); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE); } } @@ -318,13 +318,13 @@ WRITE16_MEMBER(cave_state::hotdogst_eeprom_msb_w) if (ACCESSING_BITS_8_15) // even address { // latch the bit - m_eeprom->write_bit(data & 0x0800); + m_eeprom->di_write((data & 0x0800) >> 11); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x0400) ? CLEAR_LINE: ASSERT_LINE); + m_eeprom->clk_write((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE); } } @@ -341,13 +341,13 @@ WRITE16_MEMBER(cave_state::cave_eeprom_lsb_w) coin_counter_w(machine(), 0, data & 0x0001); // latch the bit - m_eeprom->write_bit(data & 0x80); + m_eeprom->di_write((data & 0x80) >> 7); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); } } @@ -376,31 +376,17 @@ WRITE16_MEMBER(cave_state::metmqstr_eeprom_msb_w) if (~data & 0x0100) { // latch the bit - m_eeprom->write_bit(data & 0x0800); + m_eeprom->di_write((data & 0x0800) >> 11); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE); } } } -static const serial_eeprom_interface eeprom_interface_93C46_pacslot = -{ - "*110", // read 1 10 aaaaaa - "*101", // write 1 01 aaaaaa dddddddddddddddd - "*111", // erase 1 11 aaaaaa - "*10000xxxx", // lock 1 00 00xxxx - "*10011xxxx", // unlock 1 00 11xxxx - 1, // enable_multi_read (needed by pacslot) - 1 // reset_delay (otherwise pacslot will not recognize the eeprom) -// "*10001xxxx" // write all 1 00 01xxxx dddddddddddddddd -// "*10010xxxx" // erase all 1 00 10xxxx -}; - - /*************************************************************************** @@ -673,13 +659,13 @@ WRITE16_MEMBER(cave_state::korokoro_eeprom_msb_w) m_hopper = data & 0x0100; // ??? // latch the bit - m_eeprom->write_bit(data & 0x4000); + m_eeprom->di_write((data & 0x4000) >> 14); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x1000) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x1000) ? ASSERT_LINE : CLEAR_LINE); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE); } } @@ -787,7 +773,7 @@ ADDRESS_MAP_END READ16_MEMBER(cave_state::pwrinst2_eeprom_r) { - return ~8 + ((m_eeprom->read_bit() & 1) ? 8 : 0); + return ~8 + ((m_eeprom->do_read() & 1) ? 8 : 0); } INLINE void vctrl_w(address_space &space, offs_t offset, UINT16 data, UINT16 mem_mask, int GFX) @@ -890,13 +876,13 @@ WRITE16_MEMBER(cave_state::tjumpman_eeprom_lsb_w) if (ACCESSING_BITS_0_7) // odd address { // latch the bit - m_eeprom->write_bit(data & 0x0020); + m_eeprom->di_write((data & 0x0020) >> 5); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x0008) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x0008) ? ASSERT_LINE : CLEAR_LINE); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x0010) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x0010) ? ASSERT_LINE : CLEAR_LINE); } } @@ -1278,7 +1264,7 @@ static INPUT_PORTS_START( cave ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1431,7 +1417,7 @@ static INPUT_PORTS_START( guwange ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1475,7 +1461,7 @@ static INPUT_PORTS_START( korokoro ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1487,7 +1473,7 @@ static INPUT_PORTS_START( tjumpman ) PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( DEF_STR( Yes ) ) PORT_CODE(KEYCODE_Y) // suru ("do") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "1 Bet" ) @@ -1512,7 +1498,7 @@ static INPUT_PORTS_START( pacslot ) PORT_SERVICE( 0x01, IP_ACTIVE_LOW ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) // credits PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME( "Pac-Man" ) PORT_CODE(KEYCODE_Y) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME( "Bet" ) @@ -1819,7 +1805,7 @@ static MACHINE_CONFIG_START( dfeveron, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -1861,7 +1847,7 @@ static MACHINE_CONFIG_START( ddonpach, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -1907,7 +1893,7 @@ static MACHINE_CONFIG_START( donpachi, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -1953,7 +1939,7 @@ static MACHINE_CONFIG_START( esprade, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2034,7 +2020,7 @@ static MACHINE_CONFIG_START( guwange, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2078,7 +2064,7 @@ static MACHINE_CONFIG_START( hotdogst, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2131,7 +2117,7 @@ static MACHINE_CONFIG_START( korokoro, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2185,7 +2171,7 @@ static MACHINE_CONFIG_START( mazinger, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2244,7 +2230,7 @@ static MACHINE_CONFIG_START( metmqstr, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) /* start with the watchdog armed */ - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2299,7 +2285,9 @@ static MACHINE_CONFIG_START( pacslot, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_interface_93C46_pacslot) + + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_ENABLE_STREAMING() MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2355,7 +2343,7 @@ static MACHINE_CONFIG_START( pwrinst2, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2419,7 +2407,7 @@ static MACHINE_CONFIG_START( sailormn, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2473,7 +2461,9 @@ static MACHINE_CONFIG_START( tjumpman, cave_state ) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_ENABLE_STREAMING() MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) @@ -2514,7 +2504,7 @@ static MACHINE_CONFIG_START( uopoko, cave_state ) MCFG_CPU_VBLANK_INT_DRIVER("screen", cave_state, cave_interrupt) MCFG_MACHINE_START_OVERRIDE(cave_state,cave) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start) diff --git a/src/mame/drivers/cbasebal.c b/src/mame/drivers/cbasebal.c index 2d655b664e9..f9afd786d49 100644 --- a/src/mame/drivers/cbasebal.c +++ b/src/mame/drivers/cbasebal.c @@ -85,20 +85,6 @@ WRITE8_MEMBER(cbasebal_state::cbasebal_coinctrl_w) /************************************* * - * EEPROM - * - *************************************/ - -static const serial_eeprom_interface cbasebal_eeprom_intf = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111" /* erase command */ -}; - - -/************************************* - * * Address maps * *************************************/ @@ -164,16 +150,16 @@ static INPUT_PORTS_START( cbasebal ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") /* ? */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "IO_01" ) - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) PORT_START( "IO_02" ) - PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) PORT_START( "IO_03" ) - PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END @@ -272,8 +258,7 @@ static MACHINE_CONFIG_START( cbasebal, cbasebal_state ) MCFG_CPU_IO_MAP(cbasebal_portmap) MCFG_CPU_VBLANK_INT_DRIVER("screen", cbasebal_state, irq0_line_hold) /* ??? */ - - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, cbasebal_eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) diff --git a/src/mame/drivers/centiped.c b/src/mame/drivers/centiped.c index 3bdaa8454f3..7b7ede7fdf3 100644 --- a/src/mame/drivers/centiped.c +++ b/src/mame/drivers/centiped.c @@ -831,7 +831,7 @@ ADDRESS_MAP_END READ8_MEMBER(centiped_state::multiped_eeprom_r) { - return m_eeprom->read_bit() ? 0x80 : 0; + return m_eeprom->do_read() ? 0x80 : 0; } WRITE8_MEMBER(centiped_state::multiped_eeprom_w) @@ -843,15 +843,15 @@ WRITE8_MEMBER(centiped_state::multiped_eeprom_w) // a1 low: latch bit if (~offset & 2) - m_eeprom->write_bit((data & 0x80) ? 1 : 0); + m_eeprom->di_write((data & 0x80) ? 1 : 0); // a2 low: write latch or select next bit to read if (~offset & 4) - m_eeprom->set_clock_line((~data & 0x80) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((~data & 0x80) ? ASSERT_LINE : CLEAR_LINE); // both high: reset else if (offset & 2) - m_eeprom->set_cs_line((data & 0x80) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x80) ? ASSERT_LINE : CLEAR_LINE); } WRITE8_MEMBER(centiped_state::multiped_prgbank_w) @@ -1859,7 +1859,7 @@ static MACHINE_CONFIG_DERIVED( multiped, milliped ) MCFG_CPU_PROGRAM_MAP(multiped_map) MCFG_DEVICE_REMOVE("earom") - MCFG_EEPROM_93C46_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") MACHINE_CONFIG_END diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c index 5c46348d10b..730285dbef9 100644 --- a/src/mame/drivers/cps1.c +++ b/src/mame/drivers/cps1.c @@ -432,21 +432,6 @@ WRITE8_MEMBER(cps_state::qsound_banksw_w) * ********************************************************************/ -static const serial_eeprom_interface qsound_eeprom_interface = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111" /* erase command */ -}; - -static const serial_eeprom_interface pang3_eeprom_interface = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111" /* erase command */ -}; - - /* PAL PRG1 (16P8B @ 12H): @@ -2271,12 +2256,12 @@ static INPUT_PORTS_START( wof ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMIN" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END INPUT_PORTS_START( dino ) @@ -2301,12 +2286,12 @@ INPUT_PORTS_START( dino ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMIN" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END @@ -2429,12 +2414,12 @@ INPUT_PORTS_START( punisher ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMIN" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END @@ -2529,12 +2514,12 @@ INPUT_PORTS_START( slammast ) PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMIN" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END /* Needs further checking */ @@ -2771,12 +2756,12 @@ static INPUT_PORTS_START( pang3 ) PORT_DIPUNUSED( 0x80, 0x80 ) /* doubles up as an extra service switch */ PORT_START( "EEPROMIN" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END /* Needs further checking */ @@ -3070,12 +3055,12 @@ static INPUT_PORTS_START( wofch ) PORT_INCLUDE( sfzch ) PORT_START( "EEPROMIN" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END /* @@ -3213,7 +3198,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pang3, cps1_12MHz ) /* basic machine hardware */ - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, pang3_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( ganbare, cps1_10MHz ) @@ -3238,7 +3223,7 @@ static MACHINE_CONFIG_DERIVED( qsound, cps1_12MHz ) MCFG_MACHINE_START_OVERRIDE(cps_state,qsound) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* sound hardware */ MCFG_DEVICE_REMOVE("mono") @@ -3255,7 +3240,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( wofhfh, cps1_12MHz ) /* basic machine hardware */ - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( sf2m3, cps1_12MHz) diff --git a/src/mame/drivers/cps2.c b/src/mame/drivers/cps2.c index 4e11fe23cfb..5beae990c62 100644 --- a/src/mame/drivers/cps2.c +++ b/src/mame/drivers/cps2.c @@ -679,13 +679,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(cps_state::cps2_interrupt) * *************************************/ -static const serial_eeprom_interface cps2_eeprom_interface = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111" /* erase command */ -}; - WRITE16_MEMBER( cps_state::cps2_eeprom_port_w ) { if (ACCESSING_BITS_8_15) @@ -934,7 +927,7 @@ static INPUT_PORTS_START( cps2_4p4b ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4) PORT_START("IN2") /* (0x20) */ - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_SERVICE_NO_TOGGLE( 0x0002, IP_ACTIVE_LOW ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x00f8, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -948,9 +941,9 @@ static INPUT_PORTS_START( cps2_4p4b ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) /* fake inputs for digital volume buttons */ PORT_START( "DIGITALVOL" ) @@ -1256,7 +1249,7 @@ static MACHINE_CONFIG_START( cps2, cps_state ) MCFG_MACHINE_START_OVERRIDE(cps_state,cps2) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, cps2_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) diff --git a/src/mame/drivers/dcheese.c b/src/mame/drivers/dcheese.c index db2d04166fa..dcecdbee608 100644 --- a/src/mame/drivers/dcheese.c +++ b/src/mame/drivers/dcheese.c @@ -244,7 +244,7 @@ static INPUT_PORTS_START( dcheese ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE ) /* says tilt */ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT ) /* says test */ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON3 ) /* bump left */ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) /* bump right */ @@ -282,9 +282,9 @@ static INPUT_PORTS_START( dcheese ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END @@ -296,7 +296,7 @@ static INPUT_PORTS_START( lottof2 ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x1f00, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* button */ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* ticket */ @@ -330,9 +330,9 @@ static INPUT_PORTS_START( lottof2 ) PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END @@ -344,7 +344,7 @@ static INPUT_PORTS_START( fredmem ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x1f00, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_5_PAD) PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -380,9 +380,9 @@ static INPUT_PORTS_START( fredmem ) PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END @@ -405,7 +405,7 @@ static MACHINE_CONFIG_START( dcheese, dcheese_state ) MCFG_CPU_PERIODIC_INT_DRIVER(dcheese_state, irq1_line_hold, 480) /* accurate for fredmem */ - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW) /* video hardware */ diff --git a/src/mame/drivers/deco156.c b/src/mame/drivers/deco156.c index b9cccd4f0d4..8b01880bdb7 100644 --- a/src/mame/drivers/deco156.c +++ b/src/mame/drivers/deco156.c @@ -203,7 +203,7 @@ static INPUT_PORTS_START( hvysmsh ) PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -213,9 +213,9 @@ static INPUT_PORTS_START( hvysmsh ) PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( wcvol95 ) @@ -245,7 +245,7 @@ static INPUT_PORTS_START( wcvol95 ) PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNUSED ) /* 'soundmask' */ PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -255,9 +255,9 @@ static INPUT_PORTS_START( wcvol95 ) PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x00000002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x00000002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END @@ -356,7 +356,7 @@ static MACHINE_CONFIG_START( hvysmsh, deco156_state ) MCFG_CPU_PROGRAM_MAP(hvysmsh_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", deco156_state, deco32_vbl_interrupt) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) @@ -393,7 +393,7 @@ static MACHINE_CONFIG_START( wcvol95, deco156_state ) MCFG_CPU_PROGRAM_MAP(wcvol95_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", deco156_state, deco32_vbl_interrupt) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) diff --git a/src/mame/drivers/deco32.c b/src/mame/drivers/deco32.c index 7e8c10df406..7e05490bb45 100644 --- a/src/mame/drivers/deco32.c +++ b/src/mame/drivers/deco32.c @@ -368,7 +368,7 @@ READ32_MEMBER(deco32_state::fghthist_control_r) switch (offset) { case 0: return 0xffff0000 | ioport("IN0")->read(); case 1: return 0xffff0000 | ioport("IN1")->read(); //check top bits?? - case 2: return 0xfffffffe | m_eeprom->read_bit(); + case 2: return 0xfffffffe | m_eeprom->do_read(); } return 0xffffffff; @@ -377,9 +377,9 @@ READ32_MEMBER(deco32_state::fghthist_control_r) WRITE32_MEMBER(deco32_state::fghthist_eeprom_w) { if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data & 0x10); - m_eeprom->set_cs_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x10) >> 4); + m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); deco32_pri_w(space,0,data&0x1,0xffffffff); /* Bit 0 - layer priority toggle */ } @@ -429,15 +429,15 @@ WRITE32_MEMBER(dragngun_state::dragngun_lightgun_w) READ32_MEMBER(deco32_state::dragngun_eeprom_r) { - return 0xfffffffe | m_eeprom->read_bit(); + return 0xfffffffe | m_eeprom->do_read(); } WRITE32_MEMBER(deco32_state::dragngun_eeprom_w) { if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line((data & 0x2) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data & 0x1); - m_eeprom->set_cs_line((data & 0x4) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((data & 0x2) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write(data & 0x1); + m_eeprom->cs_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE); return; } logerror("%s:Write control 1 %08x %08x\n",machine().describe_context(),offset,data); @@ -581,7 +581,7 @@ WRITE32_MEMBER(deco32_state::tattass_control_w) UINT16 deco32_state::port_b_nslasher(int unused) { - return (m_eeprom->read_bit()); + return (m_eeprom->do_read()); } @@ -613,9 +613,9 @@ WRITE32_MEMBER(deco32_state::nslasher_eeprom_w) { if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data & 0x10); - m_eeprom->set_cs_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x10) >> 4); + m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); deco32_pri_w(space,0,data&0x3,0xffffffff); /* Bit 0 - layer priority toggle, Bit 1 - BG2/3 Joint mode (8bpp) */ } @@ -1669,10 +1669,6 @@ WRITE8_MEMBER(deco32_state::sound_bankswitch_w) m_oki2->set_bank_base(((data >> 1)& 1) * 0x40000); } -static const serial_eeprom_interface eeprom_interface_tattass = -{ -}; - /**********************************************************************************/ MACHINE_RESET_MEMBER(deco32_state,deco32) @@ -1799,7 +1795,7 @@ UINT16 deco32_state::port_a_fghthist(int unused) UINT16 deco32_state::port_b_fghthist(int unused) { - return machine().device<serial_eeprom_device>(":eeprom")->read_bit(); + return machine().device<eeprom_serial_93cxx_device>(":eeprom")->do_read(); } UINT16 deco32_state::port_c_fghthist(int unused) @@ -1817,7 +1813,7 @@ static MACHINE_CONFIG_START( fghthist, deco32_state ) /* DE-0380-2 PCB */ MCFG_CPU_ADD("audiocpu", H6280, 32220000/8) MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) @@ -1873,7 +1869,7 @@ static MACHINE_CONFIG_START( fghthsta, deco32_state ) /* DE-0395-1 PCB */ MCFG_CPU_ADD("audiocpu", H6280, 32220000/8) MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -1987,7 +1983,7 @@ static MACHINE_CONFIG_START( dragngun, dragngun_state ) MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_MACHINE_RESET_OVERRIDE(deco32_state,deco32) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", deco32_state, interrupt_gen) @@ -2069,7 +2065,7 @@ static MACHINE_CONFIG_START( lockload, dragngun_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* to improve main<->audio comms */ MCFG_MACHINE_RESET_OVERRIDE(deco32_state,deco32) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("int_timer", deco32_state, interrupt_gen) @@ -2159,7 +2155,7 @@ static MACHINE_CONFIG_START( tattass, deco32_state ) MCFG_CPU_PROGRAM_MAP(tattass_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state, deco32_vbl_interrupt) - MCFG_SERIAL_EEPROM_ADD("eeprom", 1024, 8, eeprom_interface_tattass) + MCFG_EEPROM_SERIAL_93C76_8BIT_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -2204,7 +2200,7 @@ static MACHINE_CONFIG_START( nslasher, deco32_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* to improve main<->audio comms */ - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/deco_mlc.c b/src/mame/drivers/deco_mlc.c index da9484f0eae..aba9a4e0f22 100644 --- a/src/mame/drivers/deco_mlc.c +++ b/src/mame/drivers/deco_mlc.c @@ -184,9 +184,9 @@ WRITE32_MEMBER(deco_mlc_state::avengrs_eprom_w) if (ACCESSING_BITS_8_15) { UINT8 ebyte=(data>>8)&0xff; // if (ebyte&0x80) { - m_eeprom->set_clock_line((ebyte & 0x2) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(ebyte & 0x1); - m_eeprom->set_cs_line((ebyte & 0x4) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((ebyte & 0x2) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write(ebyte & 0x1); + m_eeprom->cs_write((ebyte & 0x4) ? ASSERT_LINE : CLEAR_LINE); // } } else if (ACCESSING_BITS_0_7) { @@ -344,7 +344,7 @@ static INPUT_PORTS_START( mlc ) PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -420,7 +420,7 @@ static MACHINE_CONFIG_START( avengrgs, deco_mlc_state ) MCFG_CPU_PROGRAM_MAP(decomlc_map) MCFG_MACHINE_RESET_OVERRIDE(deco_mlc_state,mlc) - MCFG_EEPROM_93C46_ADD("eeprom") /* Actually 93c45 */ + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* Actually 93c45 */ MCFG_TIMER_DRIVER_ADD("int_timer", deco_mlc_state, interrupt_gen) @@ -453,7 +453,7 @@ static MACHINE_CONFIG_START( mlc, deco_mlc_state ) MCFG_CPU_PROGRAM_MAP(decomlc_map) MCFG_MACHINE_RESET_OVERRIDE(deco_mlc_state,mlc) - MCFG_EEPROM_93C46_ADD("eeprom") /* Actually 93c45 */ + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* Actually 93c45 */ MCFG_TIMER_DRIVER_ADD("int_timer", deco_mlc_state, interrupt_gen) diff --git a/src/mame/drivers/dkong.c b/src/mame/drivers/dkong.c index a7e5064be4e..dffa00a419c 100644 --- a/src/mame/drivers/dkong.c +++ b/src/mame/drivers/dkong.c @@ -1583,7 +1583,7 @@ GFXDECODE_END READ8_MEMBER(dkong_state::braze_eeprom_r) { - return m_eeprom->read_bit(); + return m_eeprom->do_read(); } WRITE8_MEMBER(dkong_state::braze_a15_w) @@ -1594,9 +1594,9 @@ WRITE8_MEMBER(dkong_state::braze_a15_w) WRITE8_MEMBER(dkong_state::braze_eeprom_w) { - m_eeprom->write_bit(data & 0x01); - m_eeprom->set_cs_line(data & 0x04 ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line(data & 0x02 ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write(data & 0x01); + m_eeprom->cs_write(data & 0x04 ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write(data & 0x02 ? ASSERT_LINE : CLEAR_LINE); } void dkong_state::braze_decrypt_rom(UINT8 *dest) @@ -1690,7 +1690,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( braze, dkong2b ) - MCFG_EEPROM_93C46_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") MACHINE_CONFIG_END static MACHINE_CONFIG_START( dkong3, dkong_state ) diff --git a/src/mame/drivers/dreambal.c b/src/mame/drivers/dreambal.c index ce5a6e78596..7123f09dfe6 100644 --- a/src/mame/drivers/dreambal.c +++ b/src/mame/drivers/dreambal.c @@ -39,7 +39,7 @@ public: m_deco_tilegen1(*this, "tilegen1") { } - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; /* devices */ required_device<cpu_device> m_maincpu; @@ -63,9 +63,9 @@ public: if (mem_mask&0x00ff) { - m_eeprom->set_clock_line(data &0x2 ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data &0x1); - m_eeprom->set_cs_line(data&0x4 ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write(data &0x2 ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write(data &0x1); + m_eeprom->cs_write(data&0x4 ? ASSERT_LINE : CLEAR_LINE); } } }; @@ -191,7 +191,7 @@ static INPUT_PORTS_START( dreambal ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_START("DSW") - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) @@ -328,7 +328,7 @@ static MACHINE_CONFIG_START( dreambal, dreambal_state ) MCFG_PALETTE_LENGTH(0x400/2) MCFG_GFXDECODE(dreambal) - MCFG_EEPROM_93C46_ADD("eeprom") // 93lc46b + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") // 93lc46b MCFG_DECO104_ADD("ioprot104") diff --git a/src/mame/drivers/eolith.c b/src/mame/drivers/eolith.c index 7ebd65218ac..1ecdc4e471e 100644 --- a/src/mame/drivers/eolith.c +++ b/src/mame/drivers/eolith.c @@ -280,7 +280,7 @@ static INPUT_PORTS_START( common ) PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, eolith_state, eolith_speedup_getvblank, NULL) @@ -316,9 +316,9 @@ static INPUT_PORTS_START( common ) PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x00000002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END static INPUT_PORTS_START( linkypip ) @@ -539,23 +539,6 @@ INPUT_PORTS_END /************************************* * - * EEPROM interface - * - *************************************/ - -// It's configured for 512 bytes -static const serial_eeprom_interface eeprom_interface_93C66 = -{ - "*110", // read 110 aaaaaaaaa - "*101", // write 101 aaaaaaaaa dddddddd - "*111", // erase 111 aaaaaaaaa - "*10000xxxxxx", // lock 100 00xxxxxxx - "*10011xxxxxx" // unlock 100 11xxxxxxx -}; - - -/************************************* - * * QS1000 interface * *************************************/ @@ -595,7 +578,7 @@ static MACHINE_CONFIG_START( eolith45, eolith_state ) MCFG_MACHINE_RESET_OVERRIDE(eolith_state,eolith) - MCFG_SERIAL_EEPROM_ADD("eeprom", 512, 8, eeprom_interface_93C66) + MCFG_EEPROM_SERIAL_93C66_8BIT_ADD("eeprom") // for testing sound sync // MCFG_QUANTUM_PERFECT_CPU("maincpu") diff --git a/src/mame/drivers/eolith16.c b/src/mame/drivers/eolith16.c index e402910de3d..063709fc0b2 100644 --- a/src/mame/drivers/eolith16.c +++ b/src/mame/drivers/eolith16.c @@ -38,16 +38,6 @@ public: -// It's configured for 512 bytes -static const serial_eeprom_interface eeprom_interface_93C66 = -{ - "*110", // read 110 aaaaaaaaa - "*101", // write 101 aaaaaaaaa dddddddd - "*111", // erase 111 aaaaaaaaa - "*10000xxxxxx", // lock 100 00xxxxxxx - "*10011xxxxxx" // unlock 100 11xxxxxxx -}; - WRITE16_MEMBER(eolith16_state::eeprom_w) { m_vbuffer = (data & 0x80) >> 7; @@ -92,7 +82,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( eolith16 ) PORT_START("SPECIAL") - PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, eolith16_state, eolith_speedup_getvblank, NULL) PORT_BIT( 0xff6f, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -115,9 +105,9 @@ static INPUT_PORTS_START( eolith16 ) PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END VIDEO_START_MEMBER(eolith16_state,eolith16) @@ -179,7 +169,7 @@ static MACHINE_CONFIG_START( eolith16, eolith16_state ) MCFG_CPU_PROGRAM_MAP(eolith16_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", eolith16_state, eolith_speedup, "screen", 0, 1) - MCFG_SERIAL_EEPROM_ADD("eeprom", 512, 8, eeprom_interface_93C66) + MCFG_EEPROM_SERIAL_93C66_8BIT_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/esd16.c b/src/mame/drivers/esd16.c index 2cfa3fc290a..e5fe502e4cc 100644 --- a/src/mame/drivers/esd16.c +++ b/src/mame/drivers/esd16.c @@ -104,7 +104,7 @@ READ16_MEMBER(esd16_state::esd_eeprom_r) { if (ACCESSING_BITS_8_15) { - return ((m_eeprom->read_bit() & 0x01) << 15); + return ((m_eeprom->do_read() & 0x01) << 15); } // logerror("(0x%06x) unk EEPROM read: %04x\n", space.device().safe_pc(), mem_mask); @@ -455,9 +455,9 @@ static INPUT_PORTS_START( hedpanic ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END @@ -492,9 +492,9 @@ static INPUT_PORTS_START( swatpolc ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END /*************************************************************************** @@ -668,7 +668,7 @@ static MACHINE_CONFIG_DERIVED( hedpanio, esd16 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(hedpanic_map) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MACHINE_CONFIG_END /* The ESD 08-26-1999 PCBs take that further and modify the sprite offsets */ diff --git a/src/mame/drivers/f-32.c b/src/mame/drivers/f-32.c index a86664ee92c..4a5214dc5c8 100644 --- a/src/mame/drivers/f-32.c +++ b/src/mame/drivers/f-32.c @@ -119,16 +119,16 @@ static INPUT_PORTS_START( mosaicf2 ) PORT_BIT( 0xff000000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMIN" ) - PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) PORT_START( "EEPROMCLK" ) - PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) PORT_START( "EEPROMCS" ) - PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static MACHINE_CONFIG_START( mosaicf2, mosaicf2_state ) @@ -139,7 +139,7 @@ static MACHINE_CONFIG_START( mosaicf2, mosaicf2_state ) MCFG_CPU_IO_MAP(mosaicf2_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", mosaicf2_state, irq0_line_hold) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/fcrash.c b/src/mame/drivers/fcrash.c index c861218a719..61c3ea940cf 100644 --- a/src/mame/drivers/fcrash.c +++ b/src/mame/drivers/fcrash.c @@ -94,13 +94,6 @@ slampic: no sound. In the wrestling ring, a layer flashes on and off. #include "sound/okim6295.h" #include "machine/eepromser.h" -static const serial_eeprom_interface qsound_eeprom_interface = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111" /* erase command */ -}; - WRITE16_MEMBER( cps_state::fcrash_soundlatch_w ) { if (ACCESSING_BITS_0_7) @@ -1320,12 +1313,12 @@ static INPUT_PORTS_START( sgyxz ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 ) PORT_START( "EEPROMIN" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END @@ -1974,7 +1967,7 @@ static MACHINE_CONFIG_START( dinopic, cps_state ) MCFG_MACHINE_START_OVERRIDE(cps_state, dinopic) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -2141,7 +2134,7 @@ static MACHINE_CONFIG_START( sgyxz, cps_state ) MCFG_PALETTE_LENGTH(0xc00) MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -2219,7 +2212,7 @@ static MACHINE_CONFIG_START( punipic, cps_state ) MCFG_MACHINE_START_OVERRIDE(cps_state, punipic) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -2609,7 +2602,7 @@ static MACHINE_CONFIG_START( slampic, cps_state ) MCFG_MACHINE_START_OVERRIDE(cps_state, slampic) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/fortecar.c b/src/mame/drivers/fortecar.c index 0d710e7bd2e..9e7e06e997c 100644 --- a/src/mame/drivers/fortecar.c +++ b/src/mame/drivers/fortecar.c @@ -345,7 +345,7 @@ public: virtual void video_start(); virtual void palette_init(); UINT32 screen_update_fortecar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; @@ -442,15 +442,15 @@ CK PPI_PC1 DIN PPI_PC2 DOUT PPI_PC4 */ - m_eeprom->write_bit((data & 0x04) >> 2); - m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x04) >> 2); + m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); } READ8_MEMBER(fortecar_state::ppi0_portc_r) { // popmessage("%s",machine().describe_context()); - return ((m_eeprom->read_bit()<<4) & 0x10); + return ((m_eeprom->do_read()<<4) & 0x10); } static I8255A_INTERFACE( ppi8255_intf ) @@ -548,19 +548,6 @@ static MC6845_INTERFACE( mc6845_intf ) }; -static const serial_eeprom_interface forte_eeprom_intf = -{/* - Preliminary interface for NM93CS56N Serial EEPROM. - Correct address & data. Using 93C46 similar protocol. -*/ - "*110", /* read command */ - "*101", /* write command */ - "*111", /* erase command */ - "*10000xxxxxx", /* lock command */ - "*10011xxxxxx", /* unlock command */ -}; - - static ADDRESS_MAP_START( fortecar_map, AS_PROGRAM, 8, fortecar_state ) AM_RANGE(0x0000, 0xbfff) AM_ROM AM_RANGE(0xc000, 0xc7ff) AM_ROM @@ -700,8 +687,8 @@ static MACHINE_CONFIG_START( fortecar, fortecar_state ) MCFG_SCREEN_UPDATE_DRIVER(fortecar_state, screen_update_fortecar) - MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, forte_eeprom_intf) - MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0) + MCFG_EEPROM_SERIAL_93C56_ADD("eeprom") + MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) MCFG_I8255A_ADD( "fcppi0", ppi8255_intf ) MCFG_V3021_ADD("rtc") @@ -733,7 +720,7 @@ ROM_START( fortecar ) ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, BAD_DUMP CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) ) - ROM_REGION( 0x0200, "eeprom", 0 ) /* default serial EEPROM */ + ROM_REGION( 0x0100, "eeprom", 0 ) /* default serial EEPROM */ ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, BAD_DUMP CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) ) ROM_REGION( 0x200, "proms", 0 ) @@ -752,7 +739,7 @@ ROM_START( fortecrd ) ROM_REGION( 0x0800, "nvram", 0 ) /* default NVRAM */ ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) ) - ROM_REGION( 0x0200, "eeprom", 0 ) /* default serial EEPROM */ + ROM_REGION( 0x0100, "eeprom", 0 ) /* default serial EEPROM */ ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) ) ROM_REGION( 0x0200, "proms", 0 ) diff --git a/src/mame/drivers/fromanc2.c b/src/mame/drivers/fromanc2.c index 994a2a1a483..be989c84bcb 100644 --- a/src/mame/drivers/fromanc2.c +++ b/src/mame/drivers/fromanc2.c @@ -313,7 +313,7 @@ static INPUT_PORTS_START( fromanc2 ) PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fromanc2_state,subcpu_int_r, NULL) // SUBCPU INT FLAG PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fromanc2_state,sndcpu_nmi_r, NULL) // SNDCPU NMI FLAG PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fromanc2_state,subcpu_nmi_r, NULL) // SUBCPU NMI FLAG - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME( "Service Mode (1P)" ) PORT_CODE(KEYCODE_F2) // TEST (1P) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME( "Service Mode (2P)" ) PORT_CODE(KEYCODE_F2) // TEST (2P) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -396,9 +396,9 @@ static INPUT_PORTS_START( fromanc2 ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( fromanc4 ) @@ -412,14 +412,14 @@ static INPUT_PORTS_START( fromanc4 ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fromanc2_state,sndcpu_nmi_r, NULL) // SNDCPU NMI FLAG PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("EEPROMOUT") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END @@ -534,7 +534,7 @@ static MACHINE_CONFIG_START( fromanc2, fromanc2_state ) MCFG_MACHINE_START_OVERRIDE(fromanc2_state,fromanc2) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_GFXDECODE(fromanc2) @@ -584,7 +584,7 @@ static MACHINE_CONFIG_START( fromancr, fromanc2_state ) MCFG_MACHINE_START_OVERRIDE(fromanc2_state,fromanc2) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_GFXDECODE(fromancr) @@ -630,7 +630,7 @@ static MACHINE_CONFIG_START( fromanc4, fromanc2_state ) MCFG_MACHINE_START_OVERRIDE(fromanc2_state,fromanc4) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_GFXDECODE(fromancr) diff --git a/src/mame/drivers/gaelco2.c b/src/mame/drivers/gaelco2.c index ee2151c2115..b7aa0c2ac8c 100644 --- a/src/mame/drivers/gaelco2.c +++ b/src/mame/drivers/gaelco2.c @@ -249,7 +249,7 @@ static INPUT_PORTS_START( bang ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* bit 6 is EEPROM data (DOUT) */ + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* bit 6 is EEPROM data (DOUT) */ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SPECIAL ) /* bit 7 is EEPROM ready */ PORT_START("LIGHT0_X") @@ -271,24 +271,13 @@ static const gaelcosnd_interface bang_snd_interface = { 0*0x0200000, 1*0x0200000, 2*0x0200000, 3*0x0200000 } /* start of each ROM bank */ }; -static const serial_eeprom_interface gaelco2_eeprom_interface = -{ - "*110", /* read command */ - "*101", /* write command */ - "*111", /* erase command */ - "*10000xxxxxx", /* lock command */ - "*10011xxxxxx", /* unlock command */ -// "*10001xxxxxx", /* write all */ -// "*10010xxxxxx", /* erase all */ -}; - static MACHINE_CONFIG_START( bang, gaelco2_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 30000000/2) /* 15 MHz */ MCFG_CPU_PROGRAM_MAP(bang_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gaelco2_state, bang_irq, "screen", 0, 1) - MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, gaelco2_eeprom_interface) + MCFG_EEPROM_SERIAL_93C66_ADD("eeprom") /* video hardware */ MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") @@ -949,8 +938,8 @@ static INPUT_PORTS_START( snowboar ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* bit 6 is EEPROM data (DOUT) */ - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) /* bit 7 is EEPROM ready */ + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* bit 6 is EEPROM data (DOUT) */ + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) INPUT_PORTS_END static const gaelcosnd_interface snowboar_snd_interface = @@ -965,7 +954,7 @@ static MACHINE_CONFIG_START( snowboar, gaelco2_state ) MCFG_CPU_PROGRAM_MAP(snowboar_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", gaelco2_state, irq6_line_hold) - MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, gaelco2_eeprom_interface) + MCFG_EEPROM_SERIAL_93C66_ADD("eeprom") /* video hardware */ MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") @@ -1206,7 +1195,7 @@ static MACHINE_CONFIG_START( wrally2, gaelco2_state ) MCFG_CPU_PROGRAM_MAP(wrally2_map) MCFG_CPU_VBLANK_INT_DRIVER("lscreen", gaelco2_state, irq6_line_hold) - MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, gaelco2_eeprom_interface) + MCFG_EEPROM_SERIAL_93C66_ADD("eeprom") /* video hardware */ MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") diff --git a/src/mame/drivers/gaelco3d.c b/src/mame/drivers/gaelco3d.c index 074ed14e72a..90a604c7396 100644 --- a/src/mame/drivers/gaelco3d.c +++ b/src/mame/drivers/gaelco3d.c @@ -290,7 +290,7 @@ READ16_MEMBER(gaelco3d_state::eeprom_data_r) result |= m_serial->status_r(space, 0); } - if (m_eeprom->read_bit()) + if (m_eeprom->do_read()) result ^= 0x0004; if (LOG) logerror("eeprom_data_r(%02X)\n", result); @@ -319,7 +319,7 @@ WRITE16_MEMBER(gaelco3d_state::eeprom_data_w) { if (ACCESSING_BITS_0_7) { - m_eeprom->write_bit(data & 0x01); + m_eeprom->di_write(data & 0x01); } else if (mem_mask != 0xffff) logerror("write mask: %08x data %08x\n", mem_mask, data); @@ -330,7 +330,7 @@ WRITE16_MEMBER(gaelco3d_state::eeprom_clock_w) { if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); } } @@ -339,7 +339,7 @@ WRITE16_MEMBER(gaelco3d_state::eeprom_cs_w) { if (ACCESSING_BITS_0_7) { - m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); } } @@ -992,7 +992,7 @@ static MACHINE_CONFIG_START( gaelco3d, gaelco3d_state ) MCFG_CPU_DATA_MAP(adsp_data_map) - MCFG_EEPROM_93C66B_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C66_ADD("eeprom") MCFG_QUANTUM_TIME(attotime::from_hz(6000)) diff --git a/src/mame/drivers/galastrm.c b/src/mame/drivers/galastrm.c index 0a145e9416b..680326b98bb 100644 --- a/src/mame/drivers/galastrm.c +++ b/src/mame/drivers/galastrm.c @@ -124,9 +124,9 @@ popmessage(t); if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data & 0x40); - m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x40) >> 6); + m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); return; } return; @@ -200,7 +200,7 @@ static INPUT_PORTS_START( galastrm ) PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x00000200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galastrm_state,frame_counter_r, NULL) PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -275,15 +275,6 @@ GFXDECODE_END MACHINE DRIVERS ***********************************************************/ -static const serial_eeprom_interface galastrm_eeprom_interface = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111", /* erase command */ - "0100000000", /* unlock command */ - "0100110000", /* lock command */ -}; - /***************************************************************************/ static const tc0100scn_interface galastrm_tc0100scn_intf = @@ -311,7 +302,7 @@ static MACHINE_CONFIG_START( galastrm, galastrm_state ) MCFG_CPU_PROGRAM_MAP(galastrm_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", galastrm_state, galastrm_interrupt) /* VBL */ - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, galastrm_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/galpani2.c b/src/mame/drivers/galpani2.c index 45a8a65fd34..6a3e3c0aa86 100644 --- a/src/mame/drivers/galpani2.c +++ b/src/mame/drivers/galpani2.c @@ -35,7 +35,7 @@ To Do: READ16_MEMBER(galpani2_state::galpani2_eeprom_r) { - return (m_eeprom_word & ~1) | (m_eeprom->read_bit() & 1); + return (m_eeprom_word & ~1) | (m_eeprom->do_read() & 1); } WRITE16_MEMBER(galpani2_state::galpani2_eeprom_w) @@ -44,13 +44,13 @@ WRITE16_MEMBER(galpani2_state::galpani2_eeprom_w) if ( ACCESSING_BITS_0_7 ) { // latch the bit - m_eeprom->write_bit(data & 0x02); + m_eeprom->di_write((data & 0x02) >> 1); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x08) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 0x08) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -581,7 +581,7 @@ static MACHINE_CONFIG_START( galpani2, galpani2_state ) MCFG_CPU_PROGRAM_MAP(galpani2_mem2) MCFG_TIMER_DRIVER_ADD_SCANLINE("s_scantimer", galpani2_state, galpani2_interrupt2, "screen", 0, 1) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/galpani3.c b/src/mame/drivers/galpani3.c index 5e3ecbc54a3..12ab5a75a13 100644 --- a/src/mame/drivers/galpani3.c +++ b/src/mame/drivers/galpani3.c @@ -512,7 +512,7 @@ static MACHINE_CONFIG_START( galpani3, galpani3_state ) //MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 64*8-1) MCFG_SCREEN_UPDATE_DRIVER(galpani3_state, screen_update_galpani3) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_DEVICE_ADD("toybox", KANEKO_TOYBOX, 0) diff --git a/src/mame/drivers/gijoe.c b/src/mame/drivers/gijoe.c index 59e08f837a5..e429beb2de5 100644 --- a/src/mame/drivers/gijoe.c +++ b/src/mame/drivers/gijoe.c @@ -45,16 +45,6 @@ Known Issues #define JOE_DMADELAY (attotime::from_nsec(42700 + 341300)) -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - "0100100000000",/* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - - READ16_MEMBER(gijoe_state::control2_r) { return m_cur_control2; @@ -198,14 +188,14 @@ static INPUT_PORTS_START( gijoe ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START3 ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START4 ) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SPECIAL ) // EEPROM ready (always 1) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_SERVICE_NO_TOGGLE( 0x0800, IP_ACTIVE_LOW ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) PORT_START("SYSTEM") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -283,8 +273,7 @@ static MACHINE_CONFIG_START( gijoe, gijoe_state ) MCFG_CPU_ADD("audiocpu", Z80, 8000000) /* Amuse & confirmed. z80e */ MCFG_CPU_PROGRAM_MAP(sound_map) - - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_UPDATE_BEFORE_VBLANK) diff --git a/src/mame/drivers/groundfx.c b/src/mame/drivers/groundfx.c index 83c0e1180b3..af14977bb29 100644 --- a/src/mame/drivers/groundfx.c +++ b/src/mame/drivers/groundfx.c @@ -111,20 +111,6 @@ void groundfx_state::device_timer(emu_timer &timer, device_timer_id id, int para /********************************************************** - EPROM -**********************************************************/ - -static const serial_eeprom_interface groundfx_eeprom_interface = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111", /* erase command */ - "0100000000", /* unlock command */ - "0100110000", /* lock command */ -}; - - -/********************************************************** GAME INPUTS **********************************************************/ @@ -249,7 +235,7 @@ static INPUT_PORTS_START( groundfx ) PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_BUTTON3 ) /* shift hi */ PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_BUTTON1 ) /* brake */ PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -261,9 +247,9 @@ static INPUT_PORTS_START( groundfx ) PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) PORT_START("SYSTEM") PORT_SERVICE_NO_TOGGLE( 0x00000001, IP_ACTIVE_LOW ) @@ -370,7 +356,7 @@ static MACHINE_CONFIG_START( groundfx, groundfx_state ) MCFG_CPU_PROGRAM_MAP(groundfx_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", groundfx_state, groundfx_interrupt) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, groundfx_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/gticlub.c b/src/mame/drivers/gticlub.c index 285f6bdd297..b1bbdd06cc9 100644 --- a/src/mame/drivers/gticlub.c +++ b/src/mame/drivers/gticlub.c @@ -262,7 +262,7 @@ public: required_device<cpu_device> m_dsp; optional_device<cpu_device> m_dsp2; required_device<adc1038_device> m_adc1038; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; UINT32 *m_sharc_dataram_0; UINT32 *m_sharc_dataram_1; DECLARE_WRITE32_MEMBER(paletteram32_w); @@ -359,18 +359,6 @@ WRITE32_MEMBER(gticlub_state::gticlub_k001604_reg_w) /******************************************************************/ -/* 93C56 EEPROM */ -static const serial_eeprom_interface eeprom_intf = -{ - "*110", /* read command */ - "*101", /* write command */ - "*111", /* erase command */ - "*10000xxxxxx", /* lock command */ - "*10011xxxxxx", /* unlock command */ - 1, /* enable_multi_read */ - 0 /* reset_delay */ -}; - READ8_MEMBER(gticlub_state::sysreg_r) { static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3" }; @@ -392,7 +380,7 @@ READ8_MEMBER(gticlub_state::sysreg_r) // a = ADC readout // e = EEPROM data out - UINT32 eeprom_bit = (m_eeprom->read_bit() << 1); + UINT32 eeprom_bit = (m_eeprom->do_read() << 1); UINT32 adc_bit = (m_adc1038->do_read() << 2); return (eeprom_bit | adc_bit); } @@ -414,9 +402,9 @@ WRITE8_MEMBER(gticlub_state::sysreg_w) break; case 3: - m_eeprom->write_bit((data & 0x01) ? 1 : 0); - m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->di_write((data & 0x01) ? 1 : 0); + m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE); break; case 4: @@ -976,7 +964,7 @@ static MACHINE_CONFIG_START( gticlub, gticlub_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) - MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C56_ADD("eeprom") MCFG_MACHINE_START_OVERRIDE(gticlub_state,gticlub) MCFG_MACHINE_RESET_OVERRIDE(gticlub_state,gticlub) @@ -1083,7 +1071,7 @@ static MACHINE_CONFIG_START( hangplt, gticlub_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) - MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C56_ADD("eeprom") MCFG_MACHINE_START_OVERRIDE(gticlub_state,gticlub) MCFG_MACHINE_RESET_OVERRIDE(gticlub_state,hangplt) diff --git a/src/mame/drivers/gunbustr.c b/src/mame/drivers/gunbustr.c index a889a8b8e0c..cfe094f3225 100644 --- a/src/mame/drivers/gunbustr.c +++ b/src/mame/drivers/gunbustr.c @@ -100,9 +100,9 @@ WRITE32_MEMBER(gunbustr_state::gunbustr_input_w) if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data & 0x40); - m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x40) >> 6); + m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); } break; } @@ -185,7 +185,7 @@ static INPUT_PORTS_START( gunbustr ) PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) @@ -284,15 +284,6 @@ GFXDECODE_END MACHINE DRIVERS ***********************************************************/ -static const serial_eeprom_interface gunbustr_eeprom_interface = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111", /* erase command */ - "0100000000", /* unlock command */ - "0100110000", /* lock command */ -}; - static const tc0480scp_interface gunbustr_tc0480scp_intf = { 1, 2, /* gfxnum, txnum */ @@ -310,7 +301,7 @@ static MACHINE_CONFIG_START( gunbustr, gunbustr_state ) MCFG_CPU_PROGRAM_MAP(gunbustr_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", gunbustr_state, gunbustr_interrupt) /* VBL */ - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, gunbustr_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c index a63d1404d19..198c1a05ca6 100644 --- a/src/mame/drivers/hornet.c +++ b/src/mame/drivers/hornet.c @@ -354,7 +354,7 @@ public: optional_device<cpu_device> m_gn680; required_device<cpu_device> m_dsp; optional_device<cpu_device> m_dsp2; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; optional_device<k037122_device> m_k037122_1; optional_device<k037122_device> m_k037122_2; required_device<adc12138_device> m_adc12138; @@ -509,7 +509,7 @@ READ8_MEMBER(hornet_state::sysreg_r) 0x02 = ADDOR (ADC DOR) 0x01 = ADDO (ADC DO) */ - r = 0xf0 | (m_eeprom->read_bit() << 3); + r = 0xf0 | (m_eeprom->do_read() << 3); r |= m_adc12138->do_r(space, 0) | (m_adc12138->eoc_r(space, 0) << 2); break; @@ -821,9 +821,9 @@ static INPUT_PORTS_START( hornet ) PORT_DIPSETTING( 0x00, "15KHz" ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( sscope ) @@ -873,9 +873,9 @@ static INPUT_PORTS_START( sscope ) PORT_DIPSETTING( 0x00, "15KHz" ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) PORT_START("ANALOG1") // Gun Yaw PORT_BIT( 0x7ff, 0x400, IPT_AD_STICK_X ) PORT_MINMAX(0x000, 0x7ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5) @@ -1008,7 +1008,7 @@ static MACHINE_CONFIG_START( hornet, hornet_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_3DFX_VOODOO_1_ADD("voodoo0", STD_VOODOO_1_CLOCK, hornet_voodoo_intf) @@ -1136,7 +1136,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( sscope2, hornet_2board_v2) MCFG_DS2401_ADD("lan_serial_id") - MCFG_EEPROM_93C46_ADD("lan_eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("lan_eeprom") MACHINE_CONFIG_END diff --git a/src/mame/drivers/inufuku.c b/src/mame/drivers/inufuku.c index 151272392ca..84ab1be3c03 100644 --- a/src/mame/drivers/inufuku.c +++ b/src/mame/drivers/inufuku.c @@ -235,14 +235,14 @@ static INPUT_PORTS_START( inufuku ) PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, inufuku_state,soundflag_r, NULL) // pending sound command PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 3on3dunk cares about something in here, possibly a vblank flag PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) PORT_START("P3") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3) @@ -375,7 +375,7 @@ static MACHINE_CONFIG_START( inufuku, inufuku_state ) /* IRQs are triggered by the YM2610 */ - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/invqix.c b/src/mame/drivers/invqix.c index c7a57984c0e..e9f9c65990f 100644 --- a/src/mame/drivers/invqix.c +++ b/src/mame/drivers/invqix.c @@ -147,7 +147,7 @@ public: protected: // devices required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; required_shared_ptr<UINT16> m_vram; // driver_device overrides @@ -226,14 +226,14 @@ UINT32 invqix_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, READ8_MEMBER(invqix_state::port3_r) { - return (m_eeprom->read_bit() << 5) | 0x03; + return (m_eeprom->do_read() << 5) | 0x03; } WRITE8_MEMBER(invqix_state::port3_w) { - m_eeprom->set_cs_line(((data >> 2) & 1) ^ 1); - m_eeprom->write_bit((data >> 4) & 1); - m_eeprom->set_clock_line((data >> 3) & 1); + m_eeprom->cs_write((data >> 2) & 1); + m_eeprom->di_write((data >> 4) & 1); + m_eeprom->clk_write((data >> 3) & 1); } READ8_MEMBER(invqix_state::port5_r) @@ -344,8 +344,8 @@ static MACHINE_CONFIG_START( invqix, invqix_state ) MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) - MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) MACHINE_CONFIG_END ROM_START( invqix ) diff --git a/src/mame/drivers/jackpool.c b/src/mame/drivers/jackpool.c index 41c493e4b01..349b7b938c1 100644 --- a/src/mame/drivers/jackpool.c +++ b/src/mame/drivers/jackpool.c @@ -42,7 +42,7 @@ public: UINT32 screen_update_jackpool(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(jackpool_interrupt); required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; @@ -120,8 +120,8 @@ READ16_MEMBER(jackpool_state::jackpool_io_r) case 0x1c: return ioport("BET")->read(); case 0x1e: return 0xff; //ticket motor case 0x20: return 0xff; //hopper motor - case 0x2c: return m_eeprom->read_bit(); - case 0x2e: return m_eeprom->read_bit(); + case 0x2c: return m_eeprom->do_read(); + case 0x2e: return m_eeprom->do_read(); // default: printf("R %02x\n",offset*2); break; } @@ -148,11 +148,11 @@ WRITE16_MEMBER(jackpool_state::jackpool_io_w) case 0x4a: /* ---- ---x Ticket motor */break; case 0x4c: /* ---- ---x Hopper motor */break; case 0x4e: m_map_vreg = data & 1; break; - case 0x50: m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break; - case 0x52: m_eeprom->set_clock_line((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; - case 0x54: m_eeprom->write_bit(data & 1); break; -// case 0x5a: m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break; -// case 0x5c: m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break; + case 0x50: m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; + case 0x52: m_eeprom->clk_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; + case 0x54: m_eeprom->di_write(data & 1); break; +// case 0x5a: m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; +// case 0x5c: m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break; case 0x60: break; // default: printf("[%02x] <- %02x W\n",offset*2,data); break; } @@ -161,17 +161,17 @@ WRITE16_MEMBER(jackpool_state::jackpool_io_w) if(offset*2 == 0x54) { printf("Write bit %02x\n",data); - m_eeprom->write_bit(data & 1); + m_eeprom->di_write(data & 1); } if(offset*2 == 0x52) { printf("Clock bit %02x\n",data); - m_eeprom->set_clock_line((data & 1) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); } if(offset*2 == 0x50) { printf("chip select bit %02x\n",data); - m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); } #endif } @@ -273,7 +273,7 @@ static MACHINE_CONFIG_START( jackpool, jackpool_state ) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(jackpool_state, screen_update_jackpool) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_PALETTE_LENGTH(0x200) diff --git a/src/mame/drivers/jaguar.c b/src/mame/drivers/jaguar.c index 4b3b59968cf..0bee178acca 100644 --- a/src/mame/drivers/jaguar.c +++ b/src/mame/drivers/jaguar.c @@ -506,23 +506,23 @@ WRITE32_MEMBER(jaguar_state::eeprom_w) m_eeprom_bit_count++; if (m_eeprom_bit_count != 9) /* kill extra bit at end of address */ { - m_eeprom->write_bit(data >> 31); - m_eeprom->set_clock_line(PULSE_LINE); + m_eeprom->di_write(data >> 31); + m_eeprom->clk_write(PULSE_LINE); } } READ32_MEMBER(jaguar_state::eeprom_clk) { - m_eeprom->set_clock_line(PULSE_LINE); /* get next bit when reading */ + m_eeprom->clk_write(PULSE_LINE); /* get next bit when reading */ return 0; } READ32_MEMBER(jaguar_state::eeprom_cs) { - m_eeprom->set_cs_line(ASSERT_LINE); /* must do at end of an operation */ - m_eeprom->set_cs_line(CLEAR_LINE); /* enable chip for next operation */ - m_eeprom->write_bit(1); /* write a start bit */ - m_eeprom->set_clock_line(PULSE_LINE); + m_eeprom->cs_write(CLEAR_LINE); /* must do at end of an operation */ + m_eeprom->cs_write(ASSERT_LINE); /* enable chip for next operation */ + m_eeprom->di_write(1); /* write a start bit */ + m_eeprom->clk_write(PULSE_LINE); m_eeprom_bit_count = 0; return 0; } @@ -662,7 +662,7 @@ READ32_MEMBER(jaguar_state::joystick_r) } } - joystick_result |= m_eeprom->read_bit(); + joystick_result |= m_eeprom->do_read(); joybuts_result |= (ioport("CONFIG")->read() & 0x10); return (joystick_result << 16) | joybuts_result; @@ -1630,7 +1630,7 @@ static MACHINE_CONFIG_START( jaguar, jaguar_state ) /* software lists */ MCFG_SOFTWARE_LIST_ADD("cart_list","jaguar") - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MACHINE_CONFIG_END diff --git a/src/mame/drivers/jchan.c b/src/mame/drivers/jchan.c index 5e00832617b..db8e38a5703 100644 --- a/src/mame/drivers/jchan.c +++ b/src/mame/drivers/jchan.c @@ -612,7 +612,7 @@ static MACHINE_CONFIG_START( jchan, jchan_state ) MCFG_DEVICE_ADD("toybox", KANEKO_TOYBOX, 0) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* sound hardware */ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") diff --git a/src/mame/drivers/jclub2.c b/src/mame/drivers/jclub2.c index be278fbb106..800d4069586 100644 --- a/src/mame/drivers/jclub2.c +++ b/src/mame/drivers/jclub2.c @@ -131,7 +131,7 @@ public: optional_shared_ptr<UINT32> m_spriteram; optional_device<st0020_device> m_gdfs_st0020; required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_WRITE32_MEMBER(darkhors_tmapram_w); DECLARE_WRITE32_MEMBER(darkhors_tmapram2_w); DECLARE_WRITE32_MEMBER(paletteram32_xBBBBBGGGGGRRRRR_dword_w); @@ -294,13 +294,13 @@ WRITE32_MEMBER(darkhors_state::darkhors_eeprom_w) if ( ACCESSING_BITS_24_31 ) { // latch the bit - m_eeprom->write_bit(data & 0x04000000); + m_eeprom->di_write((data & 0x04000000) >> 26); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x01000000) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 0x01000000) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -474,7 +474,7 @@ static INPUT_PORTS_START( darkhors ) PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // test PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // door 1 PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // door 2 - PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_START1 ) // start PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Payout") PORT_CODE(KEYCODE_LCONTROL) // payout PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Cancel") PORT_CODE(KEYCODE_LALT) // cancel @@ -692,7 +692,7 @@ static MACHINE_CONFIG_START( darkhors, darkhors_state ) MCFG_CPU_PROGRAM_MAP(darkhors_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkhors_state, darkhors_irq, "screen", 0, 1) - MCFG_EEPROM_93C46_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -733,7 +733,7 @@ static MACHINE_CONFIG_START( jclub2, darkhors_state ) MCFG_CPU_PROGRAM_MAP(jclub2_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkhors_state, darkhors_irq, "screen", 0, 1) - MCFG_EEPROM_93C46_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -799,7 +799,7 @@ static MACHINE_CONFIG_START( jclub2o, darkhors_state ) MCFG_CPU_IO_MAP(st0016_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", darkhors_state, irq0_line_hold) - MCFG_EEPROM_93C46_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/kaneko16.c b/src/mame/drivers/kaneko16.c index a5d6c5d4f36..c8025cce712 100644 --- a/src/mame/drivers/kaneko16.c +++ b/src/mame/drivers/kaneko16.c @@ -768,8 +768,8 @@ static INPUT_PORTS_START( bakubrkr ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END @@ -1343,8 +1343,8 @@ static INPUT_PORTS_START( mgcrystl ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END @@ -1419,8 +1419,8 @@ static INPUT_PORTS_START( shogwarr ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END @@ -1495,8 +1495,8 @@ Difficulty Lives Bonus Players Play Level ******************************************************/ PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) INPUT_PORTS_END @@ -1591,22 +1591,14 @@ static const ay8910_interface ay8910_intf_dsw = DEVCB_NULL, }; -WRITE8_MEMBER(kaneko16_state::kaneko16_eeprom_reset_w) -{ - // FIXME: the device line cannot be directly put in the interface due to inverse value! - // we might want to define a "reversed" set_cs_line handler - // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE ); -} - static const ay8910_interface ay8910_intf_eeprom = { AY8910_LEGACY_OUTPUT, AY8910_DEFAULT_LOADS, - DEVCB_DEVICE_LINE_MEMBER("eeprom", serial_eeprom_device, read_bit), /* inputs A: 0,EEPROM bit read */ + DEVCB_DEVICE_LINE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read), /* inputs A: 0,EEPROM bit read */ DEVCB_NULL, /* inputs B */ DEVCB_NULL, /* outputs A */ - DEVCB_DRIVER_MEMBER(kaneko16_state,kaneko16_eeprom_reset_w) /* outputs B: 0,EEPROM reset */ + DEVCB_DEVICE_LINE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) /* outputs B: 0,EEPROM reset */ }; @@ -1682,7 +1674,7 @@ static MACHINE_CONFIG_START( bakubrkr, kaneko16_state ) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1) MCFG_MACHINE_RESET_OVERRIDE(kaneko16_state,gtmr) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) // mangled sprites otherwise @@ -1811,7 +1803,7 @@ static MACHINE_CONFIG_START( gtmr, kaneko16_gtmr_state ) MCFG_MACHINE_RESET_OVERRIDE(kaneko16_gtmr_state,gtmr) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) @@ -1929,7 +1921,7 @@ static MACHINE_CONFIG_START( mgcrystl, kaneko16_state ) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1) MCFG_MACHINE_RESET_OVERRIDE(kaneko16_state,mgcrystl) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) @@ -2053,8 +2045,8 @@ static MACHINE_CONFIG_START( shogwarr, kaneko16_shogwarr_state ) MCFG_MACHINE_RESET_OVERRIDE(kaneko16_shogwarr_state,mgcrystl) - MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SERIAL_EEPROM_DATA(shogwarr_default_eeprom, 128) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(shogwarr_default_eeprom, 128) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -2123,8 +2115,8 @@ static MACHINE_CONFIG_DERIVED( brapboys, shogwarr ) kaneko_hit_device::set_type(*device, 2); MCFG_DEVICE_REMOVE("eeprom") - MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SERIAL_EEPROM_DATA(brapboys_default_eeprom, 128) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(brapboys_default_eeprom, 128) MACHINE_CONFIG_END /*************************************************************************** diff --git a/src/mame/drivers/kickgoal.c b/src/mame/drivers/kickgoal.c index 9d700c96426..c80fb19b716 100644 --- a/src/mame/drivers/kickgoal.c +++ b/src/mame/drivers/kickgoal.c @@ -445,7 +445,7 @@ READ16_MEMBER(kickgoal_state::kickgoal_eeprom_r) { if (ACCESSING_BITS_0_7) { - return m_eeprom->read_bit(); + return m_eeprom->do_read(); } return 0; } @@ -458,13 +458,13 @@ WRITE16_MEMBER(kickgoal_state::kickgoal_eeprom_w) switch (offset) { case 0: - m_eeprom->set_cs_line((data & 0x0001) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x0001) ? ASSERT_LINE : CLEAR_LINE); break; case 1: - m_eeprom->set_clock_line((data & 0x0001) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x0001) ? ASSERT_LINE : CLEAR_LINE); break; case 2: - m_eeprom->write_bit(data & 0x0001); + m_eeprom->di_write(data & 0x0001); break; } } @@ -649,8 +649,8 @@ static MACHINE_CONFIG_START( kickgoal, kickgoal_state ) MCFG_CPU_IO_MAP(kickgoal_sound_io_map) - MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SERIAL_EEPROM_DATA(kickgoal_default_eeprom_type1, 128) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(kickgoal_default_eeprom_type1, 128) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -684,8 +684,8 @@ static MACHINE_CONFIG_START( actionhw, kickgoal_state ) MCFG_CPU_IO_MAP(actionhw_io_map) - MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SERIAL_EEPROM_DATA(kickgoal_default_eeprom_type1, 128) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(kickgoal_default_eeprom_type1, 128) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/konamigq.c b/src/mame/drivers/konamigq.c index f60cfe6438a..e9ebccbbf1f 100644 --- a/src/mame/drivers/konamigq.c +++ b/src/mame/drivers/konamigq.c @@ -296,8 +296,8 @@ static MACHINE_CONFIG_START( konamigq, konamigq_state ) MCFG_MACHINE_RESET_OVERRIDE(konamigq_state, konamigq ) MCFG_DEVICE_ADD("mb89371", MB89371, 0) - MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SERIAL_EEPROM_DATA(konamigq_def_eeprom, 128) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(konamigq_def_eeprom, 128) MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:disk", SCSIHD, SCSI_ID_0) @@ -395,12 +395,12 @@ static INPUT_PORTS_START( konamigq ) PORT_DIPSETTING( 0x00, "Independent" ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) INPUT_PORTS_END ROM_START( cryptklr ) diff --git a/src/mame/drivers/konamigv.c b/src/mame/drivers/konamigv.c index 9e3f4ff36b8..f1755305d5e 100644 --- a/src/mame/drivers/konamigv.c +++ b/src/mame/drivers/konamigv.c @@ -321,7 +321,7 @@ static MACHINE_CONFIG_START( konamigv, konamigv_state ) MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate( FUNC( konamigv_state::scsi_dma_write ), (konamigv_state *) owner ) ) MCFG_DEVICE_ADD("mb89371", MB89371, 0) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCSIBUS_ADD("scsi") MCFG_SCSIDEV_ADD("scsi:cdrom", SCSICD, SCSI_ID_4) @@ -359,7 +359,7 @@ static INPUT_PORTS_START( konamigv ) PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_SERVICE_NO_TOGGLE( 0x00001000, IP_ACTIVE_LOW ) - PORT_BIT( 0x00002000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER( "eeprom", serial_eeprom_device, read_bit ) + PORT_BIT( 0x00002000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER( "eeprom", eeprom_serial_93cxx_device, do_read ) PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -403,9 +403,9 @@ static INPUT_PORTS_START( konamigv ) PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("EEPROMOUT") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) INPUT_PORTS_END /* Simpsons Bowling */ diff --git a/src/mame/drivers/konamigx.c b/src/mame/drivers/konamigx.c index 2b56b2dd74f..ba479f60756 100644 --- a/src/mame/drivers/konamigx.c +++ b/src/mame/drivers/konamigx.c @@ -1361,7 +1361,7 @@ static INPUT_PORTS_START( common ) // excpuint stat, objdma stat, eeprom do // note: racin' force expects bit 1 of the eeprom port to toggle - PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x000000fe, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, konamigx_state,gx_rdport1_3_r, NULL) PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_COIN2 ) @@ -1374,9 +1374,9 @@ static INPUT_PORTS_START( common ) PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED ) /* DIP#1 & DIP#2 */ PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) INPUT_PORTS_END @@ -1777,7 +1777,7 @@ static MACHINE_CONFIG_START( konamigx, konamigx_state ) MCFG_MACHINE_START_OVERRIDE(konamigx_state,konamigx) MCFG_MACHINE_RESET_OVERRIDE(konamigx_state,konamigx) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK) diff --git a/src/mame/drivers/leland.c b/src/mame/drivers/leland.c index 58e9d892d81..346c31c9d90 100644 --- a/src/mame/drivers/leland.c +++ b/src/mame/drivers/leland.c @@ -145,7 +145,7 @@ static INPUT_PORTS_START( cerberus ) /* complete, verified from code */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_START("IN3") /* 0x91 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -191,7 +191,7 @@ static INPUT_PORTS_START( mayhem ) /* complete, verified from code */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_START("IN3") /* 0xD1 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -224,7 +224,7 @@ static INPUT_PORTS_START( wseries ) /* complete, verified from code */ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Aim") PORT_PLAYER(1) PORT_START("IN3") /* 0x91 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -263,7 +263,7 @@ static INPUT_PORTS_START( alleymas ) /* complete, verified from code */ // PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) /* redundant inputs */ PORT_START("IN3") /* 0xD1 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -299,7 +299,7 @@ static INPUT_PORTS_START( upyoural ) /* complete, verified from code */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_START("IN3") /* 0xD1 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -334,7 +334,7 @@ static INPUT_PORTS_START( dangerz ) /* complete, verified from code */ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN3") /* 0x91 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -369,7 +369,7 @@ static INPUT_PORTS_START( basebal2 ) /* complete, verified from code */ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Run/Cutoff") PORT_PLAYER(1) PORT_START("IN3") /* 0x51/D1 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -406,7 +406,7 @@ static INPUT_PORTS_START( redline ) /* complete, verified in code */ PORT_BIT( 0xe0, 0x00, IPT_PEDAL ) PORT_MINMAX(0x00,0xe0) PORT_SENSITIVITY(100) PORT_KEYDELTA(64) PORT_PLAYER(2) PORT_START("IN3") /* 0xD1 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -444,7 +444,7 @@ static INPUT_PORTS_START( quarterb ) /* complete, verified in code */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_START("IN3") /* 0x91 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -486,7 +486,7 @@ static INPUT_PORTS_START( teamqb ) /* complete, verified in code */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_START("IN3") /* 0x91 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -544,7 +544,7 @@ static INPUT_PORTS_START( aafb2p ) /* complete, verified in code */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_START("IN3") /* 0x91 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) @@ -599,7 +599,7 @@ static INPUT_PORTS_START( offroad ) /* complete, verified from code */ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("IN3") /* 0xD1 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) @@ -673,7 +673,7 @@ static INPUT_PORTS_START( pigout ) /* complete, verified from code */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_START("IN3") /* 0x51 */ - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -724,21 +724,6 @@ static const ay8910_interface ay8910_config = /************************************* * - * EEPROM interface - * - *************************************/ - -static const serial_eeprom_interface eeprom_intf = -{ - "110", - "101", - "111" -}; - - - -/************************************* - * * Machine driver * *************************************/ @@ -758,7 +743,7 @@ static MACHINE_CONFIG_START( leland, leland_state ) MCFG_MACHINE_START_OVERRIDE(leland_state,leland) MCFG_MACHINE_RESET_OVERRIDE(leland_state,leland) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_0FILL("battery") /* video hardware */ diff --git a/src/mame/drivers/lethal.c b/src/mame/drivers/lethal.c index 27abd40e363..e87baa450b1 100644 --- a/src/mame/drivers/lethal.c +++ b/src/mame/drivers/lethal.c @@ -176,15 +176,6 @@ static const char *const gunnames[] = { "LIGHT0_X", "LIGHT0_Y", "LIGHT1_X", "LIG #define GUNX( a ) (( ( ioport(gunnames[2 * (a - 1)])->read() * 287 ) / 0xff ) + 16) #define GUNY( a ) (( ( ioport(gunnames[2 * (a - 1) + 1])->read() * 223 ) / 0xff ) + 10) -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - "0100100000000", /* erase command */ - "0100000000000", /* lock command */ - "0100110000000" /* unlock command */ -}; - WRITE8_MEMBER(lethal_state::control2_w) { /* bit 0 is data */ @@ -489,8 +480,8 @@ static INPUT_PORTS_START( lethalen ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) PORT_START("DSW") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* it must be 1 ? */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_DIPNAME( 0x10, 0x10, DEF_STR(Language) ) @@ -507,9 +498,9 @@ static INPUT_PORTS_START( lethalen ) PORT_DIPSETTING( 0x0080, DEF_STR( Stereo ) ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) PORT_START("LIGHT0_X") PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1) @@ -636,8 +627,7 @@ static MACHINE_CONFIG_START( lethalen, lethal_state ) MCFG_CPU_ADD("soundcpu", Z80, MAIN_CLOCK/4) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(le_sound) - - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") MCFG_GFXDECODE(lethal) diff --git a/src/mame/drivers/limenko.c b/src/mame/drivers/limenko.c index 8c84aea4ce3..05dae612f8c 100644 --- a/src/mame/drivers/limenko.c +++ b/src/mame/drivers/limenko.c @@ -594,7 +594,7 @@ static INPUT_PORTS_START( legendoh ) PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_SERVICE_NO_TOGGLE( 0x00200000, IP_ACTIVE_LOW ) PORT_BIT( 0x00400000, IP_ACTIVE_HIGH, IPT_SPECIAL ) //security bit - PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_START3 ) PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_START4 ) PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_COIN3 ) @@ -607,9 +607,9 @@ static INPUT_PORTS_START( legendoh ) PORT_BIT( 0x4000ffff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) // PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // 0x80000 -> video disabled? INPUT_PORTS_END @@ -643,7 +643,7 @@ static INPUT_PORTS_START( sb2003 ) PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_SERVICE_NO_TOGGLE( 0x00200000, IP_ACTIVE_LOW ) PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_SPECIAL ) //security bit - PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_DIPNAME( 0x20000000, 0x00000000, "Sound Enable" ) PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) @@ -652,9 +652,9 @@ static INPUT_PORTS_START( sb2003 ) PORT_BIT( 0x5f00ffff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) // PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // 0x80000 -> video disabled? INPUT_PORTS_END @@ -688,7 +688,7 @@ static INPUT_PORTS_START( spotty ) PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, limenko_state,spriteram_bit_r, NULL) //changes spriteram location PORT_SERVICE_NO_TOGGLE( 0x00200000, IP_ACTIVE_LOW ) PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_SPECIAL ) //security bit - PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20000000, DEF_STR( On ) ) @@ -696,9 +696,9 @@ static INPUT_PORTS_START( spotty ) PORT_BIT( 0x5f10ffff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) // PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // 0x80000 -> video disabled? INPUT_PORTS_END @@ -754,7 +754,7 @@ static MACHINE_CONFIG_START( limenko, limenko_state ) MCFG_CPU_IO_MAP(limenko_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", limenko_state, irq0_line_hold) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -785,7 +785,7 @@ static MACHINE_CONFIG_START( spotty, limenko_state ) MCFG_CPU_ADD("audiocpu", AT89C4051, 4000000) /* 4 MHz */ MCFG_CPU_IO_MAP(spotty_sound_io_map) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/lordgun.c b/src/mame/drivers/lordgun.c index 00d8efb6358..7608aa17f43 100644 --- a/src/mame/drivers/lordgun.c +++ b/src/mame/drivers/lordgun.c @@ -183,13 +183,13 @@ WRITE8_MEMBER(lordgun_state::lordgun_eeprom_w) lordgun_update_gun(i); // latch the bit - m_eeprom->write_bit(data & 0x40); + m_eeprom->di_write((data & 0x40) >> 6); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE ); m_whitescreen = data & 0x80; @@ -211,13 +211,13 @@ WRITE8_MEMBER(lordgun_state::aliencha_eeprom_w) coin_counter_w(machine(), 1, data & 0x10); // latch the bit - m_eeprom->write_bit(data & 0x80); + m_eeprom->di_write((data & 0x80) >> 7); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE ); } @@ -451,7 +451,7 @@ static INPUT_PORTS_START( lordgun ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("START1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) @@ -572,7 +572,7 @@ static INPUT_PORTS_START( aliencha ) PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW3:8" ) /* Listed as "Unused" */ PORT_START("SERVICE") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -677,7 +677,7 @@ static MACHINE_CONFIG_START( lordgun, lordgun_state ) MCFG_I8255A_ADD( "ppi8255_0", lordgun_ppi8255_0_intf ) MCFG_I8255A_ADD( "ppi8255_1", lordgun_ppi8255_1_intf ) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -713,7 +713,7 @@ static MACHINE_CONFIG_START( aliencha, lordgun_state ) MCFG_I8255A_ADD( "ppi8255_0", aliencha_ppi8255_0_intf ) MCFG_I8255A_ADD( "ppi8255_1", aliencha_ppi8255_1_intf ) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/metro.c b/src/mame/drivers/metro.c index 676d571e5f6..a27521b4a1e 100644 --- a/src/mame/drivers/metro.c +++ b/src/mame/drivers/metro.c @@ -1211,7 +1211,7 @@ READ16_MEMBER(metro_state::gakusai_input_r) READ16_MEMBER(metro_state::gakusai_eeprom_r) { - return m_eeprom->read_bit() & 1; + return m_eeprom->do_read() & 1; } WRITE16_MEMBER(metro_state::gakusai_eeprom_w) @@ -1219,13 +1219,13 @@ WRITE16_MEMBER(metro_state::gakusai_eeprom_w) if (ACCESSING_BITS_0_7) { // latch the bit - m_eeprom->write_bit(BIT(data, 0)); + m_eeprom->di_write(BIT(data, 0)); // reset line asserted: reset. - m_eeprom->set_cs_line(BIT(data, 2) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -1309,10 +1309,10 @@ ADDRESS_MAP_END READ16_MEMBER(metro_state::dokyusp_eeprom_r) { // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line(CLEAR_LINE); - m_eeprom->set_clock_line(ASSERT_LINE); + m_eeprom->clk_write(CLEAR_LINE); + m_eeprom->clk_write(ASSERT_LINE); - return m_eeprom->read_bit() & 1; + return m_eeprom->do_read() & 1; } WRITE16_MEMBER(metro_state::dokyusp_eeprom_bit_w) @@ -1320,11 +1320,11 @@ WRITE16_MEMBER(metro_state::dokyusp_eeprom_bit_w) if (ACCESSING_BITS_0_7) { // latch the bit - m_eeprom->write_bit(BIT(data, 0)); + m_eeprom->di_write(BIT(data, 0)); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line(CLEAR_LINE); - m_eeprom->set_clock_line(ASSERT_LINE); + m_eeprom->clk_write(CLEAR_LINE); + m_eeprom->clk_write(ASSERT_LINE); } } @@ -1333,7 +1333,7 @@ WRITE16_MEMBER(metro_state::dokyusp_eeprom_reset_w) if (ACCESSING_BITS_0_7) { // reset line asserted: reset. - m_eeprom->set_cs_line(BIT(data, 0) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write(BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE); } } @@ -4021,7 +4021,7 @@ static MACHINE_CONFIG_START( dokyusp, metro_state ) MCFG_MACHINE_START_OVERRIDE(metro_state,metro) MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -4057,7 +4057,7 @@ static MACHINE_CONFIG_START( gakusai, metro_state ) MCFG_MACHINE_START_OVERRIDE(metro_state,metro) MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -4093,7 +4093,7 @@ static MACHINE_CONFIG_START( gakusai2, metro_state ) MCFG_MACHINE_START_OVERRIDE(metro_state,metro) MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/midas.c b/src/mame/drivers/midas.c index 54019c57e7b..c1e8345a860 100644 --- a/src/mame/drivers/midas.c +++ b/src/mame/drivers/midas.c @@ -84,7 +84,7 @@ public: void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(livequiz_irqhandler); required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; @@ -217,13 +217,13 @@ WRITE16_MEMBER(midas_state::midas_eeprom_w) if (ACCESSING_BITS_0_7) { // latch the bit - m_eeprom->write_bit(data & 0x04); + m_eeprom->di_write((data & 0x04) >> 2); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -456,7 +456,7 @@ static INPUT_PORTS_START( livequiz ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // EEPROM + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // EEPROM PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_SERVICE_NO_TOGGLE( 0x0040, IP_ACTIVE_LOW ) @@ -589,7 +589,7 @@ static INPUT_PORTS_START( hammer ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_SERVICE_NO_TOGGLE( 0x0040, IP_ACTIVE_LOW ) @@ -701,7 +701,7 @@ static MACHINE_CONFIG_START( livequiz, midas_state ) MCFG_CPU_PROGRAM_MAP(livequiz_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", midas_state, irq1_line_hold) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -730,7 +730,7 @@ static MACHINE_CONFIG_START( hammer, midas_state ) MCFG_CPU_PROGRAM_MAP(hammer_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", midas_state, irq1_line_hold) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TICKET_DISPENSER_ADD("prize1", attotime::from_msec(1000*5), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW ) MCFG_TICKET_DISPENSER_ADD("prize2", attotime::from_msec(1000*5), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW ) diff --git a/src/mame/drivers/mitchell.c b/src/mame/drivers/mitchell.c index 4a2d984ed1a..dcd1bc3319e 100644 --- a/src/mame/drivers/mitchell.c +++ b/src/mame/drivers/mitchell.c @@ -68,7 +68,6 @@ mw-9.rom = ST M27C1001 / GFX #include "emu.h" #include "cpu/z80/z80.h" -#include "machine/eepromser.h" #include "machine/kabuki.h" // needed for decoding functions only #include "includes/mitchell.h" #include "sound/okim6295.h" @@ -83,13 +82,6 @@ mw-9.rom = ST M27C1001 / GFX * *************************************/ -static const serial_eeprom_interface eeprom_intf = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111" /* erase command */ -}; - READ8_MEMBER(mitchell_state::pang_port5_r) { /* bits 0 and (sometimes) 3 are checked in the interrupt handler. @@ -104,17 +96,17 @@ READ8_MEMBER(mitchell_state::pang_port5_r) WRITE8_MEMBER(mitchell_state::eeprom_cs_w) { - m_eeprom->set_cs_line(data ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write(data ? CLEAR_LINE : ASSERT_LINE); } WRITE8_MEMBER(mitchell_state::eeprom_clock_w) { - m_eeprom->set_clock_line(data ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write(data ? CLEAR_LINE : ASSERT_LINE); } WRITE8_MEMBER(mitchell_state::eeprom_serial_w) { - m_eeprom->write_bit(data); + m_eeprom->di_write(data); } @@ -395,7 +387,7 @@ static INPUT_PORTS_START( mj_common ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -645,7 +637,7 @@ static INPUT_PORTS_START( pang ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -812,7 +804,7 @@ static INPUT_PORTS_START( qtono1 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode farther down */ @@ -852,7 +844,7 @@ static INPUT_PORTS_START( block ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -894,7 +886,7 @@ static INPUT_PORTS_START( blockjoy ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1088,7 +1080,7 @@ static MACHINE_CONFIG_START( mgakuen, mitchell_state ) MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -1125,7 +1117,7 @@ static MACHINE_CONFIG_START( pang, mitchell_state ) MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell) MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -1260,7 +1252,7 @@ static MACHINE_CONFIG_START( marukin, mitchell_state ) MCFG_CPU_IO_MAP(mitchell_io_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -1311,7 +1303,7 @@ static MACHINE_CONFIG_START( pkladiesbl, mitchell_state ) MCFG_CPU_IO_MAP(mitchell_io_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/model2.c b/src/mame/drivers/model2.c index 128134f4efc..0de00ad8d70 100644 --- a/src/mame/drivers/model2.c +++ b/src/mame/drivers/model2.c @@ -413,9 +413,9 @@ WRITE32_MEMBER(model2_state::ctrl0_w) if(ACCESSING_BITS_0_7) { m_ctrlmode = data & 0x01; - m_eeprom->write_bit(data & 0x20); - m_eeprom->set_clock_line((data & 0x80) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->set_cs_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->di_write((data & 0x20) >> 5); + m_eeprom->clk_write((data & 0x80) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); } } @@ -454,7 +454,7 @@ CUSTOM_INPUT_MEMBER(model2_state::_1c00000_r) else { ret &= ~0x0030; - return ret | 0x00d0 | (m_eeprom->read_bit() << 5); + return ret | 0x00d0 | (m_eeprom->do_read() << 5); } } @@ -1979,7 +1979,7 @@ static MACHINE_CONFIG_START( model2o, model2_state ) MCFG_MACHINE_START_OVERRIDE(model2_state,model2) MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2o) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup1") MCFG_NVRAM_ADD_1FILL("backup2") @@ -2038,7 +2038,7 @@ static MACHINE_CONFIG_START( model2a, model2_state ) MCFG_MACHINE_START_OVERRIDE(model2_state,model2) MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup1") MCFG_TIMER_DRIVER_ADD("timer0", model2_state, model2_timer_cb) @@ -2141,7 +2141,7 @@ static MACHINE_CONFIG_START( model2b, model2_state ) MCFG_MACHINE_START_OVERRIDE(model2_state,model2) MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2b) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup1") MCFG_TIMER_DRIVER_ADD("timer0", model2_state, model2_timer_cb) @@ -2188,7 +2188,7 @@ static MACHINE_CONFIG_START( model2c, model2_state ) MCFG_MACHINE_START_OVERRIDE(model2_state,model2) MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2c) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup1") MCFG_TIMER_DRIVER_ADD("timer0", model2_state, model2_timer_cb) diff --git a/src/mame/drivers/model3.c b/src/mame/drivers/model3.c index e8c57bd3999..36a061e2f9a 100644 --- a/src/mame/drivers/model3.c +++ b/src/mame/drivers/model3.c @@ -1192,18 +1192,6 @@ static void real3d_dma_callback(running_machine &machine, UINT32 src, UINT32 dst /*****************************************************************************/ -/* this is a 93C46 but with reset delay that is needed by Lost World */ -static const serial_eeprom_interface eeprom_intf = -{ - "*110", /* read command */ - "*101", /* write command */ - "*111", /* erase command */ - "*10000xxxx", /* lock command */ - "*10011xxxx", /* unlock command */ - 1, /* enable_multi_read */ - 5 /* reset_delay (Lost World needs this, very similar to wbeachvl in playmark.c) */ -}; - static const struct LSI53C810interface lsi53c810_intf = { &scsi_irq_callback, @@ -1393,9 +1381,9 @@ WRITE64_MEMBER(model3_state::model3_ctrl_w) if (ACCESSING_BITS_56_63) { int reg = (data >> 56) & 0xff; - m_eeprom->write_bit((reg & 0x20) ? 1 : 0); - m_eeprom->set_clock_line((reg & 0x80) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->set_cs_line((reg & 0x40) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->di_write((reg & 0x20) ? 1 : 0); + m_eeprom->clk_write((reg & 0x80) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->cs_write((reg & 0x40) ? ASSERT_LINE : CLEAR_LINE); m_controls_bank = reg & 0xff; } return; @@ -1872,7 +1860,7 @@ static INPUT_PORTS_START( common ) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button B") PORT_CODE(KEYCODE_8) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button B") PORT_CODE(KEYCODE_7) PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -2107,7 +2095,7 @@ static INPUT_PORTS_START( skichamp ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) /* Select 2 */ PORT_START("IN1") - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button B") PORT_CODE(KEYCODE_8) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button B") PORT_CODE(KEYCODE_7) PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -5369,7 +5357,7 @@ static MACHINE_CONFIG_START( model3_10, model3_state ) MCFG_MACHINE_START_OVERRIDE(model3_state,model3_10) MCFG_MACHINE_RESET_OVERRIDE(model3_state,model3_10) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup") @@ -5410,7 +5398,7 @@ static MACHINE_CONFIG_START( model3_15, model3_state ) MCFG_MACHINE_START_OVERRIDE(model3_state,model3_15) MCFG_MACHINE_RESET_OVERRIDE(model3_state,model3_15) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup") @@ -5457,7 +5445,7 @@ static MACHINE_CONFIG_START( model3_20, model3_state ) MCFG_MACHINE_START_OVERRIDE(model3_state,model3_20) MCFG_MACHINE_RESET_OVERRIDE(model3_state,model3_20) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup") @@ -5495,7 +5483,7 @@ static MACHINE_CONFIG_START( model3_21, model3_state ) MCFG_MACHINE_START_OVERRIDE(model3_state,model3_21) MCFG_MACHINE_RESET_OVERRIDE(model3_state,model3_21) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_NVRAM_ADD_1FILL("backup") diff --git a/src/mame/drivers/moo.c b/src/mame/drivers/moo.c index 6091ab15e48..0a927b7964e 100644 --- a/src/mame/drivers/moo.c +++ b/src/mame/drivers/moo.c @@ -52,15 +52,6 @@ Bucky: #define MOO_DMADELAY (100) -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - "0100100000000", /* erase command */ - "0100000000000", /* lock command */ - "0100110000000" /* unlock command */ -}; - READ16_MEMBER(moo_state::control2_r) { return m_cur_control2; @@ -376,8 +367,8 @@ static INPUT_PORTS_START( moo ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE4 ) PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM ready (always 1) */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_SERVICE_NO_TOGGLE(0x08, IP_ACTIVE_LOW) PORT_DIPNAME( 0x10, 0x00, "Sound Output") PORT_DIPLOCATION("SW1:1") @@ -392,9 +383,9 @@ static INPUT_PORTS_START( moo ) PORT_DIPSETTING( 0x80, "4") PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) PORT_START("P1_P3") KONAMI16_LSB( 1, IPT_UNKNOWN, IPT_START1 ) @@ -506,7 +497,7 @@ static MACHINE_CONFIG_START( moo, moo_state ) MCFG_MACHINE_START_OVERRIDE(moo_state,moo) MCFG_MACHINE_RESET_OVERRIDE(moo_state,moo) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") MCFG_K053252_ADD("k053252", 16000000/2, moo_k053252_intf) @@ -551,7 +542,7 @@ static MACHINE_CONFIG_START( moobl, moo_state ) MCFG_MACHINE_START_OVERRIDE(moo_state,moo) MCFG_MACHINE_RESET_OVERRIDE(moo_state,moo) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK) diff --git a/src/mame/drivers/mystwarr.c b/src/mame/drivers/mystwarr.c index 7013f9f4662..d06d24d1e4a 100644 --- a/src/mame/drivers/mystwarr.c +++ b/src/mame/drivers/mystwarr.c @@ -33,26 +33,6 @@ -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - "0100100000000",/* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - -/* Gaiapolis and Polygonet Commanders use the ER5911, - but the command formats are slightly different. Why? */ -static const serial_eeprom_interface gaia_eeprom_intf = -{ - "011000", /* read command */ - "010100", /* write command */ - "0100100000000",/* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - READ16_MEMBER(mystwarr_state::eeprom_r) { if (ACCESSING_BITS_0_7) @@ -600,8 +580,8 @@ static INPUT_PORTS_START( mystwarr ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM ready (always 1) */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* game loops if this is set */ PORT_DIPNAME( 0x10, 0x00, "Sound Output" ) PORT_DIPLOCATION("SW1:1") @@ -624,9 +604,9 @@ static INPUT_PORTS_START( mystwarr ) KONAMI16_MSB(4, IPT_BUTTON3, IPT_START4 ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END static INPUT_PORTS_START( metamrph ) @@ -641,8 +621,8 @@ static INPUT_PORTS_START( metamrph ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM ready (always 1) */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) PORT_DIPNAME( 0x10, 0x00, "Sound Output" ) PORT_DIPLOCATION("SW1:1") @@ -667,9 +647,9 @@ static INPUT_PORTS_START( metamrph ) KONAMI16_MSB(4, IPT_BUTTON3, IPT_START4 ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END static INPUT_PORTS_START( viostorm ) @@ -684,8 +664,8 @@ static INPUT_PORTS_START( viostorm ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM ready (always 1) */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) PORT_DIPNAME( 0x10, 0x00, "Sound Output" ) PORT_DIPLOCATION("SW1:1") @@ -710,9 +690,9 @@ static INPUT_PORTS_START( viostorm ) KONAMI16_MSB(4, IPT_BUTTON3, IPT_START4 ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END static INPUT_PORTS_START( dadandrn ) @@ -728,8 +708,8 @@ static INPUT_PORTS_START( dadandrn ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM ready (always 1) */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) PORT_DIPNAME( 0x10, 0x00, "Sound Output" ) PORT_DIPLOCATION("SW1:1") @@ -751,9 +731,9 @@ static INPUT_PORTS_START( dadandrn ) KONAMI8_B123_START(4) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END static INPUT_PORTS_START( martchmp ) @@ -768,8 +748,8 @@ static INPUT_PORTS_START( martchmp ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM ready (always 1) */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* game loops if this is set */ PORT_DIPNAME( 0x10, 0x00, "Sound Output" ) PORT_DIPLOCATION("SW1:1") @@ -790,9 +770,9 @@ static INPUT_PORTS_START( martchmp ) KONAMI16_MSB(4, IPT_BUTTON3, IPT_START4 ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END /**********************************************************************************/ @@ -970,7 +950,7 @@ static MACHINE_CONFIG_START( mystwarr, mystwarr_state ) MCFG_QUANTUM_TIME(attotime::from_hz(1920)) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") MCFG_K053252_ADD("k053252", 6000000, mystwarr_k053252_intf) // 6 MHz? MCFG_MACHINE_START_OVERRIDE(mystwarr_state,mystwarr) @@ -1096,9 +1076,6 @@ static MACHINE_CONFIG_DERIVED( gaiapols, mystwarr ) MCFG_GFXDECODE(gaiapols) - MCFG_DEVICE_REMOVE("eeprom") - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, gaia_eeprom_intf) - /* video hardware */ MCFG_VIDEO_START_OVERRIDE(mystwarr_state,gaiapols) MCFG_SCREEN_MODIFY("screen") diff --git a/src/mame/drivers/naomi.c b/src/mame/drivers/naomi.c index 68c445f03b6..97ec2d7b575 100644 --- a/src/mame/drivers/naomi.c +++ b/src/mame/drivers/naomi.c @@ -1461,7 +1461,7 @@ READ64_MEMBER(naomi_state::eeprom_93c46a_r ) int res; /* bit 3 is EEPROM data */ - res = m_eeprom->read_bit() << 4; + res = m_eeprom->do_read() << 4; return res; } @@ -1470,9 +1470,9 @@ WRITE64_MEMBER(naomi_state::eeprom_93c46a_w ) /* bit 4 is data */ /* bit 2 is clock */ /* bit 5 is cs */ - m_eeprom->write_bit(data & 0x8); - m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 0x4) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x8) >> 3); + m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE); } /* Dreamcast MAP @@ -1828,9 +1828,9 @@ INPUT_PORTS_END static INPUT_PORTS_START( naomi_mie ) PORT_START("MIE.3") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", eeprom_serial_93cxx_device, clk_write) PORT_START("MIE.5") PORT_DIPNAME( 0x01, 0x00, "Monitor" ) PORT_DIPLOCATION("SW1:1") @@ -1848,7 +1848,7 @@ static INPUT_PORTS_START( naomi_mie ) PORT_SERVICE_NO_TOGGLE( 0x10, IP_ACTIVE_LOW ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("mie_eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("mie_eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END /* 2 players with 1 joystick and 6 buttons each */ @@ -2493,8 +2493,8 @@ static MACHINE_CONFIG_START( naomi_aw_base, naomi_state ) MCFG_MACHINE_RESET_OVERRIDE(naomi_state,naomi) - MCFG_EEPROM_93C46_ADD("main_eeprom") - MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0) + MCFG_EEPROM_SERIAL_93C46_ADD("main_eeprom") + MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -2514,7 +2514,7 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( naomi_base, naomi_aw_base ) MCFG_MIE_ADD("mie", 4000000, "maple_dc", 0, 0, 0, 0, ":MIE.3", 0, ":MIE.5", 0, 0) // Actual frequency unknown MCFG_SEGA_837_13551_DEVICE_ADD("837_13551", "mie", ":TILT", ":P1", ":P2", ":A0", ":A1", ":A2", ":A3", ":A4", ":A5", ":A6", ":A7", ":OUTPUT") - MCFG_EEPROM_93C46_8BIT_ADD("mie_eeprom") + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("mie_eeprom") MCFG_X76F100_ADD("naomibd_eeprom") MACHINE_CONFIG_END diff --git a/src/mame/drivers/othunder.c b/src/mame/drivers/othunder.c index 45dfeef19e6..5fddf031e02 100644 --- a/src/mame/drivers/othunder.c +++ b/src/mame/drivers/othunder.c @@ -297,15 +297,6 @@ The eeprom unlock command is different, and the write/clock/reset bits are different. ******************************************************************/ -static const serial_eeprom_interface eeprom_intf = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111", /* erase command */ - "0100000000", /* lock command */ - "0100111111" /* unlock command */ -}; - WRITE16_MEMBER(othunder_state::othunder_tc0220ioc_w) { if (ACCESSING_BITS_0_7) @@ -330,9 +321,9 @@ WRITE16_MEMBER(othunder_state::othunder_tc0220ioc_w) if (data & 4) popmessage("OBPRI SET!"); - m_eeprom->write_bit(data & 0x40); - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->di_write((data & 0x40) >> 6); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); break; default: @@ -351,7 +342,7 @@ READ16_MEMBER(othunder_state::othunder_tc0220ioc_r) switch (offset) { case 0x03: - return (m_eeprom->read_bit() & 1) << 7; + return (m_eeprom->do_read() & 1) << 7; default: return m_tc0220ioc->read(space, offset); @@ -686,7 +677,7 @@ static MACHINE_CONFIG_START( othunder, othunder_state ) MCFG_CPU_ADD("audiocpu", Z80,16000000/4 ) /* 4 MHz */ MCFG_CPU_PROGRAM_MAP(z80_sound_map) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TC0220IOC_ADD("tc0220ioc", othunder_io_intf) diff --git a/src/mame/drivers/overdriv.c b/src/mame/drivers/overdriv.c index 909239a9595..99586e7811f 100644 --- a/src/mame/drivers/overdriv.c +++ b/src/mame/drivers/overdriv.c @@ -54,15 +54,6 @@ static const UINT16 overdriv_default_eeprom[64] = }; -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "010100", /* write command */ - 0, /* erase command */ - "010000000000", /* lock command */ - "010011000000" /* unlock command */ -}; - WRITE16_MEMBER(overdriv_state::eeprom_w) { //logerror("%06x: write %04x to eeprom_w\n",space.device().safe_pc(),data); @@ -246,8 +237,8 @@ static INPUT_PORTS_START( overdriv ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_START("SYSTEM") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) @@ -263,9 +254,9 @@ static INPUT_PORTS_START( overdriv ) PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(50) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) INPUT_PORTS_END @@ -350,9 +341,8 @@ static MACHINE_CONFIG_START( overdriv, overdriv_state ) MCFG_QUANTUM_TIME(attotime::from_hz(12000)) - - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) - MCFG_SERIAL_EEPROM_DATA(overdriv_default_eeprom, 128) + MCFG_EEPROM_SERIAL_ER5911_16BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(overdriv_default_eeprom, 128) /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS) diff --git a/src/mame/drivers/pasha2.c b/src/mame/drivers/pasha2.c index fe0b3672242..c2f67e63d2a 100644 --- a/src/mame/drivers/pasha2.c +++ b/src/mame/drivers/pasha2.c @@ -419,7 +419,7 @@ static MACHINE_CONFIG_START( pasha2, pasha2_state ) MCFG_CPU_IO_MAP(pasha2_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pasha2_state, irq0_line_hold) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/pirates.c b/src/mame/drivers/pirates.c index 973986ae0b8..0f767938f99 100644 --- a/src/mame/drivers/pirates.c +++ b/src/mame/drivers/pirates.c @@ -94,23 +94,14 @@ Notes: #include "includes/pirates.h" -static const serial_eeprom_interface eeprom_intf = -{ - "*110", /* read command */ - "*101", /* write command */ - 0, /* erase command */ - "*10000xxxx", /* lock command */ - "*10011xxxx" /* unlock command */ -}; - WRITE16_MEMBER(pirates_state::pirates_out_w) { if (ACCESSING_BITS_0_7) { /* bits 0-2 control EEPROM */ - m_eeprom->write_bit(data & 0x04); - m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x04) >> 2); + m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); /* bit 6 selects oki bank */ m_oki->set_bank_base((data & 0x40) ? 0x40000 : 0x00000); @@ -204,7 +195,7 @@ static INPUT_PORTS_START( pirates ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW ) - PORT_BIT( 0x0010, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // EEPROM data + PORT_BIT( 0x0010, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // EEPROM data PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // seems checked in "test mode" PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // seems checked in "test mode" PORT_BIT( 0x0080, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, pirates_state,prot_r, NULL) // protection @@ -260,7 +251,7 @@ static MACHINE_CONFIG_START( pirates, pirates_state ) MCFG_CPU_PROGRAM_MAP(pirates_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", pirates_state, irq1_line_hold) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_GFXDECODE(pirates) diff --git a/src/mame/drivers/playmark.c b/src/mame/drivers/playmark.c index 41c26fabea6..b9bdc3520b1 100644 --- a/src/mame/drivers/playmark.c +++ b/src/mame/drivers/playmark.c @@ -61,17 +61,6 @@ WRITE16_MEMBER(playmark_state::coinctrl_w) ***************************************************************************/ -static const serial_eeprom_interface eeprom_intf = -{ - "*110", /* read command */ - "*101", /* write command */ - 0, /* erase command */ - "*10000xxxx", /* lock command */ - "*10011xxxx", /* unlock command */ - 0, /* enable_multi_read */ - 5 /* reset_delay (otherwise wbeachvl will hang when saving settings) */ -}; - WRITE16_MEMBER(playmark_state::wbeachvl_coin_eeprom_w) { if (ACCESSING_BITS_0_7) @@ -83,9 +72,9 @@ WRITE16_MEMBER(playmark_state::wbeachvl_coin_eeprom_w) coin_counter_w(machine(), 3, data & 0x08); /* bits 5-7 control EEPROM */ - m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->write_bit(data & 0x80); - m_eeprom->set_clock_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x80) >> 7); + m_eeprom->clk_write((data & 0x40) ? CLEAR_LINE : ASSERT_LINE); } } @@ -95,9 +84,9 @@ WRITE16_MEMBER(playmark_state::hotmind_coin_eeprom_w) { coin_counter_w(machine(), 0,data & 0x20); - m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->write_bit(data & 4); - m_eeprom->set_clock_line((data & 2) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 4) >> 2); + m_eeprom->clk_write((data & 2) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -548,7 +537,7 @@ static INPUT_PORTS_START( wbeachvl ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE1 ) PORT_SERVICE_NO_TOGGLE(0x20, IP_ACTIVE_LOW) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* ?? see code at 746a. sound status? */ - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* EEPROM data */ + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* EEPROM data */ PORT_START("P1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) @@ -714,7 +703,7 @@ static INPUT_PORTS_START( hotmind ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* EEPROM data */ + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* EEPROM data */ PORT_START("DSW1") PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) @@ -1126,8 +1115,8 @@ static MACHINE_CONFIG_START( wbeachvl, playmark_state ) /* Program and Data Maps are internal to the MCU */ // MCFG_CPU_IO_MAP(playmark_sound_io_map) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) - MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark) MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark) @@ -1197,8 +1186,8 @@ static MACHINE_CONFIG_START( hotmind, playmark_state ) /* Program and Data Maps are internal to the MCU */ MCFG_CPU_IO_MAP(playmark_sound_io_map) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) - MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark) MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark) diff --git a/src/mame/drivers/plygonet.c b/src/mame/drivers/plygonet.c index 254995ddc60..e0f63ad0ae5 100644 --- a/src/mame/drivers/plygonet.c +++ b/src/mame/drivers/plygonet.c @@ -72,19 +72,6 @@ enum { BANK_GROUP_A, BANK_GROUP_B, INVALID_BANK_GROUP }; -static const serial_eeprom_interface eeprom_intf = -{ - "*110", // read command - "*101", // write command - "*111", // erase command - "*10000xxxxxxx", // lock command - "*10011xxxxxxx", // unlock command - 1, - 0 -// "*10001xxxxxxx", // write all -// "*10010xxxxxxx" // erase all -}; - READ8_MEMBER(polygonet_state::polygonet_inputs_r) { return m_inputs[offset]->read(); @@ -103,9 +90,9 @@ WRITE8_MEMBER(polygonet_state::polygonet_sys_w) D25 = EEPROM CS D24 = EEPROM DATA */ - m_eeprom->write_bit(data & 1); - m_eeprom->set_cs_line((data & 2) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 4) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write(data & 1); + m_eeprom->cs_write((data & 2) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 4) ? ASSERT_LINE : CLEAR_LINE); m_sys0 = data; break; @@ -669,7 +656,7 @@ static MACHINE_CONFIG_START( plygonet, polygonet_state ) MCFG_QUANTUM_PERFECT_CPU("maincpu") /* TODO: TEMPORARY! UNTIL A MORE LOCALIZED SYNC CAN BE MADE */ - MCFG_SERIAL_EEPROM_ADD("eeprom", 512, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_93C66_ADD("eeprom") MCFG_GFXDECODE(plygonet) @@ -724,7 +711,7 @@ static INPUT_PORTS_START( polygonet ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) // Start 2, unused diff --git a/src/mame/drivers/pntnpuzl.c b/src/mame/drivers/pntnpuzl.c index 2f3466b0212..d3e07e86b49 100644 --- a/src/mame/drivers/pntnpuzl.c +++ b/src/mame/drivers/pntnpuzl.c @@ -154,24 +154,14 @@ public: DECLARE_READ16_MEMBER(pntnpuzl_eeprom_r); DECLARE_WRITE16_MEMBER(pntnpuzl_eeprom_w); DECLARE_DRIVER_INIT(pip); - required_device<serial_eeprom_device> m_eeprom; -}; - - -static const serial_eeprom_interface eeprom_intf = -{ - "*110", /* read command */ - "*101", /* write command */ - NULL, /* erase command */ - "*10000xxxx", /* lock command */ - "*10011xxxx" /* unlock command */ + required_device<eeprom_serial_93cxx_device> m_eeprom; }; READ16_MEMBER(pntnpuzl_state::pntnpuzl_eeprom_r) { /* bit 11 is EEPROM data */ - return (m_eeprom_data & 0xf4ff) | (m_eeprom->read_bit()<<11) | (ioport("IN1")->read() & 0x0300); + return (m_eeprom_data & 0xf4ff) | (m_eeprom->do_read()<<11) | (ioport("IN1")->read() & 0x0300); } WRITE16_MEMBER(pntnpuzl_state::pntnpuzl_eeprom_w) @@ -182,9 +172,9 @@ WRITE16_MEMBER(pntnpuzl_state::pntnpuzl_eeprom_w) /* bit 13 is clock (active high) */ /* bit 14 is cs (active high) */ - m_eeprom->write_bit(data & 0x1000); - m_eeprom->set_cs_line((data & 0x4000) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x1000) >> 12); + m_eeprom->cs_write((data & 0x4000) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE); } @@ -357,7 +347,7 @@ static MACHINE_CONFIG_START( pntnpuzl, pntnpuzl_state ) MCFG_CPU_ADD("maincpu", M68000, 12000000)//?? MCFG_CPU_PROGRAM_MAP(pntnpuzl_map) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_FRAGMENT_ADD( pcvideo_vga ) diff --git a/src/mame/drivers/policetr.c b/src/mame/drivers/policetr.c index 6f1ae580d4f..47dda5c25cd 100644 --- a/src/mame/drivers/policetr.c +++ b/src/mame/drivers/policetr.c @@ -144,9 +144,9 @@ WRITE32_MEMBER(policetr_state::control_w) /* handle EEPROM I/O */ if (ACCESSING_BITS_16_23) { - m_eeprom->write_bit(data & 0x00800000); - m_eeprom->set_cs_line((data & 0x00200000) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x00800000) >> 23); + m_eeprom->cs_write((data & 0x00200000) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE); } /* toggling BSMT off then on causes a reset */ @@ -233,23 +233,6 @@ WRITE32_MEMBER(policetr_state::speedup_w) /************************************* * - * EEPROM interface/saving - * - *************************************/ - -static const serial_eeprom_interface eeprom_interface_policetr = -{ - "*110", // read 1 10 aaaaaa - "*101", // write 1 01 aaaaaa dddddddddddddddd - "*111", // erase 1 11 aaaaaa - "*10000xxxx", // lock 1 00 00xxxx - "*10011xxxx" // unlock 1 00 11xxxx -}; - - - -/************************************* - * * Main CPU memory handlers * *************************************/ @@ -332,7 +315,7 @@ static INPUT_PORTS_START( policetr ) PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* EEPROM read */ + PORT_BIT( 0x20000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* EEPROM read */ PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -414,7 +397,7 @@ static MACHINE_CONFIG_START( policetr, policetr_state ) MCFG_CPU_PROGRAM_MAP(policetr_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", policetr_state, irq4_gen) - MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, eeprom_interface_policetr) + MCFG_EEPROM_SERIAL_93C66_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) diff --git a/src/mame/drivers/powerbal.c b/src/mame/drivers/powerbal.c index 05bac1c6bb2..dd06b1be1d3 100644 --- a/src/mame/drivers/powerbal.c +++ b/src/mame/drivers/powerbal.c @@ -30,7 +30,7 @@ public: int m_tilebank; int m_bg_yoffset; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_DRIVER_INIT(powerbal); DECLARE_DRIVER_INIT(magicstk); @@ -47,26 +47,15 @@ public: }; -static const serial_eeprom_interface eeprom_intf = -{ - "*110", /* read command */ - "*101", /* write command */ - 0, /* erase command */ - "*10000xxxx", /* lock command */ - "*10011xxxx", /* unlock command */ - 0, /* enable_multi_read */ - 5 /* reset_delay (otherwise wbeachvl will hang when saving settings) */ -}; - WRITE16_MEMBER(powerbal_state::magicstk_coin_eeprom_w) { if (ACCESSING_BITS_0_7) { coin_counter_w(machine(), 0, data & 0x20); - m_eeprom->set_cs_line((data & 8) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->write_bit(data & 2); - m_eeprom->set_clock_line((data & 4) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 8) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 2) >> 1); + m_eeprom->clk_write((data & 4) ? CLEAR_LINE : ASSERT_LINE); } } @@ -242,7 +231,7 @@ static INPUT_PORTS_START( magicstk ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* EEPROM data */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* EEPROM data */ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -339,7 +328,7 @@ static INPUT_PORTS_START( hotminda ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* EEPROM data */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* EEPROM data */ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -532,8 +521,8 @@ static MACHINE_CONFIG_START( magicstk, powerbal_state ) MCFG_CPU_PROGRAM_MAP(magicstk_main_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", powerbal_state, irq2_line_hold) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) - MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) MCFG_MACHINE_START_OVERRIDE(powerbal_state,powerbal) MCFG_MACHINE_RESET_OVERRIDE(powerbal_state,powerbal) diff --git a/src/mame/drivers/psikyo4.c b/src/mame/drivers/psikyo4.c index 80125533b12..7a23c441f48 100644 --- a/src/mame/drivers/psikyo4.c +++ b/src/mame/drivers/psikyo4.c @@ -150,24 +150,13 @@ static GFXDECODE_START( ps4 ) GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x000, 0x80 ) // 8bpp tiles GFXDECODE_END -static const serial_eeprom_interface eeprom_interface_93C56 = -{ - "*110x", // read 110x aaaaaaaa - "*101x", // write 101x aaaaaaaa dddddddd - "*111x", // erase 111x aaaaaaaa - "*10000xxxxxxx",// lock 100x 00xxxx - "*10011xxxxxxx",// unlock 100x 11xxxx -// "*10001xxxx", // write all 1 00 01xxxx dddddddddddddddd -// "*10010xxxx" // erase all 1 00 10xxxx -}; - WRITE32_MEMBER(psikyo4_state::ps4_eeprom_w) { if (ACCESSING_BITS_16_31) { - m_eeprom->write_bit((data & 0x00200000) ? 1 : 0); - m_eeprom->set_cs_line((data & 0x00800000) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x00200000) ? 1 : 0); + m_eeprom->cs_write((data & 0x00800000) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE); return; } @@ -383,7 +372,7 @@ static INPUT_PORTS_START( hotgmck ) PORT_START("JP4")/* jumper pads 'JP4' on the PCB */ /* EEPROM is read here */ - PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("SYSTEM") /* system inputs */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) // Screen 1 @@ -558,7 +547,7 @@ static INPUT_PORTS_START( loderndf ) PORT_DIPSETTING( 0x00000000, "Japan (Shows Version Number)" ) PORT_DIPSETTING( 0x00010000, "World (Does Not Show Version Number)" ) /* EEPROM is read here */ - PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END /* unused inputs also act as duplicate buttons */ @@ -637,7 +626,7 @@ static INPUT_PORTS_START( hotdebut ) PORT_START("JP4")/* jumper pads 'JP4' on the PCB */ /* EEPROM is read here */ - PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END @@ -667,8 +656,8 @@ static MACHINE_CONFIG_START( ps4big, psikyo4_state ) MCFG_CPU_VBLANK_INT_DRIVER("lscreen", psikyo4_state, psikyosh_interrupt) - MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 8, eeprom_interface_93C56) - MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0) + MCFG_EEPROM_SERIAL_93C56_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) /* video hardware */ MCFG_GFXDECODE(ps4) diff --git a/src/mame/drivers/psikyosh.c b/src/mame/drivers/psikyosh.c index eca9a0ca9ee..40ead945874 100644 --- a/src/mame/drivers/psikyosh.c +++ b/src/mame/drivers/psikyosh.c @@ -306,24 +306,13 @@ static GFXDECODE_START( psikyosh ) GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x000, 0x100 ) // 8bpp tiles GFXDECODE_END -static const serial_eeprom_interface eeprom_interface_93C56 = -{ - "*110x", // read 110x aaaaaaaa - "*101x", // write 101x aaaaaaaa dddddddd - "*111x", // erase 111x aaaaaaaa - "*10000xxxxxxx",// lock 100x 00xxxx - "*10011xxxxxxx",// unlock 100x 11xxxx -// "*10001xxxx", // write all 1 00 01xxxx dddddddddddddddd -// "*10010xxxx" // erase all 1 00 10xxxx -}; - WRITE32_MEMBER(psikyosh_state::psh_eeprom_w) { if (ACCESSING_BITS_24_31) { - m_eeprom->write_bit((data & 0x20000000) ? 1 : 0); - m_eeprom->set_cs_line((data & 0x80000000) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 0x40000000) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x20000000) ? 1 : 0); + m_eeprom->cs_write((data & 0x80000000) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x40000000) ? ASSERT_LINE : CLEAR_LINE); return; } @@ -604,7 +593,7 @@ static INPUT_PORTS_START( s1945ii ) PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Region ) ) PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x01000000, DEF_STR( World ) ) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END static INPUT_PORTS_START( soldivid ) @@ -614,7 +603,7 @@ static INPUT_PORTS_START( soldivid ) PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Region ) ) PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x01000000, DEF_STR( World ) ) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END static INPUT_PORTS_START( daraku ) @@ -632,7 +621,7 @@ static INPUT_PORTS_START( daraku ) PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Region ) ) PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x01000000, DEF_STR( World ) ) /* Title screen is different, English is default now */ - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END static INPUT_PORTS_START( sbomberb ) @@ -647,7 +636,7 @@ static INPUT_PORTS_START( sbomberb ) PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Region ) ) PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x01000000, DEF_STR( World ) ) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END static INPUT_PORTS_START( gunbird2 ) /* Different Region */ @@ -659,7 +648,7 @@ static INPUT_PORTS_START( gunbird2 ) /* Different Region */ PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x01000000, "International Ver A." ) PORT_DIPSETTING( 0x02000000, "International Ver B." ) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END static INPUT_PORTS_START( s1945iii ) /* Different Region again */ @@ -671,7 +660,7 @@ static INPUT_PORTS_START( s1945iii ) /* Different Region again */ PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x02000000, "International Ver A." ) PORT_DIPSETTING( 0x01000000, "International Ver B." ) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END static INPUT_PORTS_START( dragnblz ) /* Security requires bit high */ @@ -687,7 +676,7 @@ static INPUT_PORTS_START( dragnblz ) /* Security requires bit high */ PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x02000000, "International Ver A." ) PORT_DIPSETTING( 0x01000000, "International Ver B." ) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END static INPUT_PORTS_START( gnbarich ) /* Same as S1945iii except only one button */ @@ -699,7 +688,7 @@ static INPUT_PORTS_START( gnbarich ) /* Same as S1945iii except only one button PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x02000000, "International Ver A." ) PORT_DIPSETTING( 0x01000000, "International Ver B." ) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END static INPUT_PORTS_START( tgm2 ) @@ -720,7 +709,7 @@ static INPUT_PORTS_START( tgm2 ) // PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) // PORT_DIPSETTING( 0x02000000, "International Ver A." ) // PORT_DIPSETTING( 0x01000000, "International Ver B." ) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END static INPUT_PORTS_START( mjgtaste ) @@ -774,7 +763,7 @@ static INPUT_PORTS_START( mjgtaste ) // PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) // PORT_DIPSETTING( 0x02000000, "International Ver A." ) // PORT_DIPSETTING( 0x01000000, "International Ver B." ) - PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END @@ -798,8 +787,8 @@ static MACHINE_CONFIG_START( psikyo3v1, psikyosh_state ) MCFG_CPU_VBLANK_INT_DRIVER("screen", psikyosh_state, psikyosh_interrupt) - MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 8, eeprom_interface_93C56) - MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0) + MCFG_EEPROM_SERIAL_93C56_8BIT_ADD("eeprom") + MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0) /* video hardware */ MCFG_BUFFERED_SPRITERAM32_ADD("spriteram") /* If using alpha */ diff --git a/src/mame/drivers/pzletime.c b/src/mame/drivers/pzletime.c index b129cfe4063..ba7e0d811f8 100644 --- a/src/mame/drivers/pzletime.c +++ b/src/mame/drivers/pzletime.c @@ -65,7 +65,7 @@ public: UINT32 screen_update_pzletime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); required_device<cpu_device> m_maincpu; required_device<okim6295_device> m_oki; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; @@ -171,9 +171,9 @@ WRITE16_MEMBER(pzletime_state::eeprom_w) { if (ACCESSING_BITS_0_7) { - m_eeprom->write_bit(data & 0x01); - m_eeprom->set_cs_line((data & 0x02) ? CLEAR_LINE : ASSERT_LINE ); - m_eeprom->set_clock_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->di_write(data & 0x01); + m_eeprom->cs_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -246,7 +246,7 @@ static INPUT_PORTS_START( pzletime ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* eeprom */ + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* eeprom */ PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, pzletime_state,ticket_status_r, NULL) /* ticket dispenser */ PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -335,7 +335,7 @@ static MACHINE_CONFIG_START( pzletime, pzletime_state ) MCFG_SCREEN_UPDATE_DRIVER(pzletime_state, screen_update_pzletime) MCFG_GFXDECODE(pzletime) MCFG_PALETTE_LENGTH(0x300 + 32768) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* sound hardware */ diff --git a/src/mame/drivers/r2dx_v33.c b/src/mame/drivers/r2dx_v33.c index 1525e274d98..a3ced6bb2a7 100644 --- a/src/mame/drivers/r2dx_v33.c +++ b/src/mame/drivers/r2dx_v33.c @@ -73,7 +73,7 @@ public: INTERRUPT_GEN_MEMBER(rdx_v33_interrupt); void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri); required_device<cpu_device> m_maincpu; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; }; @@ -272,9 +272,9 @@ WRITE16_MEMBER(r2dx_v33_state::rdx_v33_eeprom_w) { if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data & 0x20); - m_eeprom->set_cs_line((data & 0x08) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x20) >> 5); + m_eeprom->cs_write((data & 0x08) ? ASSERT_LINE : CLEAR_LINE); if (data&0xc7) logerror("eeprom_w extra bits used %04x\n",data); } @@ -568,7 +568,7 @@ static INPUT_PORTS_START( rdx_v33 ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_DIPNAME( 0x0040, 0x0040, "Test Mode" ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) @@ -606,7 +606,7 @@ static INPUT_PORTS_START( nzerotea ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED ) - //PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + //PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_DIPNAME( 0x0040, 0x0040, "Test Mode" ) PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) @@ -696,7 +696,7 @@ static MACHINE_CONFIG_START( rdx_v33, r2dx_v33_state ) //MCFG_MACHINE_RESET_OVERRIDE(r2dx_v33_state,rdx_v33) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/rabbit.c b/src/mame/drivers/rabbit.c index 7154ed35788..a605418126d 100644 --- a/src/mame/drivers/rabbit.c +++ b/src/mame/drivers/rabbit.c @@ -152,7 +152,7 @@ public: void rabbit_drawtilemap( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int whichtilemap ); void rabbit_do_blit(); required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); @@ -692,13 +692,13 @@ WRITE32_MEMBER(rabbit_state::rabbit_eeprom_write) if (mem_mask == 0xff000000) { // latch the bit - m_eeprom->write_bit(data & 0x01000000); + m_eeprom->di_write((data & 0x01000000) >> 24); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x04000000) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 0x04000000) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -740,7 +740,7 @@ ADDRESS_MAP_END static INPUT_PORTS_START( rabbit ) PORT_START("INPUTS") - PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // as per code at 4d932 + PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // as per code at 4d932 PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unlabeled in input test PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 ) @@ -893,7 +893,7 @@ static MACHINE_CONFIG_START( rabbit, rabbit_state ) MCFG_CPU_PROGRAM_MAP(rabbit_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", rabbit_state, rabbit_vblank_interrupt) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_GFXDECODE(rabbit) diff --git a/src/mame/drivers/rbmk.c b/src/mame/drivers/rbmk.c index 96a3d7c46fa..4086b5bb31a 100644 --- a/src/mame/drivers/rbmk.c +++ b/src/mame/drivers/rbmk.c @@ -85,7 +85,7 @@ public: INTERRUPT_GEN_MEMBER(mcu_irq); required_device<cpu_device> m_maincpu; required_device<cpu_device> m_mcu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; @@ -113,10 +113,10 @@ WRITE16_MEMBER(rbmk_state::eeprom_w) //bad ? if( ACCESSING_BITS_0_7 ) { - m_eeprom->write_bit(data & 0x04); - m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE:ASSERT_LINE ); + m_eeprom->di_write((data & 0x04) >> 2); + m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE ); - m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -366,7 +366,7 @@ static INPUT_PORTS_START( rbmk ) PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN4") /* 16bit */ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) @@ -560,7 +560,7 @@ static MACHINE_CONFIG_START( rbmk, rbmk_state ) MCFG_PALETTE_LENGTH(0x800) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") diff --git a/src/mame/drivers/rungun.c b/src/mame/drivers/rungun.c index 852192734d1..77726a043f1 100644 --- a/src/mame/drivers/rungun.c +++ b/src/mame/drivers/rungun.c @@ -53,15 +53,6 @@ #define RNG_DEBUG 0 -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - "0100100000000",/* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - READ16_MEMBER(rungun_state::rng_sysregs_r) { UINT16 data = 0; @@ -113,9 +104,9 @@ WRITE16_MEMBER(rungun_state::rng_sysregs_w) { case 0x08/2: /* - bit0 : eeprom_write_bit - bit1 : eeprom_set_cs_line - bit2 : eeprom_set_clock_line + bit0 : eeprom_di_write + bit1 : eeprom_cs_write + bit2 : eeprom_clk_write bit3 : coin counter? bit7 : set before massive memory writes bit10 : IRQ5 ACK @@ -261,8 +252,8 @@ static INPUT_PORTS_START( rng ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("DSW") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM ready (always 1) */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) PORT_DIPNAME( 0x10, 0x00, "Monitors" ) PORT_DIPSETTING( 0x00, "1" ) @@ -281,9 +272,9 @@ static INPUT_PORTS_START( rng ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) PORT_START("P1") KONAMI8_B123_START(1) @@ -387,8 +378,7 @@ static MACHINE_CONFIG_START( rng, rungun_state ) MCFG_GFXDECODE(rungun) - - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK) diff --git a/src/mame/drivers/segas32.c b/src/mame/drivers/segas32.c index 5d0afb3878a..82c3abd2680 100644 --- a/src/mame/drivers/segas32.c +++ b/src/mame/drivers/segas32.c @@ -666,9 +666,9 @@ void segas32_state::common_io_chip_w(address_space &space, int which, offs_t off if (which == 0) { - m_eeprom->write_bit(data & 0x80); - m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x80) >> 7); + m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); } /* coin_lockout_w(machine(), 1 + 2*which, data & 0x08); coin_lockout_w(machine(), 0 + 2*which, data & 0x04);*/ @@ -683,9 +683,9 @@ void segas32_state::common_io_chip_w(address_space &space, int which, offs_t off else { /* multi-32 EEPROM access */ - m_eeprom->write_bit(data & 0x80); - m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); - m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x80) >> 7); + m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); } break; @@ -1321,7 +1321,7 @@ static INPUT_PORTS_START( system32_generic ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 ) /* sometimes mirrors SERVICE1 */ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE4 ) /* tends to also work as a test switch */ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("PORTG_A") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -1356,7 +1356,7 @@ static INPUT_PORTS_START( multi32_generic ) PORT_START("SERVICE34_B") PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("PORTG_B") PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) @@ -2178,7 +2178,7 @@ static MACHINE_CONFIG_START( system32, segas32_state ) MCFG_MACHINE_RESET_OVERRIDE(segas32_state,system32) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("v60_irq0", segas32_state, signal_v60_irq_callback) MCFG_TIMER_DRIVER_ADD("v60_irq1", segas32_state, signal_v60_irq_callback) @@ -2237,7 +2237,7 @@ static MACHINE_CONFIG_START( multi32, segas32_state ) MCFG_MACHINE_RESET_OVERRIDE(segas32_state,system32) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TIMER_DRIVER_ADD("v60_irq0", segas32_state, signal_v60_irq_callback) MCFG_TIMER_DRIVER_ADD("v60_irq1", segas32_state, signal_v60_irq_callback) diff --git a/src/mame/drivers/seibuspi.c b/src/mame/drivers/seibuspi.c index f1762d4600d..6f0584b219c 100644 --- a/src/mame/drivers/seibuspi.c +++ b/src/mame/drivers/seibuspi.c @@ -895,9 +895,9 @@ READ8_MEMBER(seibuspi_state::spi_ds2404_unknown_r) WRITE8_MEMBER(seibuspi_state::eeprom_w) { - m_eeprom->write_bit((data & 0x80) ? 1 : 0); - m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->di_write((data & 0x80) ? 1 : 0); + m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); } WRITE8_MEMBER(seibuspi_state::spi_layerbanks_eeprom_w) @@ -1247,7 +1247,7 @@ static INPUT_PORTS_START( sxx2f ) PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("SYSTEM") - PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END @@ -1365,7 +1365,7 @@ static INPUT_PORTS_START( sys386f ) PORT_START("SYSTEM") PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x00004000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x00004000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0xffffbf3f, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("INPUTS") @@ -1750,18 +1750,6 @@ GFXDECODE_END /*****************************************************************************/ -/* this is a 93C46 but with reset delay */ -static const serial_eeprom_interface eeprom_intf = -{ - "*110", /* read command */ - "*101", /* write command */ - "*111", /* erase command */ - "*10000xxxx", /* lock command */ - "*10011xxxx", /* unlock command */ - 1, /* enable_multi_read */ - 1 /* reset_delay */ -}; - INTERRUPT_GEN_MEMBER(seibuspi_state::spi_interrupt) { device.execute().set_input_line(0, HOLD_LINE); // where is ack? @@ -1915,7 +1903,7 @@ static MACHINE_CONFIG_DERIVED( sxx2f, sxx2e ) MCFG_DEVICE_REMOVE("ds2404") - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") // Z80 is Z84C0006PCS instead of Z84C0008PEC // clock is unknown, possibly slower than 7.159MHz @@ -1948,7 +1936,7 @@ static MACHINE_CONFIG_START( sys386i, seibuspi_state ) MCFG_CPU_PROGRAM_MAP(sys386i_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -1998,7 +1986,7 @@ static MACHINE_CONFIG_START( sys386f, seibuspi_state ) MCFG_CPU_PROGRAM_MAP(sys386f_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/seta2.c b/src/mame/drivers/seta2.c index b6216fae961..e129e750095 100644 --- a/src/mame/drivers/seta2.c +++ b/src/mame/drivers/seta2.c @@ -181,14 +181,14 @@ ADDRESS_MAP_END READ16_MEMBER(seta2_state::gundamex_eeprom_r) { - return ((m_eeprom->read_bit() & 1)) << 3; + return ((m_eeprom->do_read() & 1)) << 3; } WRITE16_MEMBER(seta2_state::gundamex_eeprom_w) { - m_eeprom->set_clock_line((data & 0x2) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data & 0x1); - m_eeprom->set_cs_line((data & 0x4) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((data & 0x2) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write(data & 0x1); + m_eeprom->cs_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE); } static ADDRESS_MAP_START( gundamex_map, AS_PROGRAM, 16, seta2_state ) @@ -2036,7 +2036,7 @@ static MACHINE_CONFIG_DERIVED( gundamex, seta2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(gundamex_map) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") // video hardware MCFG_SCREEN_MODIFY("screen") diff --git a/src/mame/drivers/sigmab98.c b/src/mame/drivers/sigmab98.c index c5c2665ed6b..374852b6b82 100644 --- a/src/mame/drivers/sigmab98.c +++ b/src/mame/drivers/sigmab98.c @@ -109,7 +109,7 @@ public: required_device<cpu_device> m_maincpu; optional_shared_ptr<UINT8> m_spriteram; required_shared_ptr<UINT8> m_nvram; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; UINT8 m_reg; UINT8 m_rombank; @@ -446,14 +446,14 @@ void sigmab98_state::show_outputs() WRITE8_MEMBER(sigmab98_state::eeprom_w) { // latch the bit - m_eeprom->write_bit(data & 0x40); + m_eeprom->di_write((data & 0x40) >> 6); // reset line asserted: reset. // if ((m_c0 ^ data) & 0x20) - m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); m_c0 = data; //show_outputs(state); @@ -644,19 +644,19 @@ READ8_MEMBER(sigmab98_state::animalc_rambank_r) READ8_MEMBER(sigmab98_state::sammymdl_eeprom_r) { - return m_eeprom->read_bit() ? 0x80 : 0; + return m_eeprom->do_read() ? 0x80 : 0; } WRITE8_MEMBER(sigmab98_state::sammymdl_eeprom_w) { // latch the bit - m_eeprom->write_bit(data & 0x40); + m_eeprom->di_write((data & 0x40) >> 6); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); if (data & 0x8f) logerror("%s: unknown eeeprom bits written %02x\n", machine().describe_context(), data); @@ -1516,7 +1516,7 @@ static INPUT_PORTS_START( gegege ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // ? (coin error, pulses mask 4 of port c6) @@ -1554,7 +1554,7 @@ static INPUT_PORTS_START( pepsiman ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // ? (coin error, pulses mask 4 of port c6) @@ -1592,7 +1592,7 @@ static INPUT_PORTS_START( ucytokyu ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10) // ? (coin error, pulses mask 4 of port c6) @@ -1675,17 +1675,6 @@ INPUT_PORTS_END GeGeGe no Kitarou Youkai Slot ***************************************************************************/ -const serial_eeprom_interface eeprom_intf = -{ - "*110", // read 1 10 aaaaaa - "*101", // write 1 01 aaaaaa dddddddddddddddd - "*111", // erase 1 11 aaaaaa - "*10000xxxx", // lock 1 00 00xxxx - "*10011xxxx", // unlock 1 00 11xxxx - 0, // enable_multi_read - 7 // reset_delay (otherwise gegege will hang when saving settings) -}; - INTERRUPT_GEN_MEMBER(sigmab98_state::gegege_vblank_interrupt) { device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x5a); @@ -1698,7 +1687,7 @@ static MACHINE_CONFIG_START( gegege, sigmab98_state ) MCFG_CPU_VBLANK_INT_DRIVER("screen", sigmab98_state, gegege_vblank_interrupt) MCFG_NVRAM_ADD_0FILL("nvram") - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) @@ -1724,19 +1713,6 @@ MACHINE_CONFIG_END Sammy Medal Games ***************************************************************************/ -static const serial_eeprom_interface eeprom_interface_93C46_8bit_delay = -{ - "*110", // read 1 10 aaaaaa - "*101", // write 1 01 aaaaaa dddddddd - "*111", // erase 1 11 aaaaaa - "*10000xxxx", // lock 1 00 00xxxx - "*10011xxxx", // unlock 1 00 11xxxx - 0, // enable_multi_read - 1 // reset_delay (needed by animalc) -// "*10001xxxx" // write all 1 00 01xxxx dddddddd -// "*10010xxxx" // erase all 1 00 10xxxx -}; - MACHINE_RESET_MEMBER(sigmab98_state,sammymdl) { m_maincpu->set_state_int(Z80_PC, 0x400); // code starts at 400 ??? (000 = cart header) @@ -1750,7 +1726,7 @@ static MACHINE_CONFIG_START( sammymdl, sigmab98_state ) MCFG_MACHINE_RESET_OVERRIDE(sigmab98_state, sammymdl ) MCFG_NVRAM_ADD_0FILL("nvram") // battery - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_interface_93C46_8bit_delay) + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW ) diff --git a/src/mame/drivers/simpl156.c b/src/mame/drivers/simpl156.c index de79101ea27..3206b07db8e 100644 --- a/src/mame/drivers/simpl156.c +++ b/src/mame/drivers/simpl156.c @@ -127,7 +127,7 @@ INPUT_PORTS_END READ32_MEMBER(simpl156_state::simpl156_inputs_read) { - int eep = m_eeprom->read_bit(); + int eep = m_eeprom->do_read(); UINT32 returndata = ioport("IN0")->read() ^ 0xffff0000; returndata ^= ((eep << 8)); @@ -172,9 +172,9 @@ WRITE32_MEMBER(simpl156_state::simpl156_eeprom_w) m_okimusic->set_bank_base(0x40000 * (data & 0x7)); - m_eeprom->set_clock_line(BIT(data, 5) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(BIT(data, 4)); - m_eeprom->set_cs_line(BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write(BIT(data, 5) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write(BIT(data, 4)); + m_eeprom->cs_write(BIT(data, 6) ? ASSERT_LINE : CLEAR_LINE); } @@ -424,7 +424,7 @@ static MACHINE_CONFIG_START( chainrec, simpl156_state ) MCFG_CPU_PROGRAM_MAP(chainrec_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", simpl156_state, simpl156_vbl_interrupt) - MCFG_EEPROM_93C46_ADD("eeprom") // 93C45 + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") // 93C45 /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/simpsons.c b/src/mame/drivers/simpsons.c index f8202994a6d..67b875ba673 100644 --- a/src/mame/drivers/simpsons.c +++ b/src/mame/drivers/simpsons.c @@ -184,14 +184,14 @@ static INPUT_PORTS_START( simpsons ) PORT_START("TEST") PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // eeprom ack + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0xce, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) INPUT_PORTS_END static INPUT_PORTS_START( simpsn2p ) @@ -219,14 +219,14 @@ static INPUT_PORTS_START( simpsn2p ) PORT_START("TEST") PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // eeprom ack + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0xce, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) INPUT_PORTS_END @@ -291,15 +291,6 @@ static const k053247_interface simpsons_k053246_intf = simpsons_sprite_callback }; -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - 0, /* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - static MACHINE_CONFIG_START( simpsons, simpsons_state ) /* basic machine hardware */ @@ -311,8 +302,7 @@ static MACHINE_CONFIG_START( simpsons, simpsons_state ) MCFG_CPU_PROGRAM_MAP(z80_map) /* NMIs are generated by the 053260 */ - - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK) diff --git a/src/mame/drivers/spool99.c b/src/mame/drivers/spool99.c index 4f88c8394d3..f15f542a7de 100644 --- a/src/mame/drivers/spool99.c +++ b/src/mame/drivers/spool99.c @@ -122,7 +122,7 @@ public: virtual void video_start(); UINT32 screen_update_spool99(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; required_device<okim6295_device> m_oki; }; @@ -186,7 +186,7 @@ READ8_MEMBER(spool99_state::spool99_io_r) case 0xafe4: return ioport("SERVICE2")->read();//attract mode // case 0xafe5: return 1; // case 0xafe6: return 1; - case 0xafe7: return m_eeprom->read_bit(); + case 0xafe7: return m_eeprom->do_read(); case 0xaff8: return m_oki->read(space,0); } } @@ -199,19 +199,19 @@ READ8_MEMBER(spool99_state::spool99_io_r) WRITE8_MEMBER(spool99_state::eeprom_resetline_w) { // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE ); } WRITE8_MEMBER(spool99_state::eeprom_clockline_w) { // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE ); } WRITE8_MEMBER(spool99_state::eeprom_dataline_w) { // latch the bit - m_eeprom->write_bit(data & 0x01); + m_eeprom->di_write(data & 0x01); } static ADDRESS_MAP_START( spool99_map, AS_PROGRAM, 8, spool99_state ) @@ -251,7 +251,7 @@ READ8_MEMBER(spool99_state::vcarn_io_r) case 0xa7a2: return ioport("START")->read(); case 0xa7a3: return ioport("BET")->read();//system 2 - case 0xa7a7: return m_eeprom->read_bit(); + case 0xa7a7: return m_eeprom->do_read(); } } @@ -361,7 +361,7 @@ static MACHINE_CONFIG_START( spool99, spool99_state ) MCFG_PALETTE_LENGTH(0x200) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") diff --git a/src/mame/drivers/ssv.c b/src/mame/drivers/ssv.c index cad4f61d68a..ae5e8813c7a 100644 --- a/src/mame/drivers/ssv.c +++ b/src/mame/drivers/ssv.c @@ -445,7 +445,7 @@ READ16_MEMBER(ssv_state::gdfs_eeprom_r) { ioport_port *gun[] = { m_io_gunx1, m_io_guny1, m_io_gunx2, m_io_guny2 }; - return (((m_gdfs_lightgun_select & 1) ? 0 : 0xff) ^ gun[m_gdfs_lightgun_select]->read()) | (m_eeprom->read_bit() << 8); + return (((m_gdfs_lightgun_select & 1) ? 0 : 0xff) ^ gun[m_gdfs_lightgun_select]->read()) | (m_eeprom->do_read() << 8); } WRITE16_MEMBER(ssv_state::gdfs_eeprom_w) @@ -459,13 +459,13 @@ WRITE16_MEMBER(ssv_state::gdfs_eeprom_w) // data & 0x0001 ? // latch the bit - m_eeprom->write_bit(data & 0x4000); + m_eeprom->di_write((data & 0x4000) >> 14); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x1000) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 0x1000) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE ); if (!(m_gdfs_eeprom_old & 0x0800) && (data & 0x0800)) // rising clock m_gdfs_lightgun_select = (data & 0x0300) >> 8; @@ -2634,7 +2634,7 @@ static MACHINE_CONFIG_DERIVED( gdfs, ssv ) MCFG_TIMER_MODIFY("scantimer") MCFG_TIMER_DRIVER_CALLBACK(ssv_state, gdfs_interrupt) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_MODIFY("screen") diff --git a/src/mame/drivers/stlforce.c b/src/mame/drivers/stlforce.c index 69144be5f0e..64671926a32 100644 --- a/src/mame/drivers/stlforce.c +++ b/src/mame/drivers/stlforce.c @@ -78,9 +78,9 @@ WRITE16_MEMBER(stlforce_state::eeprom_w) { if( ACCESSING_BITS_0_7 ) { - m_eeprom->write_bit(data & 0x01); - m_eeprom->set_cs_line((data & 0x02) ? CLEAR_LINE : ASSERT_LINE ); - m_eeprom->set_clock_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->di_write(data & 0x01); + m_eeprom->cs_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -138,7 +138,7 @@ static INPUT_PORTS_START( stlforce ) PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* eeprom */ + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* eeprom */ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END @@ -190,7 +190,7 @@ static MACHINE_CONFIG_START( stlforce, stlforce_state ) MCFG_CPU_PROGRAM_MAP(stlforce_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", stlforce_state, irq4_line_hold) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/stv.c b/src/mame/drivers/stv.c index d7766f1d867..2772252c3b2 100644 --- a/src/mame/drivers/stv.c +++ b/src/mame/drivers/stv.c @@ -954,7 +954,7 @@ static MACHINE_CONFIG_START( stv, stv_state ) MCFG_MACHINE_START_OVERRIDE(stv_state,stv) MCFG_MACHINE_RESET_OVERRIDE(stv_state,stv) - MCFG_EEPROM_93C46_ADD("eeprom") /* Actually 93c45 */ + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* Actually 93c45 */ MCFG_TIMER_DRIVER_ADD("sector_timer", stv_state, stv_sector_cb) MCFG_TIMER_DRIVER_ADD("sh1_cmd", stv_state, stv_sh1_sim) diff --git a/src/mame/drivers/superchs.c b/src/mame/drivers/superchs.c index 629272f772c..25274cad451 100644 --- a/src/mame/drivers/superchs.c +++ b/src/mame/drivers/superchs.c @@ -142,9 +142,9 @@ WRITE32_MEMBER(superchs_state::superchs_input_w) if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data & 0x40); - m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x40) >> 6); + m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); return; } @@ -223,7 +223,7 @@ static INPUT_PORTS_START( superchs ) PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* reserved for EEROM */ + PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* reserved for EEROM */ PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Seat Center") /* seat center (cockpit only) */ PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -303,15 +303,6 @@ GFXDECODE_END MACHINE DRIVERS ***********************************************************/ -static const serial_eeprom_interface superchs_eeprom_interface = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111", /* erase command */ - "0100000000", /* unlock command */ - "0100110000", /* lock command */ -}; - static const tc0480scp_interface superchs_tc0480scp_intf = { 1, 2, /* gfxnum, txnum */ @@ -335,7 +326,7 @@ static MACHINE_CONFIG_START( superchs, superchs_state ) MCFG_QUANTUM_TIME(attotime::from_hz(480)) /* Need to interleave CPU 1 & 3 */ - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, superchs_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/taito_b.c b/src/mame/drivers/taito_b.c index 30aef775232..aeb34c2a9a5 100644 --- a/src/mame/drivers/taito_b.c +++ b/src/mame/drivers/taito_b.c @@ -373,15 +373,6 @@ INPUT_CHANGED_MEMBER(taitob_state::realpunc_sensor) ***************************************************************************/ -static const serial_eeprom_interface taitob_eeprom_intf = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111", /* erase command */ - "0100000000", /* lock command */ - "0100110000" /* unlock command*/ -}; - READ16_MEMBER(taitob_state::eep_latch_r) { return m_eep_latch; @@ -1164,7 +1155,7 @@ static INPUT_PORTS_START( pbobble ) /* Missing P3&4 controls ! */ PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) /*ok*/ PORT_START("COIN") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1224,9 +1215,9 @@ static INPUT_PORTS_START( pbobble ) /* Missing P3&4 controls ! */ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( spacedxo ) @@ -1326,7 +1317,7 @@ static INPUT_PORTS_START( qzshowby ) PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) /*ok*/ PORT_START("COIN") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1386,9 +1377,9 @@ static INPUT_PORTS_START( qzshowby ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( viofight ) @@ -2354,7 +2345,7 @@ static MACHINE_CONFIG_START( pbobble, taitob_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, taitob_eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TC0640FIO_ADD("tc0640fio", pbobble_io_intf) @@ -2402,7 +2393,7 @@ static MACHINE_CONFIG_START( spacedx, taitob_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, taitob_eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TC0640FIO_ADD("tc0640fio", pbobble_io_intf) @@ -2494,7 +2485,7 @@ static MACHINE_CONFIG_START( qzshowby, taitob_state ) MCFG_QUANTUM_TIME(attotime::from_hz(600)) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, taitob_eeprom_intf) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TC0640FIO_ADD("tc0640fio", pbobble_io_intf) diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c index 9e9b2271813..dd3c957dcd9 100644 --- a/src/mame/drivers/taito_f3.c +++ b/src/mame/drivers/taito_f3.c @@ -284,7 +284,7 @@ static INPUT_PORTS_START( f3 ) /* These are not read directly, but through PORT_CUSTOMs above */ PORT_START("EEPROMIN") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) /* Another service mode */ @@ -300,9 +300,9 @@ static INPUT_PORTS_START( f3 ) PORT_BIT( 0xfff, 0x000, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(25) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( kn ) @@ -442,7 +442,7 @@ static MACHINE_CONFIG_START( f3, taito_f3_state ) MCFG_MACHINE_START_OVERRIDE(taito_f3_state,f3) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -487,15 +487,15 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( f3_eeprom, f3 ) MCFG_DEVICE_REMOVE("eeprom") - MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SERIAL_EEPROM_DATA(recalh_eeprom, 128) //TODO: convert this into ROM + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(recalh_eeprom, 128) //TODO: convert this into ROM MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( f3_224b_eeprom, f3 ) MCFG_DEVICE_REMOVE("eeprom") - MCFG_EEPROM_93C46_ADD("eeprom") - MCFG_SERIAL_EEPROM_DATA(recalh_eeprom, 128) //TODO: convert this into ROM + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(recalh_eeprom, 128) //TODO: convert this into ROM MACHINE_CONFIG_END static const gfx_layout bubsympb_sprite_layout = @@ -536,7 +536,7 @@ static MACHINE_CONFIG_START( bubsympb, taito_f3_state ) MCFG_MACHINE_START_OVERRIDE(taito_f3_state,f3) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/taito_z.c b/src/mame/drivers/taito_z.c index 1fa70e64bc6..cc6ed8ba845 100644 --- a/src/mame/drivers/taito_z.c +++ b/src/mame/drivers/taito_z.c @@ -1064,17 +1064,6 @@ static const UINT16 spacegun_default_eeprom[64]= 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff }; -static const serial_eeprom_interface spacegun_eeprom_intf = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111", /* erase command */ - "0100000000", /* lock command */ - "0100111111", /* unlock command */ - 0, /* multi-read disabled */ - 1 /* reset delay */ -}; - #if 0 READ16_MEMBER(taitoz_state::eep_latch_r) @@ -1252,7 +1241,7 @@ READ16_MEMBER(taitoz_state::spacegun_input_bypass_r) switch (offset) { case 0x03: - return m_eeprom->read_bit() << 7; + return m_eeprom->do_read() << 7; default: return m_tc0220ioc->read(space, offset); /* might be a 510NIO ! */ @@ -2667,9 +2656,9 @@ static INPUT_PORTS_START( spacegun ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) PORT_START("STICKX1") PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(13) PORT_CENTERDELTA(0) PORT_REVERSE PORT_PLAYER(1) @@ -3502,8 +3491,8 @@ static MACHINE_CONFIG_START( spacegun, taitoz_state ) MCFG_MACHINE_START_OVERRIDE(taitoz_state,bshark) MCFG_MACHINE_RESET_OVERRIDE(taitoz_state,taitoz) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, spacegun_eeprom_intf) - MCFG_SERIAL_EEPROM_DATA(spacegun_default_eeprom, 128) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_DATA(spacegun_default_eeprom, 128) MCFG_TC0220IOC_ADD("tc0220ioc", taitoz_io220_intf) diff --git a/src/mame/drivers/taitojc.c b/src/mame/drivers/taitojc.c index 536fbf7b59a..538714e6dd9 100644 --- a/src/mame/drivers/taitojc.c +++ b/src/mame/drivers/taitojc.c @@ -1074,7 +1074,7 @@ static INPUT_PORTS_START( common ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("COINS") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_DIPNAME( 0x02, 0x02, "Dev Skip RAM Test" ) // skips mainram test on page 1 of POST PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -1118,9 +1118,9 @@ static INPUT_PORTS_START( common ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("EEPROMOUT") - PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x08000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x08000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END // Mascon must always be in a defined state, Densha de Go 2 in particular returns black screen if the Mascon input is undefined @@ -1273,7 +1273,7 @@ static MACHINE_CONFIG_START( taitojc, taitojc_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_TC0640FIO_ADD("tc0640fio", taitojc_io_intf) diff --git a/src/mame/drivers/tasman.c b/src/mame/drivers/tasman.c index da9f2c0dbb4..4843a0cd2c6 100644 --- a/src/mame/drivers/tasman.c +++ b/src/mame/drivers/tasman.c @@ -237,7 +237,7 @@ static INPUT_PORTS_START( kongambl ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) @@ -526,9 +526,9 @@ static INPUT_PORTS_START( kongambl ) PORT_DIPSETTING( 0x80000000, DEF_STR( On ) ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) INPUT_PORTS_END static void kongambl_sprite_callback( running_machine &machine, int *code, int *color, int *priority_mask ) @@ -597,7 +597,7 @@ static MACHINE_CONFIG_START( kongambl, kongambl_state ) MCFG_CPU_PROGRAM_MAP(kongamaud_map) MCFG_CPU_PERIODIC_INT_DRIVER(kongambl_state, irq2_line_hold, 480) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/tecmosys.c b/src/mame/drivers/tecmosys.c index 31f2c66c8a9..b14c0e88506 100644 --- a/src/mame/drivers/tecmosys.c +++ b/src/mame/drivers/tecmosys.c @@ -269,16 +269,16 @@ READ16_MEMBER(tecmosys_state::unk880000_r) READ16_MEMBER(tecmosys_state::eeprom_r) { - return ((m_eeprom->read_bit() & 0x01) << 11); + return ((m_eeprom->do_read() & 0x01) << 11); } WRITE16_MEMBER(tecmosys_state::eeprom_w) { if ( ACCESSING_BITS_8_15 ) { - m_eeprom->write_bit(data & 0x0800); - m_eeprom->set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE ); - m_eeprom->set_clock_line((data & 0x0400) ? CLEAR_LINE: ASSERT_LINE ); + m_eeprom->di_write((data & 0x0800) >> 11); + m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x0400) ? CLEAR_LINE: ASSERT_LINE ); } } @@ -456,7 +456,7 @@ static MACHINE_CONFIG_START( deroon, tecmosys_state ) MCFG_GFXDECODE(tecmosys) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) diff --git a/src/mame/drivers/tmaster.c b/src/mame/drivers/tmaster.c index dc0252fe635..dbffc77331a 100644 --- a/src/mame/drivers/tmaster.c +++ b/src/mame/drivers/tmaster.c @@ -571,17 +571,6 @@ ADDRESS_MAP_END // NVRAM (5 x EEPROM) -static const serial_eeprom_interface galgames_eeprom_interface = -{ - "*1100", // read 110 0aaaaaaaaaa - "*1010", // write 101 0aaaaaaaaaa dddddddd - "*1110", // erase 111 0aaaaaaaaaa - "*10000xxxxxxxxx", // lock 100 00xxxxxxxxx - "*10011xxxxxxxxx", // unlock 100 11xxxxxxxxx - 0, // multi_read - 1 // reset_delay -}; - #define GALGAMES_EEPROM_BIOS "eeprom_bios" #define GALGAMES_EEPROM_CART1 "eeprom_cart1" #define GALGAMES_EEPROM_CART2 "eeprom_cart2" @@ -592,9 +581,9 @@ static const char *const galgames_eeprom_names[5] = { GALGAMES_EEPROM_BIOS, GALG READ16_MEMBER(tmaster_state::galgames_eeprom_r) { - serial_eeprom_device *eeprom = machine().device<serial_eeprom_device>(galgames_eeprom_names[m_galgames_cart]); + eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[m_galgames_cart]); - return eeprom->read_bit() ? 0x80 : 0x00; + return eeprom->do_read() ? 0x80 : 0x00; } WRITE16_MEMBER(tmaster_state::galgames_eeprom_w) @@ -604,13 +593,13 @@ WRITE16_MEMBER(tmaster_state::galgames_eeprom_w) if ( ACCESSING_BITS_0_7 ) { - serial_eeprom_device *eeprom = machine().device<serial_eeprom_device>(galgames_eeprom_names[m_galgames_cart]); + eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[m_galgames_cart]); // latch the bit - eeprom->write_bit(data & 0x0001); + eeprom->di_write(data & 0x0001); // clock line asserted: write latch or select next bit to read - eeprom->set_clock_line((data & 0x0002) ? ASSERT_LINE : CLEAR_LINE ); + eeprom->clk_write((data & 0x0002) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -677,7 +666,7 @@ WRITE16_MEMBER(tmaster_state::galgames_cart_sel_w) { case 0x07: // 7 resets the eeprom for (i = 0; i < 5; i++) - machine().device<serial_eeprom_device>(galgames_eeprom_names[i])->set_cs_line(ASSERT_LINE); + machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[i])->cs_write(CLEAR_LINE); break; case 0x00: @@ -685,12 +674,12 @@ WRITE16_MEMBER(tmaster_state::galgames_cart_sel_w) case 0x02: case 0x03: case 0x04: - machine().device<serial_eeprom_device>(galgames_eeprom_names[data & 0xff])->set_cs_line(CLEAR_LINE); + machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[data & 0xff])->cs_write(ASSERT_LINE); galgames_update_rombank(data & 0xff); break; default: - machine().device<serial_eeprom_device>(galgames_eeprom_names[0])->set_cs_line(CLEAR_LINE); + machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[0])->cs_write(ASSERT_LINE); galgames_update_rombank(0); logerror("%06x: unknown cart sel = %04x\n", space.device().safe_pc(), data); break; @@ -966,11 +955,11 @@ static MACHINE_CONFIG_START( galgames, tmaster_state ) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmaster_state, tm3k_interrupt, "screen", 0, 1) // 5 EEPROMs on the motherboard (for BIOS + 4 Carts) - MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_BIOS, 1024, 8, galgames_eeprom_interface) - MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_CART1, 1024, 8, galgames_eeprom_interface) - MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_CART2, 1024, 8, galgames_eeprom_interface) - MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_CART3, 1024, 8, galgames_eeprom_interface) - MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_CART4, 1024, 8, galgames_eeprom_interface) + MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_BIOS) + MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART1) + MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART2) + MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART3) + MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART4) MCFG_MACHINE_RESET_OVERRIDE(tmaster_state, galgames ) diff --git a/src/mame/drivers/tmmjprd.c b/src/mame/drivers/tmmjprd.c index 51131f1028a..ec984c76b76 100644 --- a/src/mame/drivers/tmmjprd.c +++ b/src/mame/drivers/tmmjprd.c @@ -78,7 +78,7 @@ public: void ttmjprd_draw_tilemap(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32*tileram, UINT32*tileregs, UINT8*rom ); void tmmjprd_do_blit(); required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; @@ -509,13 +509,13 @@ WRITE32_MEMBER(tmmjprd_state::tmmjprd_eeprom_write) if (mem_mask == 0xff000000) { // latch the bit - m_eeprom->write_bit(data & 0x01000000); + m_eeprom->di_write((data & 0x01000000) >> 24); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x04000000) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->cs_write((data & 0x04000000) ? ASSERT_LINE : CLEAR_LINE ); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -544,7 +544,7 @@ static INPUT_PORTS_START( tmmjprd ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("Right Screen Coin B") // might actually be service 1 PORT_SERVICE( 0x20, IP_ACTIVE_LOW ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // CHECK! + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // CHECK! PORT_START("PL1_1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(1) @@ -753,7 +753,7 @@ static MACHINE_CONFIG_START( tmmjprd, tmmjprd_state ) MCFG_CPU_PROGRAM_MAP(tmmjprd_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmmjprd_state, tmmjprd_scanline, "lscreen", 0, 1) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_GFXDECODE(tmmjprd) diff --git a/src/mame/drivers/tmnt.c b/src/mame/drivers/tmnt.c index 90eb416bc5b..0da00106f72 100644 --- a/src/mame/drivers/tmnt.c +++ b/src/mame/drivers/tmnt.c @@ -403,16 +403,6 @@ WRITE16_MEMBER(tmnt_state::ssriders_protection_w) ***************************************************************************/ -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - 0, /* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - - READ16_MEMBER(tmnt_state::blswhstl_coin_r) { int res; @@ -464,15 +454,6 @@ WRITE16_MEMBER(tmnt_state::blswhstl_eeprom_w) } } -static const serial_eeprom_interface thndrx2_eeprom_intf = -{ - "011000", /* read command */ - "010100", /* write command */ - 0, /* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - READ16_MEMBER(tmnt_state::thndrx2_eeprom_r) { int res; @@ -1620,14 +1601,14 @@ static INPUT_PORTS_START( blswhstl ) KONAMI16_LSB( 2, IPT_UNKNOWN, IPT_UNKNOWN ) PORT_START("EEPROM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM status? - always 1 */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END static INPUT_PORTS_START( glfgreat ) @@ -1764,8 +1745,8 @@ static INPUT_PORTS_START( ssriders ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("EEPROM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM status? - always 1 */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* ?? TMNT2: OBJMPX */ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* ?? TMNT2: NVBLK */ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* ?? TMNT2: IPL0 */ @@ -1773,9 +1754,9 @@ static INPUT_PORTS_START( ssriders ) PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END static INPUT_PORTS_START( ssridr4p ) @@ -1802,8 +1783,8 @@ static INPUT_PORTS_START( ssridr4p ) KONAMI16_LSB( 4, IPT_UNKNOWN, IPT_UNKNOWN ) PORT_START("EEPROM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM status? - always 1 */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* ?? TMNT2: OBJMPX */ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* ?? TMNT2: NVBLK */ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* ?? TMNT2: IPL0 */ @@ -1811,9 +1792,9 @@ static INPUT_PORTS_START( ssridr4p ) PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END /* Same as 'ssridr4p', but additional Start button for each player. @@ -1842,8 +1823,8 @@ static INPUT_PORTS_START( ssrid4ps ) KONAMI16_LSB( 4, IPT_UNKNOWN, IPT_START4 ) PORT_START("EEPROM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM status? - always 1 */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* ?? TMNT2: OBJMPX */ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* ?? TMNT2: NVBLK */ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* ?? TMNT2: IPL0 */ @@ -1851,9 +1832,9 @@ static INPUT_PORTS_START( ssrid4ps ) PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END /* Version for the bootleg, which has the service switch a little different */ @@ -1881,16 +1862,16 @@ static INPUT_PORTS_START( sunsetbl ) KONAMI16_LSB( 4, IPT_UNKNOWN, IPT_START4 ) PORT_START("EEPROM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM status? - always 1 */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END static INPUT_PORTS_START( qgakumon ) @@ -1931,8 +1912,8 @@ static INPUT_PORTS_START( qgakumon ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("EEPROM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM status? - always 1 */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* ?? TMNT2: OBJMPX */ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* ?? TMNT2: NVBLK (needs to be ACTIVE_HIGH to avoid problems) */ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* ?? TMNT2: IPL0 */ @@ -1940,9 +1921,9 @@ static INPUT_PORTS_START( qgakumon ) PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END static INPUT_PORTS_START( thndrx2 ) @@ -1959,8 +1940,8 @@ static INPUT_PORTS_START( thndrx2 ) PORT_START("P2/EEPROM") KONAMI16_LSB( 2, IPT_UNKNOWN, IPT_START2 ) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM status? - always 1 */ + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* VBLK?? */ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -1969,9 +1950,9 @@ static INPUT_PORTS_START( thndrx2 ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END static INPUT_PORTS_START( prmrsocr ) @@ -1990,8 +1971,8 @@ static INPUT_PORTS_START( prmrsocr ) PORT_START("P2/EEPROM") KONAMI16_LSB( 2, IPT_UNKNOWN, IPT_START2 ) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM status? - always 1 */ + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -2000,9 +1981,9 @@ static INPUT_PORTS_START( prmrsocr ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END @@ -2436,7 +2417,7 @@ static MACHINE_CONFIG_START( blswhstl, tmnt_state ) MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK) @@ -2565,7 +2546,7 @@ static MACHINE_CONFIG_START( prmrsocr, tmnt_state ) MCFG_MACHINE_START_OVERRIDE(tmnt_state,prmrsocr) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, thndrx2_eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK) @@ -2614,7 +2595,7 @@ static MACHINE_CONFIG_START( tmnt2, tmnt_state ) MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK) @@ -2661,7 +2642,7 @@ static MACHINE_CONFIG_START( ssriders, tmnt_state ) MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK) @@ -2704,7 +2685,7 @@ static MACHINE_CONFIG_START( sunsetbl, tmnt_state ) MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK) @@ -2744,7 +2725,7 @@ static MACHINE_CONFIG_START( thndrx2, tmnt_state ) MCFG_MACHINE_START_OVERRIDE(tmnt_state,common) MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, thndrx2_eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS) diff --git a/src/mame/drivers/toaplan2.c b/src/mame/drivers/toaplan2.c index 2c772dcc204..ef5308da56d 100644 --- a/src/mame/drivers/toaplan2.c +++ b/src/mame/drivers/toaplan2.c @@ -946,21 +946,6 @@ WRITE8_MEMBER(toaplan2_state::batrider_clear_nmi_w) } -static const serial_eeprom_interface bbakraid_93C66_intf = -{ - // Pin 6 of the 93C66 is connected to Gnd! - // So it's configured for 512 bytes - - "*110", // read 110 aaaaaaaaa - "*101", // write 101 aaaaaaaaa dddddddd - "*111", // erase 111 aaaaaaaaa - "*10000xxxxxxx",// lock 100x 00xxxx - "*10011xxxxxxx",// unlock 100x 11xxxx -// "*10001xxxx", // write all 1 00 01xxxx dddddddd -// "*10010xxxx" // erase all 1 00 10xxxx -}; - - READ16_MEMBER(toaplan2_state::bbakraid_eeprom_r) { // Bit 0x01 returns the status of BUSAK from the Z80. @@ -969,7 +954,7 @@ READ16_MEMBER(toaplan2_state::bbakraid_eeprom_r) // ROM code. Failure to return the correct status incurrs a Sound Error. int data; - data = ((m_eeprom->read_bit() & 0x01) << 4); + data = ((m_eeprom->do_read() & 0x01) << 4); data |= ((m_z80_busreq >> 4) & 0x01); // Loop BUSRQ to BUSAK return data; @@ -2085,10 +2070,10 @@ static INPUT_PORTS_START( fixeight ) PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused PORT_START("EEPROM") - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) INPUT_PORTS_END @@ -2764,9 +2749,9 @@ static INPUT_PORTS_START( bbakraid ) PORT_DIPSETTING( 0x8000, DEF_STR( On ) ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) + PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) INPUT_PORTS_END @@ -3331,7 +3316,7 @@ static MACHINE_CONFIG_START( fixeight, toaplan2_state ) MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) @@ -3725,7 +3710,7 @@ static MACHINE_CONFIG_START( bbakraid, toaplan2_state ) MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2) MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2) - MCFG_SERIAL_EEPROM_ADD("eeprom", 512, 8, bbakraid_93C66_intf) + MCFG_EEPROM_SERIAL_93C66_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) diff --git a/src/mame/drivers/ultrsprt.c b/src/mame/drivers/ultrsprt.c index 7e469c99ead..4322971d7e4 100644 --- a/src/mame/drivers/ultrsprt.c +++ b/src/mame/drivers/ultrsprt.c @@ -185,13 +185,13 @@ static INPUT_PORTS_START( ultrsprt ) PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_START2 ) PORT_START("SERVICE") - PORT_BIT( 0x02000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x02000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_SERVICE_NO_TOGGLE( 0x08000000, IP_ACTIVE_LOW ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) PORT_START("STICKX1") PORT_BIT( 0xfff, 0x800, IPT_AD_STICK_X ) PORT_MINMAX(0x000,0xfff) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) PORT_PLAYER(1) @@ -240,7 +240,7 @@ static MACHINE_CONFIG_START( ultrsprt, ultrsprt_state ) MCFG_QUANTUM_TIME(attotime::from_hz(12000)) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/undrfire.c b/src/mame/drivers/undrfire.c index 60f0d78b229..da0c40eaa3f 100644 --- a/src/mame/drivers/undrfire.c +++ b/src/mame/drivers/undrfire.c @@ -238,20 +238,6 @@ void undrfire_state::device_timer(emu_timer &timer, device_timer_id id, int para /********************************************************** - EPROM -**********************************************************/ - -static const serial_eeprom_interface undrfire_eeprom_interface = -{ - "0110", /* read command */ - "0101", /* write command */ - "0111", /* erase command */ - "0100000000", /* unlock command */ - "0100110000", /* lock command */ -}; - - -/********************************************************** GAME INPUTS **********************************************************/ @@ -291,9 +277,9 @@ WRITE32_MEMBER(undrfire_state::undrfire_input_w) if (ACCESSING_BITS_0_7) { - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->write_bit(data & 0x40); - m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x40) >> 6); + m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE); return; } @@ -536,7 +522,7 @@ static INPUT_PORTS_START( undrfire ) PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* reserved for EEROM */ + PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* reserved for EEROM */ PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -604,7 +590,7 @@ static INPUT_PORTS_START( cbombers ) PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* reserved for EEROM */ + PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* reserved for EEROM */ PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -732,7 +718,7 @@ static MACHINE_CONFIG_START( undrfire, undrfire_state ) MCFG_CPU_PROGRAM_MAP(undrfire_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", undrfire_state, undrfire_interrupt) - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, undrfire_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -767,7 +753,7 @@ static MACHINE_CONFIG_START( cbombers, undrfire_state ) MCFG_QUANTUM_TIME(attotime::from_hz(480)) /* CPU slices - Need to interleave Cpu's 1 & 3 */ - MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, undrfire_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/unico.c b/src/mame/drivers/unico.c index 1a0a9b8677f..ee52f812f45 100644 --- a/src/mame/drivers/unico.c +++ b/src/mame/drivers/unico.c @@ -204,13 +204,13 @@ WRITE32_MEMBER(unico_state::zeropnt2_eeprom_w) if ( ACCESSING_BITS_24_31 ) { // latch the bit - m_eeprom->write_bit(data & 0x04000000); + m_eeprom->di_write((data & 0x04000000) >> 26); // reset line asserted: reset. - m_eeprom->set_cs_line((data & 0x01000000) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x01000000) ? ASSERT_LINE : CLEAR_LINE); // clock line asserted: write latch or select next bit to read - m_eeprom->set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE ); } } @@ -507,7 +507,7 @@ static INPUT_PORTS_START( zeropnt2 ) PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // EEPROM + PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // EEPROM PORT_START("Y0") /* $800140.b */ PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(2) @@ -567,18 +567,6 @@ MACHINE_RESET_MEMBER(unico_state,unico) } -static const serial_eeprom_interface zeropnt2_eeprom_interface = -{ - "*110", // read 1 10 aaaaaaa - "*101", // write 1 01 aaaaaaa dddddddd - "*111", // erase 1 11 aaaaaaa - "*10000xxxx", // lock 1 00 00xxxx - "*10011xxxx", // unlock 1 00 11xxxx -// "*10001xxxx" // write all 1 00 01xxxx dddddddd -// "*10010xxxx" // erase all 1 00 10xxxx -}; - - /*************************************************************************** Burglar X ***************************************************************************/ @@ -677,7 +665,7 @@ static MACHINE_CONFIG_START( zeropnt2, unico_state ) MCFG_MACHINE_RESET_OVERRIDE(unico_state,zeropt) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, zeropnt2_eeprom_interface) + MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/vamphalf.c b/src/mame/drivers/vamphalf.c index 2bb718ef194..a040b865780 100644 --- a/src/mame/drivers/vamphalf.c +++ b/src/mame/drivers/vamphalf.c @@ -173,14 +173,14 @@ public: required_device<cpu_device> m_maincpu; optional_device<okim6295_device> m_oki; optional_device<okim6295_device> m_oki2; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; READ16_MEMBER(vamphalf_state::eeprom_r) { if(offset) { - return m_eeprom->read_bit(); + return m_eeprom->do_read(); } else return 0; @@ -188,16 +188,16 @@ READ16_MEMBER(vamphalf_state::eeprom_r) READ32_MEMBER(vamphalf_state::eeprom32_r) { - return m_eeprom->read_bit(); + return m_eeprom->do_read(); } WRITE16_MEMBER(vamphalf_state::eeprom_w) { if(offset) { - m_eeprom->write_bit(data & 0x01); - m_eeprom->set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE ); - m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->di_write(data & 0x01); + m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); // data & 8? } @@ -205,16 +205,16 @@ WRITE16_MEMBER(vamphalf_state::eeprom_w) WRITE32_MEMBER(vamphalf_state::eeprom32_w) { - m_eeprom->write_bit(data & 0x01); - m_eeprom->set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE ); - m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->di_write(data & 0x01); + m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE ); } WRITE32_MEMBER(vamphalf_state::finalgdr_eeprom_w) { - m_eeprom->write_bit(data & 0x4000); - m_eeprom->set_cs_line((data & 0x1000) ? CLEAR_LINE : ASSERT_LINE ); - m_eeprom->set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->di_write((data & 0x4000) >> 14); + m_eeprom->cs_write((data & 0x1000) ? ASSERT_LINE : CLEAR_LINE ); + m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE ); } WRITE16_MEMBER(vamphalf_state::flipscreen_w) @@ -885,7 +885,7 @@ static INPUT_PORTS_START( aoh ) PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // eeprom bit + PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // eeprom bit PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -982,7 +982,7 @@ static MACHINE_CONFIG_START( common, vamphalf_state ) MCFG_CPU_PROGRAM_MAP(common_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", vamphalf_state, irq1_line_hold) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -1113,7 +1113,7 @@ static MACHINE_CONFIG_START( aoh, vamphalf_state ) MCFG_CPU_IO_MAP(aoh_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", vamphalf_state, irq1_line_hold) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/vendetta.c b/src/mame/drivers/vendetta.c index 50e8337c900..35d97bfe2f2 100644 --- a/src/mame/drivers/vendetta.c +++ b/src/mame/drivers/vendetta.c @@ -105,15 +105,6 @@ static KONAMI_SETLINES_CALLBACK( vendetta_banking ); ***************************************************************************/ -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - 0, /* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - WRITE8_MEMBER(vendetta_state::vendetta_eeprom_w) { /* bit 0 - VOC0 - Video banking related */ @@ -318,16 +309,16 @@ static INPUT_PORTS_START( vendet4p ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("EEPROM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* EEPROM ready */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* not really vblank, object related. Its timed, otherwise sprites flicker */ PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) INPUT_PORTS_END static INPUT_PORTS_START( vendetta ) @@ -374,16 +365,16 @@ static INPUT_PORTS_START( esckids ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("EEPROM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* EEPROM ready */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* not really vblank, object related. Its timed, otherwise sprites flicker */ PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) INPUT_PORTS_END static INPUT_PORTS_START( esckidsj ) @@ -496,8 +487,7 @@ static MACHINE_CONFIG_START( vendetta, vendetta_state ) MCFG_CPU_PROGRAM_MAP(sound_map) /* interrupts are triggered by the main CPU */ - - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS) diff --git a/src/mame/drivers/wheelfir.c b/src/mame/drivers/wheelfir.c index ba6187fb8a5..e8798eecf56 100644 --- a/src/mame/drivers/wheelfir.c +++ b/src/mame/drivers/wheelfir.c @@ -818,7 +818,7 @@ static MACHINE_CONFIG_START( wheelfir, wheelfir_state ) MCFG_PALETTE_LENGTH(NUM_COLORS) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") diff --git a/src/mame/drivers/xexex.c b/src/mame/drivers/xexex.c index 446564d1ecf..71f5f64d829 100644 --- a/src/mame/drivers/xexex.c +++ b/src/mame/drivers/xexex.c @@ -72,15 +72,6 @@ Unresolved Issues: #define XE_SKIPIDLE 1 #define XE_DMADELAY attotime::from_usec(256) -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - "0100100000000",/* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - #if 0 // (for reference; do not remove) /* the interface with the 053247 is weird. The chip can address only 0x1000 bytes */ @@ -377,16 +368,16 @@ static INPUT_PORTS_START( xexex ) KONAMI16_LSB(2, IPT_UNKNOWN, IPT_START2 ) PORT_START("EEPROM") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL ) /* EEPROM ready (always 1) */ + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW ) PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) INPUT_PORTS_END @@ -492,8 +483,7 @@ static MACHINE_CONFIG_START( xexex, xexex_state ) MCFG_QUANTUM_TIME(attotime::from_hz(1920)) - - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK) diff --git a/src/mame/drivers/xmen.c b/src/mame/drivers/xmen.c index 7cdc533a97e..5267ac7d09f 100644 --- a/src/mame/drivers/xmen.c +++ b/src/mame/drivers/xmen.c @@ -30,15 +30,6 @@ likewise be a 2 screen game ***************************************************************************/ -static const serial_eeprom_interface eeprom_intf = -{ - "011000", /* read command */ - "011100", /* write command */ - 0, /* erase command */ - "0100000000000",/* lock command */ - "0100110000000" /* unlock command */ -}; - WRITE16_MEMBER(xmen_state::eeprom_w) { logerror("%06x: write %04x to 108000\n",space.device().safe_pc(),data); @@ -204,8 +195,8 @@ static INPUT_PORTS_START( xmen ) PORT_START("EEPROM") PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* EEPROM status - always 1 */ + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START3 ) @@ -215,9 +206,9 @@ static INPUT_PORTS_START( xmen ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) INPUT_PORTS_END static INPUT_PORTS_START( xmen2p ) @@ -233,8 +224,8 @@ static INPUT_PORTS_START( xmen2p ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_BIT( 0x003c, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* EEPROM status - always 1 */ + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -244,9 +235,9 @@ static INPUT_PORTS_START( xmen2p ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) INPUT_PORTS_END CUSTOM_INPUT_MEMBER(xmen_state::xmen_frame_r) @@ -269,8 +260,8 @@ static INPUT_PORTS_START( xmen6p ) PORT_START("EEPROM") PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* unused? */ - PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* EEPROM status - always 1 */ + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START3 ) @@ -281,9 +272,9 @@ static INPUT_PORTS_START( xmen6p ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xmen_state,xmen_frame_r, NULL) /* screen indicator? */ PORT_START( "EEPROMOUT" ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write) INPUT_PORTS_END @@ -358,8 +349,7 @@ static MACHINE_CONFIG_START( xmen, xmen_state ) MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/2) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(sound_map) - - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS) @@ -408,7 +398,7 @@ static MACHINE_CONFIG_START( xmen6p, xmen_state ) MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf) + MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom") /* video hardware */ MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS) diff --git a/src/mame/drivers/xorworld.c b/src/mame/drivers/xorworld.c index decd91b50c1..c7ddce6d3f1 100644 --- a/src/mame/drivers/xorworld.c +++ b/src/mame/drivers/xorworld.c @@ -47,19 +47,19 @@ EEPROM chip: 93C46 WRITE16_MEMBER(xorworld_state::eeprom_chip_select_w) { /* bit 0 is CS (active low) */ - m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); } WRITE16_MEMBER(xorworld_state::eeprom_serial_clock_w) { /* bit 0 is SK (active high) */ - m_eeprom->set_clock_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); } WRITE16_MEMBER(xorworld_state::eeprom_data_w) { /* bit 0 is EEPROM data (DIN) */ - m_eeprom->write_bit(data & 0x01); + m_eeprom->di_write(data & 0x01); } WRITE16_MEMBER(xorworld_state::xorworld_irq2_ack_w) @@ -104,7 +104,7 @@ static INPUT_PORTS_START( xorworld ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* used for accessing the NVRAM */ + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* used for accessing the NVRAM */ PORT_DIPNAME( 0x60, 0x40, DEF_STR( Difficulty ) ) PORT_DIPSETTING( 0x40, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x60, DEF_STR( Normal ) ) @@ -174,7 +174,7 @@ static MACHINE_CONFIG_START( xorworld, xorworld_state ) MCFG_QUANTUM_TIME(attotime::from_hz(60)) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") // video hardware MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/zr107.c b/src/mame/drivers/zr107.c index a5ee1ebcc6a..4c8a0048c33 100644 --- a/src/mame/drivers/zr107.c +++ b/src/mame/drivers/zr107.c @@ -548,12 +548,12 @@ static INPUT_PORTS_START( zr107 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* PARAACK */ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("adc0838", adc083x_device, sars_read) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) PORT_START("EEPROMOUT") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line) + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) PORT_START("OUT4") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("adc0838", adc083x_device, cs_write) @@ -768,7 +768,7 @@ static MACHINE_CONFIG_START( zr107, zr107_state ) MCFG_QUANTUM_TIME(attotime::from_hz(30000)) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_K056230_ADD("k056230", zr107_k056230_intf) @@ -826,7 +826,7 @@ static MACHINE_CONFIG_START( jetwave, zr107_state ) MCFG_QUANTUM_TIME(attotime::from_hz(30000)) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MCFG_K056230_ADD("k056230", zr107_k056230_intf) diff --git a/src/mame/includes/20pacgal.h b/src/mame/includes/20pacgal.h index 5c69a81e7ab..6e7630df8e6 100644 --- a/src/mame/includes/20pacgal.h +++ b/src/mame/includes/20pacgal.h @@ -33,7 +33,7 @@ public: /* devices */ required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; /* memory */ UINT8 m_sprite_gfx_ram[0x2000]; diff --git a/src/mame/includes/8080bw.h b/src/mame/includes/8080bw.h index a7b07c3f353..7d6fbe2062a 100644 --- a/src/mame/includes/8080bw.h +++ b/src/mame/includes/8080bw.h @@ -28,7 +28,7 @@ public: optional_device<timer_device> m_claybust_gun_on; optional_device<discrete_device> m_discrete; optional_device<speaker_sound_device> m_speaker; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; /* misc game specific */ diff --git a/src/mame/includes/cave.h b/src/mame/includes/cave.h index d9914ece9fd..98f41d9805b 100644 --- a/src/mame/includes/cave.h +++ b/src/mame/includes/cave.h @@ -215,7 +215,7 @@ public: void sailormn_tilebank_w(int bank); DECLARE_WRITE_LINE_MEMBER(irqhandler); DECLARE_WRITE_LINE_MEMBER(sound_irq_gen); - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; private: inline void get_tile_info( tile_data &tileinfo, int tile_index, int GFX ); diff --git a/src/mame/includes/centiped.h b/src/mame/includes/centiped.h index 91a6d4c4fbb..652effb103f 100644 --- a/src/mame/includes/centiped.h +++ b/src/mame/includes/centiped.h @@ -3,6 +3,7 @@ Atari Centipede hardware *************************************************************************/ + #include "machine/eepromser.h" class centiped_state : public driver_device @@ -87,5 +88,5 @@ public: void milliped_set_color(offs_t offset, UINT8 data); inline int read_trackball(int idx, int switch_port); required_device<cpu_device> m_maincpu; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; }; diff --git a/src/mame/includes/deco32.h b/src/mame/includes/deco32.h index 1a880240666..5bce0264f7e 100644 --- a/src/mame/includes/deco32.h +++ b/src/mame/includes/deco32.h @@ -52,7 +52,7 @@ public: optional_device<decospr_device> m_sprgen1; optional_device<decospr_device> m_sprgen2; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; optional_device<okim6295_device> m_oki1; optional_device<okim6295_device> m_oki2; diff --git a/src/mame/includes/deco_mlc.h b/src/mame/includes/deco_mlc.h index 4cd042fab21..71cdb94ca8e 100644 --- a/src/mame/includes/deco_mlc.h +++ b/src/mame/includes/deco_mlc.h @@ -64,7 +64,7 @@ public: void draw_sprites( const rectangle &cliprect, int scanline, UINT32* dest); void descramble_sound( ); required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_READ16_MEMBER( sh96_protection_region_0_146_r ); DECLARE_WRITE16_MEMBER( sh96_protection_region_0_146_w ); diff --git a/src/mame/includes/dkong.h b/src/mame/includes/dkong.h index 4547df8f465..06f7e824f16 100644 --- a/src/mame/includes/dkong.h +++ b/src/mame/includes/dkong.h @@ -97,7 +97,7 @@ public: /* devices */ required_device<cpu_device> m_maincpu; optional_device<cpu_device> m_soundcpu; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; optional_device<cpu_device> m_dev_n2a03a; optional_device<cpu_device> m_dev_n2a03b; optional_device<m58819_device> m_m58819; diff --git a/src/mame/includes/esd16.h b/src/mame/includes/esd16.h index 0263a0e4a84..8853aa85573 100644 --- a/src/mame/includes/esd16.h +++ b/src/mame/includes/esd16.h @@ -49,7 +49,7 @@ public: int m_tilemap1_color; /* devices */ - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_WRITE16_MEMBER(esd16_sound_command_w); DECLARE_WRITE16_MEMBER(hedpanic_platform_w); DECLARE_READ16_MEMBER(esd_eeprom_r); diff --git a/src/mame/includes/fromanc2.h b/src/mame/includes/fromanc2.h index ca4cbded586..69bd8c43a82 100644 --- a/src/mame/includes/fromanc2.h +++ b/src/mame/includes/fromanc2.h @@ -33,7 +33,7 @@ public: /* devices */ required_device<cpu_device> m_audiocpu; optional_device<cpu_device> m_subcpu; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_WRITE16_MEMBER(fromanc2_sndcmd_w); DECLARE_WRITE16_MEMBER(fromanc2_portselect_w); DECLARE_READ16_MEMBER(fromanc2_keymatrix_r); diff --git a/src/mame/includes/gaelco2.h b/src/mame/includes/gaelco2.h index b30a7d53ea5..7bda0111a61 100644 --- a/src/mame/includes/gaelco2.h +++ b/src/mame/includes/gaelco2.h @@ -17,7 +17,7 @@ public: required_device<buffered_spriteram16_device> m_spriteram; required_shared_ptr<UINT16> m_vregs; optional_shared_ptr<UINT16> m_snowboar_protection; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; int m_clr_gun_int; UINT8 m_analog_ports[2]; diff --git a/src/mame/includes/gaelco3d.h b/src/mame/includes/gaelco3d.h index 40c267b1155..acb31fd4789 100644 --- a/src/mame/includes/gaelco3d.h +++ b/src/mame/includes/gaelco3d.h @@ -72,7 +72,7 @@ public: required_shared_ptr<UINT16> m_adsp_fastram_base; required_device<cpu_device> m_maincpu; required_device<cpu_device> m_adsp; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; required_device<cpu_device> m_tms; required_device<gaelco_serial_device> m_serial; UINT16 m_sound_data; diff --git a/src/mame/includes/galastrm.h b/src/mame/includes/galastrm.h index b44fd2db631..07333d2f845 100644 --- a/src/mame/includes/galastrm.h +++ b/src/mame/includes/galastrm.h @@ -34,7 +34,7 @@ public: required_shared_ptr<UINT32> m_spriteram; required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; required_device<tc0100scn_device> m_tc0100scn; required_device<tc0480scp_device> m_tc0480scp; UINT16 m_coin_word; diff --git a/src/mame/includes/galpani2.h b/src/mame/includes/galpani2.h index 6bb66d1effc..dff5941f29b 100644 --- a/src/mame/includes/galpani2.h +++ b/src/mame/includes/galpani2.h @@ -71,5 +71,5 @@ public: DECLARE_WRITE16_MEMBER( galpani2_bg15_w ); required_device<okim6295_device> m_oki2; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; diff --git a/src/mame/includes/gunbustr.h b/src/mame/includes/gunbustr.h index 9f537e2490a..41e3e92abdc 100644 --- a/src/mame/includes/gunbustr.h +++ b/src/mame/includes/gunbustr.h @@ -34,7 +34,7 @@ public: required_device<tc0480scp_device> m_tc0480scp; required_shared_ptr<UINT32> m_ram; required_shared_ptr<UINT32> m_spriteram; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; bool m_coin_lockout; UINT16 m_coin_word; diff --git a/src/mame/includes/jaguar.h b/src/mame/includes/jaguar.h index 4047dacb073..db4930cb009 100644 --- a/src/mame/includes/jaguar.h +++ b/src/mame/includes/jaguar.h @@ -322,6 +322,6 @@ protected: emu_file *jaguar_nvram_fopen( UINT32 openflags); void jaguar_nvram_load(); void jaguar_nvram_save(); - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; optional_device<vt83c461_device> m_ide; }; diff --git a/src/mame/includes/kaneko16.h b/src/mame/includes/kaneko16.h index ea2caf79208..4c3f7f6119d 100644 --- a/src/mame/includes/kaneko16.h +++ b/src/mame/includes/kaneko16.h @@ -14,7 +14,6 @@ #include "machine/kaneko_calc3.h" #include "machine/kaneko_toybox.h" #include "sound/okim6295.h" -#include "machine/eepromser.h" class kaneko16_state : public driver_device @@ -27,7 +26,6 @@ public: m_oki(*this, "oki"), m_oki1(*this, "oki1"), m_oki2(*this, "oki2"), - m_eeprom(*this, "eeprom"), m_spriteram(*this, "spriteram"), m_mainram(*this, "mainram"), m_view2_0(*this, "view2_0"), @@ -41,7 +39,6 @@ public: optional_device<okim6295_device> m_oki; optional_device<okim6295_device> m_oki1; optional_device<okim6295_device> m_oki2; - optional_device<serial_eeprom_device> m_eeprom; optional_shared_ptr<UINT16> m_spriteram; optional_shared_ptr<UINT16> m_mainram; optional_device<kaneko_view2_tilemap_device> m_view2_0; @@ -67,8 +64,6 @@ public: DECLARE_WRITE16_MEMBER(kaneko16_ay2_YM2149_w); DECLARE_WRITE16_MEMBER(bakubrkr_oki_bank_sw); - DECLARE_WRITE8_MEMBER(kaneko16_eeprom_reset_w); - DECLARE_DRIVER_INIT(kaneko16); DECLARE_DRIVER_INIT(samplebank); diff --git a/src/mame/includes/kickgoal.h b/src/mame/includes/kickgoal.h index 555beb1db5b..e2887caa5e4 100644 --- a/src/mame/includes/kickgoal.h +++ b/src/mame/includes/kickgoal.h @@ -56,7 +56,7 @@ public: /* devices */ required_device<okim6295_device> m_adpcm; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_READ16_MEMBER(kickgoal_eeprom_r); DECLARE_WRITE16_MEMBER(kickgoal_eeprom_w); DECLARE_WRITE16_MEMBER(kickgoal_fgram_w); diff --git a/src/mame/includes/leland.h b/src/mame/includes/leland.h index efa53cf36a0..3d462096995 100644 --- a/src/mame/includes/leland.h +++ b/src/mame/includes/leland.h @@ -29,7 +29,7 @@ public: required_device<cpu_device> m_master; required_device<cpu_device> m_slave; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; UINT8 m_dac_control; UINT8 *m_alleymas_kludge_mem; diff --git a/src/mame/includes/lordgun.h b/src/mame/includes/lordgun.h index 8bcef123bb7..45f435c91a0 100644 --- a/src/mame/includes/lordgun.h +++ b/src/mame/includes/lordgun.h @@ -83,7 +83,7 @@ public: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_soundcpu; required_device<okim6295_device> m_oki; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; /*----------- defined in video/lordgun.c -----------*/ diff --git a/src/mame/includes/metro.h b/src/mame/includes/metro.h index 4647e3f6fdf..bf8760ab43e 100644 --- a/src/mame/includes/metro.h +++ b/src/mame/includes/metro.h @@ -70,7 +70,7 @@ public: optional_shared_ptr<UINT16> m_input_sel; optional_shared_ptr<UINT16> m_k053936_ram; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; int m_flip_screen; diff --git a/src/mame/includes/mitchell.h b/src/mame/includes/mitchell.h index b2c35268def..f98a56ae58c 100644 --- a/src/mame/includes/mitchell.h +++ b/src/mame/includes/mitchell.h @@ -32,7 +32,7 @@ public: required_shared_ptr<UINT8> m_colorram; required_shared_ptr<UINT8> m_videoram; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; optional_device<msm5205_device> m_msm; /* video-related */ diff --git a/src/mame/includes/model2.h b/src/mame/includes/model2.h index af599c936c0..8555edde644 100644 --- a/src/mame/includes/model2.h +++ b/src/mame/includes/model2.h @@ -180,7 +180,7 @@ public: optional_device<cpu_device> m_tgp; optional_device<cpu_device> m_dsp; optional_device<cpu_device> m_drivecpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; /*----------- defined in video/model2.c -----------*/ diff --git a/src/mame/includes/model3.h b/src/mame/includes/model3.h index 315914f7040..dba663a754c 100644 --- a/src/mame/includes/model3.h +++ b/src/mame/includes/model3.h @@ -209,7 +209,7 @@ public: void model3_exit(); DECLARE_WRITE_LINE_MEMBER(scsp_irq); required_device<cpu_device> m_audiocpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; diff --git a/src/mame/includes/naomi.h b/src/mame/includes/naomi.h index 554b136f496..977aaad3139 100644 --- a/src/mame/includes/naomi.h +++ b/src/mame/includes/naomi.h @@ -29,7 +29,7 @@ class naomi_state : public dc_state optional_shared_ptr<UINT64> pvr2_framebuffer_ram; optional_shared_ptr<UINT64> elan_ram; optional_device<macronix_29l001mc_device> m_awflash; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_WRITE_LINE_MEMBER(aica_irq); DECLARE_MACHINE_RESET(naomi); diff --git a/src/mame/includes/othunder.h b/src/mame/includes/othunder.h index 933e8f493da..8081a7193ef 100644 --- a/src/mame/includes/othunder.h +++ b/src/mame/includes/othunder.h @@ -63,7 +63,7 @@ public: /* devices */ required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; required_device<tc0220ioc_device> m_tc0220ioc; required_device<tc0100scn_device> m_tc0100scn; required_device<tc0110pcr_device> m_tc0110pcr; diff --git a/src/mame/includes/pirates.h b/src/mame/includes/pirates.h index dc77e781bce..9defe75c872 100644 --- a/src/mame/includes/pirates.h +++ b/src/mame/includes/pirates.h @@ -42,6 +42,6 @@ public: void pirates_decrypt_s(); void pirates_decrypt_oki(); required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; required_device<okim6295_device> m_oki; }; diff --git a/src/mame/includes/playmark.h b/src/mame/includes/playmark.h index ef7e41a48b1..a1bf4d14be7 100644 --- a/src/mame/includes/playmark.h +++ b/src/mame/includes/playmark.h @@ -53,7 +53,7 @@ public: /* devices */ required_device<okim6295_device> m_oki; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_WRITE16_MEMBER(coinctrl_w); DECLARE_WRITE16_MEMBER(wbeachvl_coin_eeprom_w); DECLARE_WRITE16_MEMBER(hotmind_coin_eeprom_w); diff --git a/src/mame/includes/plygonet.h b/src/mame/includes/plygonet.h index 5b2f6309e5c..a8a6a24d4c8 100644 --- a/src/mame/includes/plygonet.h +++ b/src/mame/includes/plygonet.h @@ -26,7 +26,7 @@ public: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_dsp; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; required_device<k053936_device> m_k053936; /* 68k-side shared ram */ diff --git a/src/mame/includes/policetr.h b/src/mame/includes/policetr.h index 9adb4c50b24..070955697c9 100644 --- a/src/mame/includes/policetr.h +++ b/src/mame/includes/policetr.h @@ -57,7 +57,7 @@ public: INTERRUPT_GEN_MEMBER(irq4_gen); void render_display_list(offs_t offset); required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); diff --git a/src/mame/includes/psikyo4.h b/src/mame/includes/psikyo4.h index 97f4bbfbde0..9ff574cda0a 100644 --- a/src/mame/includes/psikyo4.h +++ b/src/mame/includes/psikyo4.h @@ -37,7 +37,7 @@ public: /* devices */ required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_WRITE32_MEMBER(ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w); DECLARE_WRITE32_MEMBER(ps4_bgpen_1_dword_w); diff --git a/src/mame/includes/psikyosh.h b/src/mame/includes/psikyosh.h index 92199a5acf4..14615106191 100644 --- a/src/mame/includes/psikyosh.h +++ b/src/mame/includes/psikyosh.h @@ -49,7 +49,7 @@ public: /* devices */ required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; DECLARE_WRITE32_MEMBER(psikyosh_irqctrl_w); DECLARE_WRITE32_MEMBER(paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w); diff --git a/src/mame/includes/segas32.h b/src/mame/includes/segas32.h index dc1cbcaf58f..0ee582922bc 100644 --- a/src/mame/includes/segas32.h +++ b/src/mame/includes/segas32.h @@ -254,7 +254,7 @@ public: DECLARE_WRITE_LINE_MEMBER(ym3438_irq_handler); required_device<cpu_device> m_maincpu; required_device<cpu_device> m_soundcpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; /*----------- defined in machine/segas32.c -----------*/ diff --git a/src/mame/includes/seibuspi.h b/src/mame/includes/seibuspi.h index 0e9581c55c1..691964a8b9d 100644 --- a/src/mame/includes/seibuspi.h +++ b/src/mame/includes/seibuspi.h @@ -33,7 +33,7 @@ public: required_shared_ptr<UINT32> m_mainram; optional_shared_ptr<UINT32> m_scrollram; optional_memory_region m_z80_rom; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; optional_device<intel_e28f008sa_device> m_soundflash1; optional_device<intel_e28f008sa_device> m_soundflash2; optional_device<fifo7200_device> m_soundfifo1; diff --git a/src/mame/includes/seta2.h b/src/mame/includes/seta2.h index 2ca67d38e86..dab38fe266e 100644 --- a/src/mame/includes/seta2.h +++ b/src/mame/includes/seta2.h @@ -31,7 +31,7 @@ public: optional_device<x1_010_device> m_x1; optional_device<okim9810_device> m_oki; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; int m_xoffset; int m_yoffset; diff --git a/src/mame/includes/simpl156.h b/src/mame/includes/simpl156.h index e618037b40e..ad37be0f229 100644 --- a/src/mame/includes/simpl156.h +++ b/src/mame/includes/simpl156.h @@ -26,7 +26,7 @@ public: /* devices */ required_device<cpu_device> m_maincpu; required_device<deco16ic_device> m_deco_tilegen1; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; required_device<okim6295_device> m_okimusic; /* memory pointers */ UINT16 * m_pf1_rowscroll; diff --git a/src/mame/includes/ssv.h b/src/mame/includes/ssv.h index e57ebc2a21a..b2534e1fd1c 100644 --- a/src/mame/includes/ssv.h +++ b/src/mame/includes/ssv.h @@ -38,7 +38,7 @@ public: required_device<cpu_device> m_maincpu; required_device<device_t> m_ensoniq; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; optional_device<upd96050_device> m_dsp; required_shared_ptr<UINT16> m_mainram; diff --git a/src/mame/includes/stlforce.h b/src/mame/includes/stlforce.h index 1d1256cfb4a..e2e7deb9c1d 100644 --- a/src/mame/includes/stlforce.h +++ b/src/mame/includes/stlforce.h @@ -53,5 +53,5 @@ public: void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); required_device<cpu_device> m_maincpu; required_device<okim6295_device> m_oki; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; diff --git a/src/mame/includes/stv.h b/src/mame/includes/stv.h index e1b10ab9a04..dbc01d0a770 100644 --- a/src/mame/includes/stv.h +++ b/src/mame/includes/stv.h @@ -144,7 +144,7 @@ public: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_slave; required_device<m68000_base_device> m_audiocpu; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; bitmap_rgb32 m_tmpbitmap; DECLARE_VIDEO_START(stv_vdp2); diff --git a/src/mame/includes/superchs.h b/src/mame/includes/superchs.h index 08cedd2ffa5..be3b122531c 100644 --- a/src/mame/includes/superchs.h +++ b/src/mame/includes/superchs.h @@ -50,5 +50,5 @@ public: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_subcpu; required_device<tc0480scp_device> m_tc0480scp; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; diff --git a/src/mame/includes/taito_z.h b/src/mame/includes/taito_z.h index 88d51c01dc4..4c8d573e91d 100644 --- a/src/mame/includes/taito_z.h +++ b/src/mame/includes/taito_z.h @@ -56,7 +56,7 @@ public: required_device<cpu_device> m_maincpu; optional_device<cpu_device> m_audiocpu; required_device<cpu_device> m_subcpu; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; optional_device<tc0480scp_device> m_tc0480scp; optional_device<tc0150rod_device> m_tc0150rod; optional_device<tc0100scn_device> m_tc0100scn; diff --git a/src/mame/includes/tecmosys.h b/src/mame/includes/tecmosys.h index 73f5665d519..7a5727dfc9f 100644 --- a/src/mame/includes/tecmosys.h +++ b/src/mame/includes/tecmosys.h @@ -94,5 +94,5 @@ public: DECLARE_WRITE_LINE_MEMBER(sound_irq); required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; diff --git a/src/mame/includes/toaplan2.h b/src/mame/includes/toaplan2.h index 564c6ccf618..d9cee640b7b 100644 --- a/src/mame/includes/toaplan2.h +++ b/src/mame/includes/toaplan2.h @@ -154,7 +154,7 @@ public: optional_device<nmk112_device> m_nmk112; optional_device<okim6295_device> m_oki; optional_device<okim6295_device> m_oki1; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); diff --git a/src/mame/includes/undrfire.h b/src/mame/includes/undrfire.h index e1c16377165..2e57aa40bbd 100644 --- a/src/mame/includes/undrfire.h +++ b/src/mame/includes/undrfire.h @@ -35,7 +35,7 @@ public: optional_device<cpu_device> m_subcpu; required_device<tc0100scn_device> m_tc0100scn; required_device<tc0480scp_device> m_tc0480scp; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; optional_shared_ptr<UINT32> m_ram; optional_shared_ptr<UINT32> m_shared_ram; UINT16 m_coin_word; diff --git a/src/mame/includes/unico.h b/src/mame/includes/unico.h index ebed6167069..58f8fc44233 100644 --- a/src/mame/includes/unico.h +++ b/src/mame/includes/unico.h @@ -52,5 +52,5 @@ public: void zeropnt2_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect); required_device<cpu_device> m_maincpu; optional_device<okim6295_device> m_oki; - optional_device<serial_eeprom_device> m_eeprom; + optional_device<eeprom_serial_93cxx_device> m_eeprom; }; diff --git a/src/mame/includes/xorworld.h b/src/mame/includes/xorworld.h index ccdc641b3ed..d22b8018783 100644 --- a/src/mame/includes/xorworld.h +++ b/src/mame/includes/xorworld.h @@ -26,5 +26,5 @@ public: UINT32 screen_update_xorworld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); required_device<cpu_device> m_maincpu; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; }; diff --git a/src/mame/machine/gaelco2.c b/src/mame/machine/gaelco2.c index 57ce95b070c..146d59d7789 100644 --- a/src/mame/machine/gaelco2.c +++ b/src/mame/machine/gaelco2.c @@ -263,19 +263,19 @@ WRITE16_MEMBER(gaelco2_state::wrally2_adc_cs) WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_cs_w) { /* bit 0 is CS (active low) */ - m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE); + m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); } WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_sk_w) { /* bit 0 is SK (active high) */ - m_eeprom->set_clock_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); } WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_data_w) { /* bit 0 is EEPROM data (DIN) */ - m_eeprom->write_bit(data & 0x01); + m_eeprom->di_write(data & 0x01); } /*************************************************************************** diff --git a/src/mame/machine/kaneko_calc3.c b/src/mame/machine/kaneko_calc3.c index dfb984c5a77..1ab7c38bd53 100644 --- a/src/mame/machine/kaneko_calc3.c +++ b/src/mame/machine/kaneko_calc3.c @@ -1330,7 +1330,7 @@ int kaneko_calc3_device::calc3_decompress_table(running_machine& machine, int ta //printf("save to eeprom\n"); { - address_space &eeprom_space = space.machine().device<serial_eeprom_device>(":eeprom")->space(); + address_space &eeprom_space = space.machine().device<eeprom_serial_93cxx_device>(":eeprom")->space(); for (i=0;i<0x80;i++) { @@ -1673,7 +1673,7 @@ void kaneko_calc3_device::calc3_mcu_run(running_machine &machine) } #endif { - address_space &eeprom_space = space.machine().device<serial_eeprom_device>(":eeprom")->space(); + address_space &eeprom_space = space.machine().device<eeprom_serial_93cxx_device>(":eeprom")->space(); for (i=0;i<0x80;i++) { diff --git a/src/mame/machine/kaneko_toybox.c b/src/mame/machine/kaneko_toybox.c index b4adf9845b4..38b9bd8e847 100644 --- a/src/mame/machine/kaneko_toybox.c +++ b/src/mame/machine/kaneko_toybox.c @@ -199,7 +199,7 @@ void kaneko_toybox_device::toybox_mcu_run(running_machine &machine) { UINT8* nvdat = (UINT8*)&kaneko16_mcu_ram[mcu_offset]; - address_space &eeprom_space = machine.device<serial_eeprom_device>(":eeprom")->space(); + address_space &eeprom_space = machine.device<eeprom_serial_93cxx_device>(":eeprom")->space(); for (int i=0;i<0x80;i++) { @@ -213,7 +213,7 @@ void kaneko_toybox_device::toybox_mcu_run(running_machine &machine) case 0x42: // Write to NVRAM { - address_space &eeprom_space = machine.device<serial_eeprom_device>(":eeprom")->space(); + address_space &eeprom_space = machine.device<eeprom_serial_93cxx_device>(":eeprom")->space(); UINT8* nvdat = (UINT8*)&kaneko16_mcu_ram[mcu_offset]; for (int i=0;i<0x80;i++) { @@ -232,7 +232,7 @@ void kaneko_toybox_device::toybox_mcu_run(running_machine &machine) //memcpy(m_nvram_save, bonkadv_mcu_43, sizeof(bonkadv_mcu_43)); - address_space &eeprom_space = machine.device<serial_eeprom_device>(":eeprom")->space(); + address_space &eeprom_space = machine.device<eeprom_serial_93cxx_device>(":eeprom")->space(); UINT8* nvdat = (UINT8*)&bonkadv_mcu_43[0]; for (int i=0;i<0x80;i++) { diff --git a/src/mame/machine/leland.c b/src/mame/machine/leland.c index c4072f90e54..2dbc1ba48f5 100644 --- a/src/mame/machine/leland.c +++ b/src/mame/machine/leland.c @@ -820,9 +820,9 @@ WRITE8_MEMBER(leland_state::ataxx_eeprom_w) { if (LOG_EEPROM) logerror("%s:EE write %d%d%d\n", machine().describe_context(), (data >> 6) & 1, (data >> 5) & 1, (data >> 4) & 1); - m_eeprom->write_bit ((data & 0x10) >> 4); - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->set_cs_line ((~data & 0x40) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write ((data & 0x10) >> 4); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->cs_write ((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); } @@ -1122,9 +1122,9 @@ WRITE8_MEMBER(leland_state::leland_master_output_w) if (LOG_EEPROM) logerror("%04X:EE write %d%d%d\n", space.device().safe_pc(), (data >> 6) & 1, (data >> 5) & 1, (data >> 4) & 1); - m_eeprom->write_bit ((data & 0x10) >> 4); - m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->set_cs_line ((~data & 0x40) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write ((data & 0x10) >> 4); + m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->cs_write ((data & 0x40) ? ASSERT_LINE : CLEAR_LINE); break; case 0x0a: /* /OGIA */ diff --git a/src/mess/drivers/ip20.c b/src/mess/drivers/ip20.c index 4da696ffef8..e2084b6e658 100644 --- a/src/mess/drivers/ip20.c +++ b/src/mess/drivers/ip20.c @@ -73,7 +73,7 @@ public: TIMER_CALLBACK_MEMBER(ip20_timer_rtc); required_device<wd33c93_device> m_wd33c93; required_device<scc8530_t> m_scc; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; inline void ATTR_PRINTF(3,4) verboselog(int n_level, const char *s_fmt, ... ); required_device<cpu_device> m_maincpu; @@ -106,16 +106,6 @@ UINT32 ip20_state::screen_update_ip204415(screen_device &screen, bitmap_ind16 &b return 0; } -static const serial_eeprom_interface eeprom_interface_93C56 = -{ - "*110x", // read 110x aaaaaaaa - "*101x", // write 101x aaaaaaaa dddddddd - "*111x", // erase 111x aaaaaaaa - "*10000xxxxxxx", // lock 100x 00xxxx - "*10011xxxxxxx", // unlock 100x 11xxxx -}; - - #define RTC_DAYOFWEEK state->m_RTC.nRAM[0x0e] @@ -169,7 +159,7 @@ READ32_MEMBER(ip20_state::hpc_r) return m_HPC.nMiscStatus; case 0x01bc: // verboselog(machine, 2, "HPC CPU Serial EEPROM Read\n" ); - return m_eeprom->read_bit() << 4; + return m_eeprom->do_read() << 4; case 0x01c4: verboselog(2, "HPC Local IO Register 0 Mask Read: %08x (%08x)\n", m_HPC.nLocalIOReg0Mask, mem_mask ); return m_HPC.nLocalIOReg0Mask; @@ -353,9 +343,9 @@ WRITE32_MEMBER(ip20_state::hpc_w) { verboselog(2, " CPU board LED on\n" ); } - m_eeprom->write_bit((data & 0x00000008) ? 1 : 0 ); - m_eeprom->set_cs_line((data & 0x00000002) ? ASSERT_LINE : CLEAR_LINE ); - m_eeprom->set_clock_line((data & 0x00000004) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->di_write((data & 0x00000008) ? 1 : 0 ); + m_eeprom->cs_write((data & 0x00000002) ? CLEAR_LINE : ASSERT_LINE ); + m_eeprom->clk_write((data & 0x00000004) ? CLEAR_LINE : ASSERT_LINE ); break; case 0x01c4: verboselog(2, "HPC Local IO Register 0 Mask Write: %08x (%08x)\n", data, mem_mask ); @@ -625,7 +615,7 @@ static MACHINE_CONFIG_START( ip204415, ip20_state ) MCFG_SOUND_MODIFY( "scsi:cdrom:cdda" ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "^^^mono", 1.0) - MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 16, eeprom_interface_93C56) + MCFG_EEPROM_SERIAL_93C56_ADD("eeprom") MACHINE_CONFIG_END ROM_START( ip204415 ) diff --git a/src/mess/machine/sega8_rom.c b/src/mess/machine/sega8_rom.c index 4f02c3b6cc7..8ed048b3283 100644 --- a/src/mess/machine/sega8_rom.c +++ b/src/mess/machine/sega8_rom.c @@ -684,7 +684,7 @@ READ8_MEMBER(sega8_eeprom_device::read_cart) if (offset == 0x8000 && m_93c46_enabled) { UINT8 value = (m_93c46_lines & 0xfc) | 0x02; - value |= m_eeprom->read_bit() ? 1 : 0; + value |= m_eeprom->do_read() ? 1 : 0; return value; } @@ -699,9 +699,9 @@ WRITE8_MEMBER(sega8_eeprom_device::write_cart) if (offset == 0x8000 && m_93c46_enabled) { m_93c46_lines = data; - m_eeprom->write_bit((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->set_cs_line(!(data & 0x04) ? ASSERT_LINE : CLEAR_LINE); - m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->di_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE); + m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); } } @@ -714,7 +714,7 @@ WRITE8_MEMBER(sega8_eeprom_device::write_mapper) { m_eeprom->reset(); logerror("eeprom CS = 1\n"); - m_eeprom->set_cs_line(ASSERT_LINE); + m_eeprom->cs_write(CLEAR_LINE); } m_93c46_enabled = BIT(data, 3); logerror("eeprom %s\n", m_93c46_enabled ? "enabled" : "disabled"); @@ -729,7 +729,7 @@ WRITE8_MEMBER(sega8_eeprom_device::write_mapper) } MACHINE_CONFIG_FRAGMENT( gg_eeprom ) - MCFG_EEPROM_93C46_ADD("eeprom") + MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") MACHINE_CONFIG_END machine_config_constructor sega8_eeprom_device::device_mconfig_additions() const diff --git a/src/mess/machine/sega8_rom.h b/src/mess/machine/sega8_rom.h index eac40974d62..3f853016b73 100644 --- a/src/mess/machine/sega8_rom.h +++ b/src/mess/machine/sega8_rom.h @@ -213,7 +213,7 @@ public: protected: UINT8 m_rom_bank_base[3]; - required_device<serial_eeprom_device> m_eeprom; + required_device<eeprom_serial_93cxx_device> m_eeprom; int m_93c46_enabled; UINT8 m_93c46_lines; }; |