Previous 199869 Revisions Next

r24549 Monday 29th July, 2013 at 07:34:22 UTC by Aaron Giles
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.
[src/emu/machine]eeprom.c eeprom.h eepromser.c eepromser.h smpc.c
[src/emu/video]pc_vga.c
[src/mame/drivers]20pacgal.c 39in1.c 8080bw.c albazg.c asterix.c astrcorp.c ataxx.c backfire.c cave.c cbasebal.c centiped.c cps1.c cps2.c dcheese.c deco156.c deco32.c deco_mlc.c dkong.c dreambal.c eolith.c eolith16.c esd16.c f-32.c fcrash.c fortecar.c fromanc2.c gaelco2.c gaelco3d.c galastrm.c galpani2.c galpani3.c gijoe.c groundfx.c gticlub.c gunbustr.c hornet.c inufuku.c invqix.c jackpool.c jaguar.c jchan.c jclub2.c kaneko16.c kickgoal.c konamigq.c konamigv.c konamigx.c leland.c lethal.c limenko.c lordgun.c metro.c midas.c mitchell.c model2.c model3.c moo.c mystwarr.c naomi.c othunder.c overdriv.c pasha2.c pirates.c playmark.c plygonet.c pntnpuzl.c policetr.c powerbal.c psikyo4.c psikyosh.c pzletime.c r2dx_v33.c rabbit.c rbmk.c rungun.c segas32.c seibuspi.c seta2.c sigmab98.c simpl156.c simpsons.c spool99.c ssv.c stlforce.c stv.c superchs.c taito_b.c taito_f3.c taito_z.c taitojc.c tasman.c tecmosys.c tmaster.c tmmjprd.c tmnt.c toaplan2.c ultrsprt.c undrfire.c unico.c vamphalf.c vendetta.c wheelfir.c xexex.c xmen.c xorworld.c zr107.c
[src/mame/includes]20pacgal.h 8080bw.h cave.h centiped.h deco32.h deco_mlc.h dkong.h esd16.h fromanc2.h gaelco2.h gaelco3d.h galastrm.h galpani2.h gunbustr.h jaguar.h kaneko16.h kickgoal.h leland.h lordgun.h metro.h mitchell.h model2.h model3.h naomi.h othunder.h pirates.h playmark.h plygonet.h policetr.h psikyo4.h psikyosh.h segas32.h seibuspi.h seta2.h simpl156.h ssv.h stlforce.h stv.h superchs.h taito_z.h tecmosys.h toaplan2.h undrfire.h unico.h xorworld.h
[src/mame/machine]gaelco2.c kaneko_calc3.c kaneko_toybox.c leland.c
[src/mess/drivers]ip20.c
[src/mess/machine]sega8_rom.c sega8_rom.h

trunk/src/emu/video/pc_vga.c
r24548r24549
21042104   vga.memory[offset] = data;
21052105}
21062106
2107
2108static struct serial_eeprom_interface ati_eeprom_interface =
2109{
2110   "*110", /*  read command */
2111   "*101", /* write command */
2112   "*111", /* erase command */
2113   "*10000xxxx",   // lock         1 00 00xxxx
2114   "*10011xxxx"    // unlock       1 00 11xxxx
2115};
2116
21172107MACHINE_CONFIG_FRAGMENT( pcvideo_vga )
21182108   MCFG_SCREEN_ADD("screen", RASTER)
21192109   MCFG_SCREEN_RAW_PARAMS(XTAL_25_1748MHz,900,0,640,526,0,480)
r24548r24549
21622152
21632153static MACHINE_CONFIG_FRAGMENT( ati_vga )
21642154   MCFG_MACH8_ADD_OWNER("8514a")
2165   MCFG_SERIAL_EEPROM_ADD("ati_eeprom",64,16,ati_eeprom_interface)
2155   MCFG_EEPROM_SERIAL_93C46_ADD("ati_eeprom")
21662156MACHINE_CONFIG_END
21672157
21682158static MACHINE_CONFIG_FRAGMENT( s3_764 )
r24548r24549
52535243         break;
52545244      case 0x37:
52555245         {
5256            serial_eeprom_device* eep = subdevice<serial_eeprom_device>("ati_eeprom");
5246            eeprom_serial_93cxx_device* eep = subdevice<eeprom_serial_93cxx_device>("ati_eeprom");
52575247            ret = 0x00;
5258            ret |= eep->read_bit() << 3;
5248            ret |= eep->do_read() << 3;
52595249         }
52605250         break;
52615251      default:
r24548r24549
53135303
53145304         if(data & 0x04)
53155305         {
5316            serial_eeprom_device* eep = subdevice<serial_eeprom_device>("ati_eeprom");
5306            eeprom_serial_93cxx_device* eep = subdevice<eeprom_serial_93cxx_device>("ati_eeprom");
53175307            if(eep != NULL)
53185308            {
5319               eep->write_bit((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
5320               eep->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
5321               eep->set_cs_line((data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
5309               eep->di_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
5310               eep->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
5311               eep->cs_write((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
53225312            }
53235313         }
53245314         else
trunk/src/emu/machine/smpc.c
r24548r24549
819819      return_data = state->ioport("DSW1")->read();
820820
821821   if (offset == 0x77)//PDR2 read
822      return_data = (0xfe | state->m_eeprom->read_bit());
822      return_data = (0xfe | state->m_eeprom->do_read());
823823
824824   return return_data;
825825}
r24548r24549
881881      ---- -x-- EEPROM CS line
882882      ---- --xx A-Bus bank bits
883883      */
884      state->m_eeprom->set_clock_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
885      state->m_eeprom->write_bit(data & 0x10);
886      state->m_eeprom->set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
884      state->m_eeprom->clk_write((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
885      state->m_eeprom->di_write((data >> 4) & 1);
886      state->m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
887887      state->m_stv_multi_bank = data & 3;
888888
889889      stv_select_game(space.machine(), state->m_stv_multi_bank);
trunk/src/emu/machine/eepromser.c
r24548r24549
3535    IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
3636    POSSIBILITY OF SUCH DAMAGE.
3737
38****************************************************************************
39
40   Serial EEPROMs generally work the same across manufacturers and models,
41   varying largely by the size of the EEPROM and the packaging details.
42   
43   At a basic level, there are 5 signals involved:
44   
45      * CS = chip select
46      * CLK = serial data clock
47      * DI = serial data in
48      * DO = serial data out
49      * RDY/BUSY = ready (1) or busy (0) status
50   
51   Data is read or written via serial commands. A command is begun on a
52   low-to-high transition of the CS line, following by clocking a start
53   bit (1) on the DI line. After the start bit, subsequent clocks
54   assemble one of the following commands:
55   
56      Start   Opcode   Address      Data
57        1       01    aaaaaaaaa   ddddddd      WRITE data
58        1        10   aaaaaaaaa            READ data
59        1        11   aaaaaaaaa            ERASE data
60        1        00   00xxxxxxx            WREN = WRite ENable
61        1        00   01xxxxxxx   ddddddd      WRAL = WRite ALl cells
62        1        00   10xxxxxxx            ERAL = ERase ALl cells
63        1        00   11xxxxxxx            WRDS = WRite DiSable
64
65   The number of address bits (a) clocked varies based on the size of the
66   chip, though it does not always map 1:1 with the size of the chip.
67   For example, the 93C06 has 16 cells, which only needs 4 address bits;
68   but commands to the 93C06 require 6 address bits (the top two must
69   be 0).
70   
71   The number of data bits (d) clocked varies based on the chip and at
72   times on the state of a pin on the chip which selects between multiple
73   sizes (e.g., 8-bit versus 16-bit).
74   
75****************************************************************************
76
77   Most EEPROMs are based on the 93Cxx design (and have similar part
78   designations):
79   
80                          +--v--+
81                      CS |1   8| Vcc
82                     CLK |2   7| NC
83                      DI |3   6| NC
84                       DO |4   5| GND
85                          +-----+
86   
87   Note the lack of a READY/BUSY pin. On the 93Cxx series, the DO pin
88   serves double-duty, returning READY/BUSY during a write/erase cycle,
89   and outputting data during a read cycle.
90   
91   Some manufacturers have released "enhanced" versions with additional
92   features:
93   
94      * Several manufacturers (ST) map pin 6 to "ORG", specifying the
95        logical organization of the data. Connecting ORG to ground
96        makes the EEPROM work as an 8-bit device, while connecting it
97        to Vcc makes it work as a 16-bit device with one less
98        address bit.
99     
100      * Other manufacturers (ST) have enhanced the read operations to
101        allow serially streaming more than one cell. Essentially, after
102        reading the first cell, keep CS high and keep clocking, and
103        data from following cells will be read as well.
104
105   The ER5911 is only slightly different:
106   
107                          +--v--+
108                      CS |1   8| Vcc
109                     CLK |2   7| RDY/BUSY
110                      DI |3   6| ORG
111                       DO |4   5| GND
112                          +-----+
113   
114   Here we have an explicit RDY/BUSY signal, and the ORG flag as described
115   above.
116
117   From a command perspective, the ER5911 is also slightly different:
118   
119      93Cxx has ERASE command; this maps to WRITE on ER5911
120      93Cxx has WRITEALL command; no equivalent on ER5911
121
38122***************************************************************************/
39123
40124#include "emu.h"
r24548r24549
46130//  DEBUGGING
47131//**************************************************************************
48132
49#define VERBOSE 0
50#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
133// logging levels:
134//   0 = errors and warnings only
135//   1 = commands
136//   2 = state machine
137//   3 = DI/DO/READY reads & writes
138//   4 = all reads & writes
51139
140#define VERBOSE_PRINTF 0
141#define VERBOSE_LOGERROR 0
142#define LOG_TYPE printf
52143
144#define LOG0(x) do { if (VERBOSE_PRINTF >= 1) printf x; logerror x; } while (0)
145#define LOG1(x) do { if (VERBOSE_PRINTF >= 1) printf x; if (VERBOSE_LOGERROR >= 1) logerror x; } while (0)
146#define LOG2(x) do { if (VERBOSE_PRINTF >= 2) printf x; if (VERBOSE_LOGERROR >= 2) logerror x; } while (0)
147#define LOG3(x) do { if (VERBOSE_PRINTF >= 3) printf x; if (VERBOSE_LOGERROR >= 3) logerror x; } while (0)
148#define LOG4(x) do { if (VERBOSE_PRINTF >= 4) printf x; if (VERBOSE_LOGERROR >= 4) logerror x; } while (0)
53149
150
151
54152//**************************************************************************
55//  GLOBAL VARIABLES
153//  TYPE DEFINITIONS
56154//**************************************************************************
57155
58// device type definition
59const device_type SERIAL_EEPROM = &device_creator<serial_eeprom_device>;
156ALLOW_SAVE_TYPE(eeprom_serial_base_device::eeprom_command);
157ALLOW_SAVE_TYPE(eeprom_serial_base_device::eeprom_state);
60158
61const serial_eeprom_interface eeprom_interface_93C46_93C66B =
62{
63   "*110",         // read         1 10 aaaaaa
64   "*101",         // write        1 01 aaaaaa dddddddddddddddd
65   "*111",         // erase        1 11 aaaaaa
66   "*10000xxxx",   // lock         1 00 00xxxx
67   "*10011xxxx",   // unlock       1 00 11xxxx
68   1,              // enable_multi_read
69   0               // reset_delay
70//  "*10001xxxx"    // write all    1 00 01xxxx dddddddddddddddd
71//  "*10010xxxx"    // erase all    1 00 10xxxx
72};
73159
74160
75
76161//**************************************************************************
77//  LIVE DEVICE
162//  BASE DEVICE IMPLEMENTATION
78163//**************************************************************************
79164
80165//-------------------------------------------------
81//  serial_eeprom_device - constructor
166//  eeprom_serial_base_device - constructor
82167//-------------------------------------------------
83168
84serial_eeprom_device::serial_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
85   : base_eeprom_device(mconfig, SERIAL_EEPROM, "Serial EEPROM", tag, owner, "seeprom", __FILE__),
86      m_serial_count(0),
87      m_data_buffer(0),
88      m_read_address(0),
89      m_clock_count(0),
90      m_latch(0),
91      m_reset_line(CLEAR_LINE),
92      m_clock_line(CLEAR_LINE),
93      m_sending(false),
94      m_locked(false),
95      m_reset_counter(0)
169eeprom_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)
170   : eeprom_base_device(mconfig, devtype, name, tag, owner, shortname, file),
171      m_command_address_bits(0),
172      m_streaming_enabled(false),
173      m_state(STATE_IN_RESET),
174      m_cs_state(CLEAR_LINE),
175      m_last_cs_rising_edge_time(attotime::zero),
176      m_oe_state(CLEAR_LINE),
177      m_clk_state(CLEAR_LINE),
178      m_di_state(CLEAR_LINE),
179      m_locked(true),
180      m_bits_accum(0),
181      m_command_address_accum(0),
182      m_command(COMMAND_INVALID),
183      m_address(0),
184      m_shift_register(0)
96185{
97   memset(downcast<serial_eeprom_interface *>(this), 0, sizeof(serial_eeprom_interface));
98186}
99187
100188
101189//-------------------------------------------------
102//  static_set_interface - configuration helper
103//  to set the interface
190//  static_set_address_bits - configuration helper
191//  to set the number of address bits in the
192//   serial commands
104193//-------------------------------------------------
105194
106void serial_eeprom_device::static_set_interface(device_t &device, const serial_eeprom_interface &interface)
195void eeprom_serial_base_device::static_set_address_bits(device_t &device, int addrbits)
107196{
108   serial_eeprom_device &eeprom = downcast<serial_eeprom_device &>(device);
109   static_cast<serial_eeprom_interface &>(eeprom) = interface;
197   downcast<eeprom_serial_base_device &>(device).m_command_address_bits = addrbits;
110198}
111199
112200
113201//-------------------------------------------------
202//  static_enable_streaming - configuration helper
203//  to enable streaming data
204//-------------------------------------------------
205
206void eeprom_serial_base_device::static_enable_streaming(device_t &device)
207{
208   downcast<eeprom_serial_base_device &>(device).m_streaming_enabled = true;
209}
210
211
212//-------------------------------------------------
114213//  device_start - device-specific startup
115214//-------------------------------------------------
116215
117void serial_eeprom_device::device_start()
216void eeprom_serial_base_device::device_start()
118217{
119   base_eeprom_device::device_start();
218   // if no command address bits set, just inherit from the address bits
219   if (m_command_address_bits == 0)
220      m_command_address_bits = m_address_bits;
120221
121   m_locked = (m_cmd_unlock != NULL);
122
123   save_item(NAME(m_serial_buffer));
124   save_item(NAME(m_clock_line));
125   save_item(NAME(m_reset_line));
222   // start the base class
223   eeprom_base_device::device_start();
224   
225   // save the current state
226   save_item(NAME(m_state));
227   save_item(NAME(m_cs_state));
228   save_item(NAME(m_oe_state));
229   save_item(NAME(m_clk_state));
230   save_item(NAME(m_di_state));
126231   save_item(NAME(m_locked));
127   save_item(NAME(m_serial_count));
128   save_item(NAME(m_latch));
129   save_item(NAME(m_reset_counter));
130   save_item(NAME(m_clock_count));
131   save_item(NAME(m_data_buffer));
132   save_item(NAME(m_read_address));
232   save_item(NAME(m_bits_accum));
233   save_item(NAME(m_command_address_accum));
234   save_item(NAME(m_command));
235   save_item(NAME(m_address));
236   save_item(NAME(m_shift_register));
133237}
134238
135239
r24548r24549
137241//  device_reset - device-specific reset
138242//-------------------------------------------------
139243
140void serial_eeprom_device::device_reset()
244void eeprom_serial_base_device::device_reset()
141245{
142   base_eeprom_device::device_reset();
246   // reset the base class
247   eeprom_base_device::device_reset();
143248
144   // make a note if someone reset in the middle of a read or write
145   if (m_serial_count)
146      logerror("EEPROM %s reset, buffer = %s\n", tag(), m_serial_buffer);
147
148249   // reset the state
149   m_serial_count = 0;
150   m_sending = false;
151   m_reset_counter = m_reset_delay;    // delay a little before returning setting data to 1 (needed by wbeachvl)
250   set_state(STATE_IN_RESET);
251   m_locked = true;
252   m_bits_accum = 0;
253   m_command_address_accum = 0;
254   m_command = COMMAND_INVALID;
255   m_address = 0;
256   m_shift_register = 0;
152257}
153258
154259
r24548r24549
158263//**************************************************************************
159264
160265//-------------------------------------------------
161//  write_bit - latch a bit to write
266//  base_cs_write - set the state of the chip
267//   select (CS) line
162268//-------------------------------------------------
163269
164WRITE_LINE_MEMBER( serial_eeprom_device::write_bit )
270void eeprom_serial_base_device::base_cs_write(int state)
165271{
166   LOG(("write bit %d\n",state));
167   m_latch = state;
272   // ignore if the state is not changing
273   state &= 1;
274   if (state == m_cs_state)
275      return;
276
277   // set the new state     
278   LOG4(("  cs_write(%d)\n", state));
279   m_cs_state = state;
280   
281   // remember the rising edge time so we don't process CLK signals at the same time
282   if (state == ASSERT_LINE)
283      m_last_cs_rising_edge_time = machine().time();
284   handle_event((m_cs_state == ASSERT_LINE) ? EVENT_CS_RISING_EDGE : EVENT_CS_FALLING_EDGE);
168285}
169286
170287
171288//-------------------------------------------------
172//  read_bit - read a bit from the eeprom
289//  base_clk_write - set the state of the clock
290//  (CLK) line
173291//-------------------------------------------------
174292
175READ_LINE_MEMBER( serial_eeprom_device::read_bit )
293void eeprom_serial_base_device::base_clk_write(int state)
176294{
177   int res;
295   // ignore if the state is not changing
296   state &= 1;
297   if (state == m_clk_state)
298      return;
178299
179   // if sending, pull the next bit off
180   if (m_sending)
181      res = (m_data_buffer >> m_data_bits) & 1;
182   
183   // otherwise check for the proper number of bits needed for a reset
184   else
185   {
186      // this is needed by wbeachvl
187      if (m_reset_counter > 0)
188      {
189         m_reset_counter--;
190         res = 0;
191      }
192      else
193         res = 1;
194   }
300   // set the new state     
301   LOG4(("  clk_write(%d)\n", state));
302   m_clk_state = state;
303   handle_event((m_clk_state == ASSERT_LINE) ? EVENT_CLK_RISING_EDGE : EVENT_CLK_FALLING_EDGE);
304}
195305
196   LOG(("read bit %d\n",res));
197306
198   return res;
307//-------------------------------------------------
308//  base_di_write - set the state of the data input
309//   (DI) line
310//-------------------------------------------------
311
312void eeprom_serial_base_device::base_di_write(int state)
313{
314   if (state != 0 && state != 1)
315      LOG0(("EEPROM: Unexpected data at input 0x%X treated as %d\n", state, state & 1));
316   LOG3(("  di_write(%d)\n", state));
317   m_di_state = state & 1;
199318}
200319
201320
202321//-------------------------------------------------
203//  set_cs_line - set the state of the chip
204//   select (/CS) line
322//  base_do_read - read the state of the data
323//  output (DO) line
205324//-------------------------------------------------
206325
207WRITE_LINE_MEMBER( serial_eeprom_device::set_cs_line )
326int eeprom_serial_base_device::base_do_read()
208327{
209   // ignore if the state is not changing
210   if (state == m_reset_line)
211      return;
212     
213   LOG(("set reset line %d\n",state));
328   // in most states, the output is tristated, and generally connected to a pull up
329   // to send back a 1 value; the only exception is if reading data and the current output
330   // bit is a 0
331   int result = (m_state == STATE_READING_DATA && ((m_shift_register & 0x80000000) == 0)) ? CLEAR_LINE : ASSERT_LINE;
332   LOG3(("  do_read(%d)\n", result));
333   return result;
334}
214335
215   // if we're going active, reset things
216   m_reset_line = state;
217   if (m_reset_line != CLEAR_LINE)
218      reset();
336
337//-------------------------------------------------
338//  base_ready_read - read the state of the
339//  READY/BUSY line
340//-------------------------------------------------
341
342int eeprom_serial_base_device::base_ready_read()
343{
344   // ready by default, except during long operations
345   int result = (m_state == STATE_WAIT_FOR_START_BIT && !ready()) ? CLEAR_LINE : ASSERT_LINE;
346   LOG3(("  ready_read(%d)\n", result));
347   return result;
219348}
220349
221350
351
352//**************************************************************************
353//  INTERNAL HELPERS
354//**************************************************************************
355
222356//-------------------------------------------------
223//  set_clock_line - set the state of the clock
224//   (CLK) line
357//  set_state - update the state to a new one
225358//-------------------------------------------------
226359
227WRITE_LINE_MEMBER( serial_eeprom_device::set_clock_line )
360void eeprom_serial_base_device::set_state(eeprom_state newstate)
228361{
229   LOG(("set clock line %d\n",state));
230   
231   // on a pulse or a rising edge, process
232   if (state == PULSE_LINE || (m_clock_line == CLEAR_LINE && state != CLEAR_LINE))
362#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0)
363   // for debugging purposes
364   static const struct { eeprom_state state; const char *string; } s_state_names[] =
233365   {
234      // only proceed if we're not held in reset
235      if (m_reset_line == CLEAR_LINE)
236      {
237         // if sending, clock the next bit
238         if (m_sending)
366      { STATE_IN_RESET, "IN_RESET" },
367      { STATE_WAIT_FOR_START_BIT, "WAIT_FOR_START_BIT" },
368      { STATE_WAIT_FOR_COMMAND, "WAIT_FOR_COMMAND" },
369      { STATE_READING_DATA, "READING_DATA" },
370      { STATE_WAIT_FOR_DATA, "WAIT_FOR_DATA" },
371      { STATE_WAIT_FOR_COMPLETION, "WAIT_FOR_COMPLETION" },
372   };
373   const char *newstate_string = "UNKNOWN";
374   for (int index = 0; index < ARRAY_LENGTH(s_state_names); index++)
375      if (s_state_names[index].state == newstate)
376         newstate_string = s_state_names[index].string;
377   LOG2(("New state: %s\n", newstate_string));
378#endif
379
380   // switch to the new state
381   m_state = newstate;
382}
383
384
385//-------------------------------------------------
386//  handle_event - handle an event via the state
387//   machine
388//-------------------------------------------------
389
390void eeprom_serial_base_device::handle_event(eeprom_event event)
391{
392#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0)
393   // for debugging purposes
394   if ((event & EVENT_CS_RISING_EDGE) != 0) LOG2(("Event: CS rising\n"));
395   if ((event & EVENT_CS_FALLING_EDGE) != 0) LOG2(("Event: CS falling\n"));
396   if ((event & EVENT_CLK_RISING_EDGE) != 0)
397   {
398      if (m_state == STATE_WAIT_FOR_COMMAND || m_state == STATE_WAIT_FOR_DATA)
399         LOG2(("Event: CLK rising (%d, DI=%d)\n", m_bits_accum + 1, m_di_state));
400      else if (m_state == STATE_READING_DATA)
401         LOG2(("Event: CLK rising (%d, DO=%d)\n", m_bits_accum + 1, (m_shift_register >> 30) & 1));
402      else if (m_state == STATE_WAIT_FOR_START_BIT)
403         LOG2(("Event: CLK rising (%d)\n", m_di_state));
404      else
405         LOG2(("Event: CLK rising\n"));
406   }
407   if ((event & EVENT_CLK_FALLING_EDGE) != 0) LOG4(("Event: CLK falling\n"));
408#endif
409
410   // switch off the current state
411   switch (m_state)
412   {
413      // CS is not asserted; wait for a rising CS to move us forward, ignoring all clocks
414      case STATE_IN_RESET:
415         if (event == EVENT_CS_RISING_EDGE)
416            set_state(STATE_WAIT_FOR_START_BIT);
417         break;
418     
419      // CS is asserted; wait for rising clock with a 1 start bit; falling CS will reset us
420      // note that because each bit is written independently, it is possible for us to receive
421      // a false rising CLK edge at the exact same time as a rising CS edge; it appears we
422      // should ignore these edges (makes sense really)
423      case STATE_WAIT_FOR_START_BIT:
424         if (event == EVENT_CLK_RISING_EDGE && m_di_state == ASSERT_LINE && ready() && machine().time() > m_last_cs_rising_edge_time)
239425         {
240            // auto-advance to then next word if supported
241            if (m_clock_count == m_data_bits && m_enable_multi_read)
242            {
243               fill_data_buffer(m_read_address + 1);
244               logerror("EEPROM %s read %04x from address %02x\n", tag(), m_data_buffer, m_read_address);
245            }
426            m_command_address_accum = m_bits_accum = 0;
427            set_state(STATE_WAIT_FOR_COMMAND);
428         }
429         else if (event == EVENT_CS_FALLING_EDGE)
430            set_state(STATE_IN_RESET);
431         break;
432     
433      // CS is asserted; wait for a command to come through; falling CS will reset us
434      case STATE_WAIT_FOR_COMMAND:
435         if (event == EVENT_CLK_RISING_EDGE)
436         {
437            // if we have enough bits for a command + address, check it out
438            m_command_address_accum = (m_command_address_accum << 1) | m_di_state;
439            if (++m_bits_accum == 2 + m_command_address_bits)
440               execute_command();
441         }
442         else if (event == EVENT_CS_FALLING_EDGE)
443            set_state(STATE_IN_RESET);
444         break;
445     
446      // CS is asserted; reading data, clock the shift register; falling CS will reset us
447      case STATE_READING_DATA:
448         if (event == EVENT_CLK_RISING_EDGE)
449         {
450            int bit_index = m_bits_accum++;
246451           
247            // shift the data buffer
248            m_data_buffer = (m_data_buffer << 1) | 1;
249            m_clock_count++;
452            // wrapping the address on multi-read is required by pacslot(cave.c)
453            if (bit_index % m_data_bits == 0 && (bit_index == 0 || m_streaming_enabled))
454               m_shift_register = read((m_address + m_bits_accum / m_data_bits) & ((1 << m_address_bits) - 1)) << (32 - m_data_bits);
455            else
456               m_shift_register = (m_shift_register << 1) | 1;
250457         }
458         else if (event == EVENT_CS_FALLING_EDGE)
459         {
460            set_state(STATE_IN_RESET);
461            if (m_streaming_enabled)
462               LOG1(("  (%d cells read)\n", m_bits_accum / m_data_bits));
463            if (!m_streaming_enabled && m_bits_accum > m_data_bits + 1)
464               LOG0(("EEPROM: Overclocked read by %d bits\n", m_bits_accum - m_data_bits));
465            else if (m_streaming_enabled && m_bits_accum > m_data_bits + 1 && m_bits_accum % m_data_bits > 2)
466               LOG0(("EEPROM: Overclocked read by %d bits\n", m_bits_accum % m_data_bits));
467            else if (m_bits_accum < m_data_bits)
468               LOG0(("EEPROM: CS deasserted in READING_DATA after %d bits\n", m_bits_accum));
469         }
470         break;
471     
472      // CS is asserted; waiting for data; clock data through until we accumulate enough; falling CS will reset us
473      case STATE_WAIT_FOR_DATA:
474         if (event == EVENT_CLK_RISING_EDGE)
475         {
476            m_shift_register = (m_shift_register << 1) | m_di_state;
477            if (++m_bits_accum == m_data_bits)
478               execute_write_command();
479         }
480         else if (event == EVENT_CS_FALLING_EDGE)
481         {
482            set_state(STATE_IN_RESET);
483            LOG0(("EEPROM: CS deasserted in STATE_WAIT_FOR_DATA after %d bits\n", m_bits_accum));
484         }
485         break;
486     
487      // CS is asserted; waiting for completion; watch for CS falling
488      case STATE_WAIT_FOR_COMPLETION:
489         if (event == EVENT_CS_FALLING_EDGE)
490            set_state(STATE_IN_RESET);
491         break;
492   }
493}
494
495
496//-------------------------------------------------
497//  execute_command - execute a command once we
498//   have enough bits for one
499//-------------------------------------------------
500
501void eeprom_serial_base_device::execute_command()
502{
503   // parse into a generic command and reset the accumulator count
504   parse_command_and_address();
505   m_bits_accum = 0;
506   
507#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0)
508   // for debugging purposes
509   static const struct { eeprom_command command; const char *string; } s_command_names[] =
510   {
511      { COMMAND_INVALID, "Execute command: INVALID\n" },
512      { COMMAND_READ, "Execute command:READ 0x%X\n" },
513      { COMMAND_WRITE, "Execute command:WRITE 0x%X\n" },
514      { COMMAND_ERASE, "Execute command:ERASE 0x%X\n" },
515      { COMMAND_LOCK, "Execute command:LOCK\n" },
516      { COMMAND_UNLOCK, "Execute command:UNLOCK\n" },
517      { COMMAND_WRITEALL, "Execute command:WRITEALL\n" },
518      { COMMAND_ERASEALL, "Execute command:ERASEALL\n" },
519   };
520   const char *command_string = s_command_names[0].string;
521   for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++)
522      if (s_command_names[index].command == m_command)
523         command_string = s_command_names[index].string;
524   LOG1((command_string, m_address));
525#endif
526
527   // each command advances differently
528   switch (m_command)
529   {
530      // advance to the READING_DATA state; data is fetched after first CLK
531      case COMMAND_READ:
532         set_state(STATE_READING_DATA);
533         break;
251534         
252         // if not sending, then write the data that was latched
253         else
254            write(m_latch);
255      }
535      // reset the shift register and wait for enough data to be clocked through
536      case COMMAND_WRITE:
537      case COMMAND_WRITEALL:
538         m_shift_register = 0;
539         set_state(STATE_WAIT_FOR_DATA);
540         break;
541     
542      // erase the parsed address (unless locked) and wait for it to complete
543      case COMMAND_ERASE:
544         if (m_locked)
545         {
546            LOG0(("EEPROM: Attempt to erase while locked\n"));
547            set_state(STATE_IN_RESET);
548            break;
549         }
550         erase(m_address);
551         set_state(STATE_WAIT_FOR_COMPLETION);
552         break;
553     
554      // lock the chip; return to IN_RESET state
555      case COMMAND_LOCK:
556         m_locked = true;
557         set_state(STATE_IN_RESET);
558         break;
559         
560      // unlock the chip; return to IN_RESET state
561      case COMMAND_UNLOCK:
562         m_locked = false;
563         set_state(STATE_IN_RESET);
564         break;
565     
566      // erase the entire chip (unless locked) and wait for it to complete
567      case COMMAND_ERASEALL:
568         if (m_locked)
569         {
570            LOG0(("EEPROM: Attempt to erase all while locked\n"));
571            set_state(STATE_IN_RESET);
572            break;
573         }
574         erase_all();
575         set_state(STATE_WAIT_FOR_COMPLETION);
576         break;
577     
578      default:
579         throw emu_fatalerror("execute_command called with invalid command %d\n", m_command);
256580   }
581}
257582
258   // remember the news state
259   m_clock_line = state;
583
584//-------------------------------------------------
585//  execute_write_command - execute a write
586//   command after receiving the data bits
587//-------------------------------------------------
588
589void eeprom_serial_base_device::execute_write_command()
590{
591#if (VERBOSE_PRINTF > 0 || VERBOSE_LOGERROR > 0)
592   // for debugging purposes
593   static const struct { eeprom_command command; const char *string; } s_command_names[] =
594   {
595      { COMMAND_WRITE, "Execute write command: WRITE 0x%X = 0x%X\n" },
596      { COMMAND_WRITEALL, "Execute write command: WRITEALL (%X) = 0x%X\n" },
597   };
598   const char *command_string = "UNKNOWN";
599   for (int index = 0; index < ARRAY_LENGTH(s_command_names); index++)
600      if (s_command_names[index].command == m_command)
601         command_string = s_command_names[index].string;
602   LOG1((command_string, m_address, m_shift_register));
603#endif
604
605   // each command advances differently
606   switch (m_command)
607   {
608      // reset the shift register and wait for enough data to be clocked through
609      case COMMAND_WRITE:
610         if (m_locked)
611         {
612            LOG0(("EEPROM: Attempt to write to address 0x%X while locked\n", m_address));
613            set_state(STATE_IN_RESET);
614            break;
615         }
616         write(m_address, m_shift_register);
617         set_state(STATE_WAIT_FOR_COMPLETION);
618         break;
619
620      // write the entire EEPROM with the same data; ERASEALL is required before so we
621      // AND against the already-present data     
622      case COMMAND_WRITEALL:
623         if (m_locked)
624         {
625            LOG0(("EEPROM: Attempt to write all while locked\n"));
626            set_state(STATE_IN_RESET);
627            break;
628         }
629         write_all(m_shift_register);
630         set_state(STATE_WAIT_FOR_COMPLETION);
631         break;
632     
633      default:
634         throw emu_fatalerror("execute_write_command called with invalid command %d\n", m_command);
635   }
260636}
261637
262638
263639
264640//**************************************************************************
265//  INTERNAL HELPERS
641//  STANDARD INTERFACE IMPLEMENTATION
266642//**************************************************************************
267643
268644//-------------------------------------------------
269//  decode_value - convert accumulated bits to
270//   a binary value, releative to the end of the
271//   accumulation buffer
645//  eeprom_serial_93cxx_device - constructor
272646//-------------------------------------------------
273647
274UINT32 serial_eeprom_device::decode_value(int numbits, int bitsfromend)
648eeprom_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)
649   : eeprom_serial_base_device(mconfig, devtype, name, tag, owner, shortname, file)
275650{
276   UINT32 value = 0;
277   for (int bitnum = m_serial_count - bitsfromend - numbits; bitnum < m_serial_count - bitsfromend; bitnum++)
278      value = (value << 1) | (m_serial_buffer[bitnum] - '0');
279   return value;
280651}
281652
282653
283654//-------------------------------------------------
284//  fill_data_buffer - fill the data buffer with
285//   the appropriately-sized chunk of data
655//  parse_command_and_address - extract the
656//   command and address from a bitstream
286657//-------------------------------------------------
287658
288void serial_eeprom_device::fill_data_buffer(offs_t address)
659void eeprom_serial_93cxx_device::parse_command_and_address()
289660{
290   // make the address to be in range
291   address &= (1 << m_address_bits) - 1;
661   // set the defaults
662   m_command = COMMAND_INVALID;
663   m_address = m_command_address_accum & ((1 << m_command_address_bits) - 1);
292664   
293   // fetch the appropriately-sized data
294   m_data_buffer = read_data(address);
665   // extract the command portion and handle it
666   switch (m_command_address_accum >> m_command_address_bits)
667   {
668      // opcode 0 needs two more bits to decode the operation
669      case 0:
670         switch (m_address >> (m_command_address_bits - 2))
671         {
672            case 0:   m_command = COMMAND_LOCK;      break;
673            case 1:   m_command = COMMAND_WRITEALL;   break;
674            case 2:   m_command = COMMAND_ERASEALL;   break;
675            case 3:   m_command = COMMAND_UNLOCK;      break;
676         }
677         m_address = 0;
678         break;
679      case 1:   m_command = COMMAND_WRITE;   break;
680      case 2:   m_command = COMMAND_READ;   break;
681      case 3:   m_command = COMMAND_ERASE;   break;
682   }
295683
296   // remember the address and reset the clock count
297   m_read_address = address;
298   m_clock_count = 0;
684   // warn about out-of-range addresses
685   if (m_address >= (1 << m_address_bits))
686      LOG0(("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1));
299687}
300688
301689
302690//-------------------------------------------------
303//  write - process an EEPROM write
691//  do_read - read handlers
304692//-------------------------------------------------
305693
306void serial_eeprom_device::write(int bit)
694READ_LINE_MEMBER(eeprom_serial_93cxx_device::do_read) { return base_do_read() & base_ready_read(); }
695
696
697//-------------------------------------------------
698//  cs_write/clk_write/di_write - write handlers
699//-------------------------------------------------
700
701WRITE_LINE_MEMBER(eeprom_serial_93cxx_device::cs_write) { base_cs_write(state); }
702WRITE_LINE_MEMBER(eeprom_serial_93cxx_device::clk_write) { base_clk_write(state); }
703WRITE_LINE_MEMBER(eeprom_serial_93cxx_device::di_write) { base_di_write(state); }
704
705
706
707//**************************************************************************
708//  ER5911 DEVICE IMPLEMENTATION
709//**************************************************************************
710
711//-------------------------------------------------
712//  eeprom_serial_er5911_device - constructor
713//-------------------------------------------------
714
715eeprom_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)
716   : eeprom_serial_base_device(mconfig, devtype, name, tag, owner, shortname, file)
307717{
308   LOG(("EEPROM %s write bit %d\n", tag(), bit));
718}
309719
310   // if too much data was written without seeing a command, log it and return
311   if (m_serial_count >= SERIAL_BUFFER_LENGTH - 1)
312   {
313      logerror("error: EEPROM %s serial buffer overflow\n", tag());
314      return;
315   }
316720
317   // update the buffer
318   m_serial_buffer[m_serial_count++] = (bit ? '1' : '0');
319   m_serial_buffer[m_serial_count] = 0;    // nul terminate so we can treat it as a string
721//-------------------------------------------------
722//  parse_command_and_address - extract the
723//   command and address from a bitstream
724//-------------------------------------------------
320725
321   // look for a read command
322   if (m_cmd_read != NULL && m_serial_count > m_address_bits && command_match(m_cmd_read, m_address_bits))
323   {
324      fill_data_buffer(decode_value(m_address_bits));
325      m_sending = true;
326      m_serial_count = 0;
327      logerror("EEPROM %s read %04x from address %02x\n", tag(), m_data_buffer, m_read_address);
328   }
726void eeprom_serial_er5911_device::parse_command_and_address()
727{
728   // set the defaults
729   m_command = COMMAND_INVALID;
730   m_address = m_command_address_accum & ((1 << m_command_address_bits) - 1);
329731   
330   // look for an erase command
331   else if (m_cmd_erase != NULL && m_serial_count > m_address_bits && command_match(m_cmd_erase, m_address_bits))
732   // extract the command portion and handle it
733   switch (m_command_address_accum >> m_command_address_bits)
332734   {
333      offs_t address = decode_value(m_address_bits);
334      logerror("EEPROM %s erase address %02x\n", tag(), address);
335      if (m_locked == 0)
336         write_data(address, ~0);
337      else
338         logerror("Error: EEPROM %s is locked\n", tag());
339      m_serial_count = 0;
735      // opcode 0 needs two more bits to decode the operation
736      case 0:
737         switch (m_address >> (m_command_address_bits - 2))
738         {
739            case 0:   m_command = COMMAND_LOCK;      break;
740            case 1:   m_command = COMMAND_INVALID;   break;   // not on ER5911
741            case 2:   m_command = COMMAND_ERASEALL;   break;
742            case 3:   m_command = COMMAND_UNLOCK;      break;
743         }
744         m_address = 0;
745         break;
746      case 1:   m_command = COMMAND_WRITE;   break;
747      case 2:   m_command = COMMAND_READ;   break;
748      case 3:   m_command = COMMAND_WRITE;   break;   // WRITE instead of ERASE on ER5911
340749   }
341   
342   // look for a write command
343   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))
344   {
345      offs_t address = decode_value(m_address_bits, m_data_bits);
346      UINT32 data = decode_value(m_data_bits);
347      logerror("EEPROM %s write %04x to address %02x\n", tag(), data, address);
348      if (m_locked == 0)
349         write_data(address, data);
350      else
351         logerror("Error: EEPROM %s is locked\n", tag());
352      m_serial_count = 0;
353   }
354   
355   // look for a lock command
356   else if (m_cmd_lock != NULL && command_match(m_cmd_lock))
357   {
358      logerror("EEPROM %s lock\n", tag());
359      m_locked = 1;
360      m_serial_count = 0;
361   }
362750
363   // look for an unlock command
364   else if (m_cmd_unlock != NULL && command_match(m_cmd_unlock))
365   {
366      logerror("EEPROM %s unlock\n", tag());
367      m_locked = 0;
368      m_serial_count = 0;
369   }
751   // warn about out-of-range addresses
752   if (m_address >= (1 << m_address_bits))
753      LOG0(("EEPROM: out-of-range address 0x%X provided (maximum should be 0x%X)\n", m_address, (1 << m_address_bits) - 1));
370754}
371755
372756
373757//-------------------------------------------------
374//  command_match - try to match incoming data
375//   against a command template
758//  do_read/ready_read - read handlers
376759//-------------------------------------------------
377760
378bool serial_eeprom_device::command_match(const char *cmd, int ignorebits)
379{
380   //
381   //  The serial buffer only contains '0' or '1' (e.g. "1001").
382   //  The command can contain: '0' or '1' or these wildcards:
383   //      'x' :   match both '0' and '1'
384   //      "*1":   match "1", "01", "001", "0001" etc.
385   //      "*0":   match "0", "10", "110", "1110" etc.
386   //
761READ_LINE_MEMBER(eeprom_serial_er5911_device::do_read) { return base_do_read(); }
762READ_LINE_MEMBER(eeprom_serial_er5911_device::ready_read) { return base_ready_read(); }
387763
388   int len = m_serial_count - ignorebits;
389   const char *buf = m_serial_buffer;
390   while (len > 0)
391   {
392      char bufbit = *buf;
393      char cmdbit = *cmd;
394764
395      // stop when we hit the end of either string
396      if (bufbit == 0 || cmdbit == 0)
397         return (bufbit == cmdbit);
765//-------------------------------------------------
766//  cs_write/clk_write/di_write - write handlers
767//-------------------------------------------------
398768
399      // parse based on the cmdbit
400      switch (cmdbit)
401      {
402         case '0':
403         case '1':
404            // these require an exact match
405            if (bufbit != cmdbit)
406               return false;
407           
408            // fall through...
769WRITE_LINE_MEMBER(eeprom_serial_er5911_device::cs_write) { base_cs_write(state); }
770WRITE_LINE_MEMBER(eeprom_serial_er5911_device::clk_write) { base_clk_write(state); }
771WRITE_LINE_MEMBER(eeprom_serial_er5911_device::di_write) { base_di_write(state); }
409772
410         case 'X':
411         case 'x':
412            // this is 'ignore', so just accept anything
413            buf++;
414            len--;
415            cmd++;
416            break;
417773
418         case '*':
419            // for a wildcard, check for the opposit bit
420            cmdbit = cmd[1];
421            switch (cmdbit)
422            {
423               case '0':
424               case '1':
425                  if (bufbit == cmdbit)
426                     cmd++;
427                  else
428                     buf++, len--;
429                  break;
430                 
431               default:
432                  return false;
433            }
434      }
435   }
436   return (*cmd == 0);
437}
774
775//**************************************************************************
776//  DERIVED TYPES
777//**************************************************************************
778
779// macro for defining a new device class
780#define DEFINE_SERIAL_EEPROM_DEVICE(_baseclass, _lowercase, _uppercase, _bits, _cells, _addrbits) \
781eeprom_serial_##_lowercase##_##_bits##bit_device::eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) \
782   : eeprom_serial_##_baseclass##_device(mconfig, EEPROM_SERIAL_##_uppercase##_##_bits##BIT, "Serial EEPROM " #_uppercase " (" #_cells "x" #_bits ")", tag, owner, #_lowercase "_" #_bits, __FILE__) \
783{ \
784   static_set_size(*this, _cells, _bits); \
785   static_set_address_bits(*this, _addrbits); \
786}; \
787const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT = &device_creator<eeprom_serial_##_lowercase##_##_bits##bit_device>; \
788
789// standard 93CX6 class of 16-bit EEPROMs
790DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16, 16, 6)
791DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16, 64, 6)
792DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c56, 93C56, 16, 128, 8)
793DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c57, 93C57, 16, 128, 7)
794DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c66, 93C66, 16, 256, 8)
795DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c76, 93C76, 16, 512, 10)
796DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c86, 93C86, 16, 1024, 10)
797
798// some manufacturers use pin 6 as an "ORG" pin which, when pulled low, configures memory for 8-bit accesses
799DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 8, 128, 7)
800DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c56, 93C56, 8, 256, 9)
801DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c57, 93C57, 8, 256, 8)
802DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c66, 93C66, 8, 512, 9)
803DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c76, 93C76, 8, 1024, 11)
804DEFINE_SERIAL_EEPROM_DEVICE(93cxx, 93c86, 93C86, 8, 2048, 11)
805
806// ER5911 has a separate ready pin, a reduced command set, and supports 8/16 bit out of the box
807DEFINE_SERIAL_EEPROM_DEVICE(er5911, er5911, ER5911, 8, 128, 9)
808DEFINE_SERIAL_EEPROM_DEVICE(er5911, er5911, ER5911, 16, 64, 8)
trunk/src/emu/machine/eepromser.h
r24548r24549
4949//  INTERFACE CONFIGURATION MACROS
5050//**************************************************************************
5151
52#define MCFG_SERIAL_EEPROM_ADD(_tag, _cells, _cellbits, _interface) \
53   MCFG_DEVICE_ADD(_tag, SERIAL_EEPROM, 0) \
54   MCFG_EEPROM_SIZE(_cells, _cellbits) \
55   serial_eeprom_device::static_set_interface(*device, _interface);
52// standard 93CX6 class of 16-bit EEPROMs
53#define MCFG_EEPROM_SERIAL_93C06_ADD(_tag) \
54   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C06_16BIT, 0)
55#define MCFG_EEPROM_SERIAL_93C46_ADD(_tag) \
56   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C46_16BIT, 0)
57#define MCFG_EEPROM_SERIAL_93C56_ADD(_tag) \
58   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C56_16BIT, 0)
59#define MCFG_EEPROM_SERIAL_93C57_ADD(_tag) \
60   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C57_16BIT, 0)
61#define MCFG_EEPROM_SERIAL_93C66_ADD(_tag) \
62   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C66_16BIT, 0)
63#define MCFG_EEPROM_SERIAL_93C76_ADD(_tag) \
64   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C76_16BIT, 0)
65#define MCFG_EEPROM_SERIAL_93C86_ADD(_tag) \
66   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C86_16BIT, 0)
5667
57#define MCFG_SERIAL_EEPROM_DATA(_data, _size) \
58   serial_eeprom_device::static_set_default_data(*device, _data, _size);
59#define MCFG_SERIAL_EEPROM_DEFAULT_VALUE(_value) \
60   serial_eeprom_device::static_set_default_value(*device, _value);
68// some manufacturers use pin 6 as an "ORG" pin which, when pulled low, configures memory for 8-bit accesses
69#define MCFG_EEPROM_SERIAL_93C46_8BIT_ADD(_tag) \
70   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C46_8BIT, 0)
71#define MCFG_EEPROM_SERIAL_93C56_8BIT_ADD(_tag) \
72   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C56_8BIT, 0)
73#define MCFG_EEPROM_SERIAL_93C57_8BIT_ADD(_tag) \
74   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C57_8BIT, 0)
75#define MCFG_EEPROM_SERIAL_93C66_8BIT_ADD(_tag) \
76   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C66_8BIT, 0)
77#define MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(_tag) \
78   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C76_8BIT, 0)
79#define MCFG_EEPROM_SERIAL_93C86_8BIT_ADD(_tag) \
80   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_93C86_8BIT, 0)
6181
62#define MCFG_EEPROM_93C46_ADD(_tag) \
63   MCFG_SERIAL_EEPROM_ADD(_tag, 64, 16, eeprom_interface_93C46_93C66B)
82// ER5911 has a separate ready pin, a reduced command set, and supports 8/16 bit out of the box
83#define MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD(_tag) \
84   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_ER5911_8BIT, 0)
85#define MCFG_EEPROM_SERIAL_ER5911_16BIT_ADD(_tag) \
86   MCFG_DEVICE_ADD(_tag, EEPROM_SERIAL_ER5911_16BIT, 0)
6487
65#define MCFG_EEPROM_93C46_8BIT_ADD(_tag) \
66   MCFG_SERIAL_EEPROM_ADD(_tag, 128, 8, eeprom_interface_93C46_93C66B)
88// optional enable for streaming reads
89#define MCFG_EEPROM_SERIAL_ENABLE_STREAMING() \
90   eeprom_serial_base_device::static_enable_streaming(*device); \
6791
68#define MCFG_EEPROM_93C66B_ADD(_tag) \
69   MCFG_SERIAL_EEPROM_ADD(_tag, 256, 16, eeprom_interface_93C46_93C66B)
92// pass-throughs to the base class for setting default data
93#define MCFG_EEPROM_SERIAL_DATA MCFG_EEPROM_DATA
94#define MCFG_EEPROM_SERIAL_DEFAULT_VALUE MCFG_EEPROM_DEFAULT_VALUE
7095
7196
7297
r24548r24549
75100//**************************************************************************
76101
77102
78// ======================> serial_eeprom_interface
103// ======================> eeprom_serial_base_device
79104
80struct serial_eeprom_interface
105class eeprom_serial_base_device : public eeprom_base_device
81106{
82   const char *m_cmd_read;             //   read command string, e.g. "0110"
83   const char *m_cmd_write;            //  write command string, e.g. "0111"
84   const char *m_cmd_erase;            //  erase command string, or 0 if n/a
85   const char *m_cmd_lock;             //   lock command string, or 0 if n/a
86   const char *m_cmd_unlock;           // unlock command string, or 0 if n/a
87   bool        m_enable_multi_read;    // set to 1 to enable multiple values to be read from one read command
88   int         m_reset_delay;          // number of times eeprom_read_bit() should return 0 after a reset,
89                              // before starting to return 1.
107protected:
108   // construction/destruction
109   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);
110
111public:
112   // inline configuration helpers
113   static void static_set_address_bits(device_t &device, int addrbits);
114   static void static_enable_streaming(device_t &device);
115   
116protected:
117   // device-level overrides
118   virtual void device_start();
119   virtual void device_reset();
120   
121   // read interfaces differ between implementations
122   
123   // commands
124   enum eeprom_command
125   {
126      COMMAND_INVALID,
127      COMMAND_READ,
128      COMMAND_WRITE,
129      COMMAND_ERASE,
130      COMMAND_LOCK,
131      COMMAND_UNLOCK,
132      COMMAND_WRITEALL,
133      COMMAND_ERASEALL
134   };
135
136   // states
137   enum eeprom_state
138   {
139      STATE_IN_RESET,
140      STATE_WAIT_FOR_START_BIT,
141      STATE_WAIT_FOR_COMMAND,
142      STATE_READING_DATA,
143      STATE_WAIT_FOR_DATA,
144      STATE_WAIT_FOR_COMPLETION
145   };
146   
147   // events
148   enum eeprom_event
149   {
150      EVENT_CS_RISING_EDGE = 1 << 0,
151      EVENT_CS_FALLING_EDGE = 1 << 1,
152      EVENT_CLK_RISING_EDGE = 1 << 2,
153      EVENT_CLK_FALLING_EDGE = 1 << 3
154   };
155
156   // internal helpers
157   void set_state(eeprom_state newstate);
158   void handle_event(eeprom_event event);
159   void execute_command();
160   void execute_write_command();
161   
162   // subclass helpers
163   void base_cs_write(int state);
164   void base_clk_write(int state);
165   void base_di_write(int state);
166   int base_do_read();
167   int base_ready_read();
168   
169   // subclass overrides
170   virtual void parse_command_and_address() = 0;
171
172   // configuration state
173   UINT8         m_command_address_bits;      // number of address bits in a command
174   bool         m_streaming_enabled;      // true if streaming is enabled
175
176   // runtime state
177   eeprom_state   m_state;               // current internal state
178   UINT8         m_cs_state;               // state of the CS line
179   attotime      m_last_cs_rising_edge_time;   // time of the last CS rising edge
180   UINT8         m_oe_state;               // state of the OE line
181   UINT8         m_clk_state;            // state of the CLK line
182   UINT8         m_di_state;               // state of the DI line
183   bool         m_locked;               // are we locked against writes?
184   UINT32         m_bits_accum;            // number of bits accumulated
185   UINT32         m_command_address_accum;   // accumulator of command+address bits
186   eeprom_command   m_command;               // current command
187   UINT32         m_address;               // current address extracted from command
188   UINT32         m_shift_register;         // holds data coming in/going out
90189};
91190
92191
93192
94// ======================> serial_eeprom_device
193// ======================> eeprom_serial_93cxx_device
95194
96class serial_eeprom_device :      public base_eeprom_device,
97                        public serial_eeprom_interface
195class eeprom_serial_93cxx_device : public eeprom_serial_base_device
98196{
99public:
197protected:
100198   // construction/destruction
101   serial_eeprom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
199   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);
102200
103   // inline configuration helpers
104   static void static_set_interface(device_t &device, const serial_eeprom_interface &interface);
201public:
202   // read handlers
203   DECLARE_READ_LINE_MEMBER(do_read);   // combined DO+READY/BUSY
105204
106   // I/O operations
107   DECLARE_WRITE_LINE_MEMBER( write_bit );
108   DECLARE_READ_LINE_MEMBER( read_bit );
109   DECLARE_WRITE_LINE_MEMBER( set_cs_line );
110   DECLARE_WRITE_LINE_MEMBER( set_clock_line );
205   // write handlers
206   DECLARE_WRITE_LINE_MEMBER(cs_write);      // CS signal (active high)
207   DECLARE_WRITE_LINE_MEMBER(clk_write);      // CLK signal (active high)
208   DECLARE_WRITE_LINE_MEMBER(di_write);      // DI
111209
112210protected:
113   // device-level overrides
114   virtual void device_start();
115   virtual void device_reset();
211   // subclass overrides
212   virtual void parse_command_and_address();
213};
116214
117   // internal helpers
118   UINT32 decode_value(int numbits, int bitsfromend = 0);
119   void fill_data_buffer(offs_t address);
120   void write(int bit);
121   bool command_match(const char *cmd, int ignorebits = 0);
122215
123   static const int SERIAL_BUFFER_LENGTH = 40;
216// ======================> eeprom_serial_er5911_device
124217
125   // runtime state
126   int           m_serial_count;
127   char          m_serial_buffer[SERIAL_BUFFER_LENGTH];
128   int           m_data_buffer;
129   int           m_read_address;
130   int           m_clock_count;
131   int           m_latch;
132   int           m_reset_line;
133   int           m_clock_line;
134   bool          m_sending;
135   bool          m_locked;
136   int           m_reset_counter;
137};
218class eeprom_serial_er5911_device : public eeprom_serial_base_device
219{
220protected:
221   // construction/destruction
222   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);
138223
224public:
225   // read handlers
226   DECLARE_READ_LINE_MEMBER(do_read);         // DO
227   DECLARE_READ_LINE_MEMBER(ready_read);      // READY/BUSY only
139228
140// device type definition
141extern const device_type SERIAL_EEPROM;
229   // write handlers
230   DECLARE_WRITE_LINE_MEMBER(cs_write);      // CS signal (active high)
231   DECLARE_WRITE_LINE_MEMBER(clk_write);      // CLK signal (active high)
232   DECLARE_WRITE_LINE_MEMBER(di_write);      // DI
142233
234protected:
235   // subclass overrides
236   virtual void parse_command_and_address();
237};
143238
144239
240
145241//**************************************************************************
146//  GLOBAL VARIABLES
242//  DERIVED TYPES
147243//**************************************************************************
148244
149extern const serial_eeprom_interface eeprom_interface_93C46_93C66B;
245// macro for declaring a new device class
246#define DECLARE_SERIAL_EEPROM_DEVICE(_baseclass, _lowercase, _uppercase, _bits) \
247class eeprom_serial_##_lowercase##_##_bits##bit_device : public eeprom_serial_##_baseclass##_device \
248{ \
249public: \
250   eeprom_serial_##_lowercase##_##_bits##bit_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); \
251}; \
252extern const device_type EEPROM_SERIAL_##_uppercase##_##_bits##BIT; \
150253
254// standard 93CX6 class of 16-bit EEPROMs
255DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c06, 93C06, 16)
256DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 16)
257DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c56, 93C56, 16)
258DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c57, 93C57, 16)
259DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c66, 93C66, 16)
260DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c76, 93C76, 16)
261DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c86, 93C86, 16)
151262
263// some manufacturers use pin 6 as an "ORG" pin which, when pulled low, configures memory for 8-bit accesses
264DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c46, 93C46, 8)
265DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c56, 93C56, 8)
266DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c57, 93C57, 8)
267DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c66, 93C66, 8)
268DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c76, 93C76, 8)
269DECLARE_SERIAL_EEPROM_DEVICE(93cxx, 93c86, 93C86, 8)
270
271// ER5911 has a separate ready pin, a reduced command set, and supports 8/16 bit out of the box
272DECLARE_SERIAL_EEPROM_DEVICE(er5911, er5911, ER5911, 8)
273DECLARE_SERIAL_EEPROM_DEVICE(er5911, er5911, ER5911, 16)
274
152275#endif
trunk/src/emu/machine/eeprom.c
r24548r24549
5555//  GLOBAL VARIABLES
5656//**************************************************************************
5757
58static ADDRESS_MAP_START( eeprom_map8, AS_PROGRAM, 8, base_eeprom_device )
58static ADDRESS_MAP_START( eeprom_map8, AS_PROGRAM, 8, eeprom_base_device )
5959   AM_RANGE(0x0000, 0x0fff) AM_RAM
6060ADDRESS_MAP_END
6161
62
63static ADDRESS_MAP_START( eeprom_map16, AS_PROGRAM, 16, base_eeprom_device )
62static ADDRESS_MAP_START( eeprom_map16, AS_PROGRAM, 16, eeprom_base_device )
6463   AM_RANGE(0x0000, 0x07ff) AM_RAM
6564ADDRESS_MAP_END
6665
r24548r24549
7170//**************************************************************************
7271
7372//-------------------------------------------------
74//  base_eeprom_device - constructor
73//  eeprom_base_device - constructor
7574//-------------------------------------------------
7675
77base_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)
76eeprom_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)
7877   : device_t(mconfig, devtype, name, tag, owner, 0, shortname, file),
7978      device_memory_interface(mconfig, *this),
8079      device_nvram_interface(mconfig, *this),
r24548r24549
8483      m_default_data(0),
8584      m_default_data_size(0),
8685      m_default_value(0),
87      m_default_value_set(false)
86      m_default_value_set(false),
87      m_completion_time(attotime::zero)
8888{
89   m_operation_time[WRITE_TIME]       = attotime::from_msec(2);
90   m_operation_time[WRITE_ALL_TIME]    = attotime::from_msec(8);
91   m_operation_time[ERASE_TIME]       = attotime::from_msec(1);
92   m_operation_time[ERASE_ALL_TIME]    = attotime::from_msec(8);
8993}
9094
9195
r24548r24549
9498//  to set the default data
9599//-------------------------------------------------
96100
97void base_eeprom_device::static_set_size(device_t &device, int cells, int cellbits)
101void eeprom_base_device::static_set_size(device_t &device, int cells, int cellbits)
98102{
99   base_eeprom_device &eeprom = downcast<base_eeprom_device &>(device);
103   eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device);
100104   eeprom.m_cells = cells;
101105   eeprom.m_data_bits = cellbits;
102106
r24548r24549
122126//  to set the default data
123127//-------------------------------------------------
124128
125void base_eeprom_device::static_set_default_data(device_t &device, const UINT8 *data, UINT32 size)
129void eeprom_base_device::static_set_default_data(device_t &device, const UINT8 *data, UINT32 size)
126130{
127   base_eeprom_device &eeprom = downcast<base_eeprom_device &>(device);
131   eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device);
128132   assert(eeprom.m_data_bits == 8);
129133   eeprom.m_default_data.u8 = const_cast<UINT8 *>(data);
130134   eeprom.m_default_data_size = size;
131135}
132136
133void base_eeprom_device::static_set_default_data(device_t &device, const UINT16 *data, UINT32 size)
137void eeprom_base_device::static_set_default_data(device_t &device, const UINT16 *data, UINT32 size)
134138{
135   base_eeprom_device &eeprom = downcast<base_eeprom_device &>(device);
139   eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device);
136140   assert(eeprom.m_data_bits == 16);
137141   eeprom.m_default_data.u16 = const_cast<UINT16 *>(data);
138142   eeprom.m_default_data_size = size / 2;
r24548r24549
144148//  to set the default value
145149//-------------------------------------------------
146150
147void base_eeprom_device::static_set_default_value(device_t &device, UINT32 value)
151void eeprom_base_device::static_set_default_value(device_t &device, UINT32 value)
148152{
149   base_eeprom_device &eeprom = downcast<base_eeprom_device &>(device);
153   eeprom_base_device &eeprom = downcast<eeprom_base_device &>(device);
150154   eeprom.m_default_value = value;
151155   eeprom.m_default_value_set = true;
152156}
153157
154158
155159//-------------------------------------------------
156//  read_data - read data at the given address
160//  static_set_timing - configuration helper
161//  to set timing constants for various operations
157162//-------------------------------------------------
158163
159UINT32 base_eeprom_device::read_data(offs_t address)
164void eeprom_base_device::static_set_timing(device_t &device, timing_type type, attotime duration)
160165{
161   if (m_data_bits == 16)
162      return m_addrspace[0]->read_word(address * 2);
163   else
164      return m_addrspace[0]->read_byte(address);
166   downcast<eeprom_base_device &>(device).m_operation_time[type] = duration;
165167}
166168
167169
168170//-------------------------------------------------
169//  write_data - write data at the given address
171//  read - read data at the given address
170172//-------------------------------------------------
171173
172void base_eeprom_device::write_data(offs_t address, UINT32 data)
174UINT32 eeprom_base_device::read(offs_t address)
173175{
174   if (m_data_bits == 16)
175      m_addrspace[0]->write_word(address * 2, data);
176   else
177      m_addrspace[0]->write_byte(address, data);
176   if (!ready())
177      logerror("EEPROM: Read performed before previous operation completed!");
178   return internal_read(address);
178179}
179180
180181
181182//-------------------------------------------------
183//  write - write data at the given address
184//-------------------------------------------------
185
186void eeprom_base_device::write(offs_t address, UINT32 data)
187{
188   if (!ready())
189      logerror("EEPROM: Write performed before previous operation completed!");
190   internal_write(address, data);
191   m_completion_time = machine().time() + m_operation_time[WRITE_TIME];
192}
193
194
195//-------------------------------------------------
196//  write_all - write data at all addresses
197//   (assumes an erase has previously been
198//   performed)
199//-------------------------------------------------
200
201void eeprom_base_device::write_all(UINT32 data)
202{
203   if (!ready())
204      logerror("EEPROM: Write all performed before previous operation completed!");
205   for (offs_t address = 0; address < (1 << m_address_bits); address++)
206      internal_write(address, internal_read(address) & data);
207   m_completion_time = machine().time() + m_operation_time[WRITE_ALL_TIME];
208}
209
210
211//-------------------------------------------------
212//  erase - erase data at the given address
213//-------------------------------------------------
214
215void eeprom_base_device::erase(offs_t address)
216{
217   if (!ready())
218      logerror("EEPROM: Erase performed before previous operation completed!");
219   internal_write(address, ~0);
220   m_completion_time = machine().time() + m_operation_time[ERASE_TIME];
221}
222
223
224//-------------------------------------------------
225//  erase_all - erase data at all addresses
226//-------------------------------------------------
227
228void eeprom_base_device::erase_all()
229{
230   if (!ready())
231      logerror("EEPROM: Erase all performed before previous operation completed!");
232   for (offs_t address = 0; address < (1 << m_address_bits); address++)
233      internal_write(address, ~0);
234   m_completion_time = machine().time() + m_operation_time[ERASE_ALL_TIME];
235}
236
237
238//-------------------------------------------------
182239//  device_validity_check - perform validity checks
183240//  on this device
184241//-------------------------------------------------
185242
186void base_eeprom_device::device_validity_check(validity_checker &valid) const
243void eeprom_base_device::device_validity_check(validity_checker &valid) const
187244{
188245   // ensure the number of cells is an even power of 2
189246   if (m_cells != (1 << m_address_bits))
r24548r24549
199256//  device_start - device-specific startup
200257//-------------------------------------------------
201258
202void base_eeprom_device::device_start()
259void eeprom_base_device::device_start()
203260{
261   // save states
262   save_item(NAME(m_completion_time));
204263}
205264
206265
r24548r24549
208267//  device_reset - device-specific reset
209268//-------------------------------------------------
210269
211void base_eeprom_device::device_reset()
270void eeprom_base_device::device_reset()
212271{
272   // reset any pending operations
273   m_completion_time = attotime::zero;
213274}
214275
215276
r24548r24549
218279//  any address spaces owned by this device
219280//-------------------------------------------------
220281
221const address_space_config *base_eeprom_device::memory_space_config(address_spacenum spacenum) const
282const address_space_config *eeprom_base_device::memory_space_config(address_spacenum spacenum) const
222283{
223284   return (spacenum == 0) ? &m_space_config : NULL;
224285}
r24548r24549
229290//  its default state
230291//-------------------------------------------------
231292
232void base_eeprom_device::nvram_default()
293void eeprom_base_device::nvram_default()
233294{
234295   UINT32 eeprom_length = 1 << m_address_bits;
235296   UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8;
r24548r24549
276337//  .nv file
277338//-------------------------------------------------
278339
279void base_eeprom_device::nvram_read(emu_file &file)
340void eeprom_base_device::nvram_read(emu_file &file)
280341{
281342   UINT32 eeprom_length = 1 << m_address_bits;
282343   UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8;
r24548r24549
293354//  .nv file
294355//-------------------------------------------------
295356
296void base_eeprom_device::nvram_write(emu_file &file)
357void eeprom_base_device::nvram_write(emu_file &file)
297358{
298359   UINT32 eeprom_length = 1 << m_address_bits;
299360   UINT32 eeprom_bytes = eeprom_length * m_data_bits / 8;
r24548r24549
303364      buffer[offs] = m_addrspace[0]->read_byte(offs);
304365   file.write(buffer, eeprom_bytes);
305366}
367
368
369//-------------------------------------------------
370//  internal_read - read data at the given address
371//-------------------------------------------------
372
373UINT32 eeprom_base_device::internal_read(offs_t address)
374{
375   if (m_data_bits == 16)
376      return m_addrspace[0]->read_word(address * 2);
377   else
378      return m_addrspace[0]->read_byte(address);
379}
380
381
382//-------------------------------------------------
383//  internal_write - write data at the given
384//   address
385//-------------------------------------------------
386
387void eeprom_base_device::internal_write(offs_t address, UINT32 data)
388{
389   if (m_data_bits == 16)
390      m_addrspace[0]->write_word(address * 2, data);
391   else
392      m_addrspace[0]->write_byte(address, data);
393}
trunk/src/emu/machine/eeprom.h
r24548r24549
4949//**************************************************************************
5050
5151#define MCFG_EEPROM_SIZE(_cells, _cellbits) \
52   base_eeprom_device::static_set_size(*device, _cells, _cellbits);
52   eeprom_base_device::static_set_size(*device, _cells, _cellbits);
5353#define MCFG_EEPROM_DATA(_data, _size) \
54   base_eeprom_device::static_set_default_data(*device, _data, _size);
54   eeprom_base_device::static_set_default_data(*device, _data, _size);
5555#define MCFG_EEPROM_DEFAULT_VALUE(_value) \
56   base_eeprom_device::static_set_default_value(*device, _value);
56   eeprom_base_device::static_set_default_value(*device, _value);
5757
58#define MCFG_EEPROM_WRITE_TIME(_value) \
59   eeprom_base_device::static_set_timing(*device, eeprom_base_device::WRITE_TIME, _value);
60#define MCFG_EEPROM_WRITE_ALL_TIME(_value) \
61   eeprom_base_device::static_set_timing(*device, eeprom_base_device::WRITE_ALL_TIME, _value);
62#define MCFG_EEPROM_ERASE_TIME(_value) \
63   eeprom_base_device::static_set_timing(*device, eeprom_base_device::ERASE_TIME, _value);
64#define MCFG_EEPROM_ERASE_ALL_TIME(_value) \
65   eeprom_base_device::static_set_timing(*device, eeprom_base_device::ERASE_ALL_TIME, _value);
5866
5967
68
6069//**************************************************************************
6170//  TYPE DEFINITIONS
6271//**************************************************************************
6372
64// ======================> base_eeprom_device
73// ======================> eeprom_base_device
6574
66class base_eeprom_device :    public device_t,
75class eeprom_base_device :    public device_t,
6776                     public device_memory_interface,
6877                     public device_nvram_interface
6978{
7079protected:
7180   // construction/destruction
72   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);
81   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);
7382
7483public:
84   // timing constants
85   enum timing_type
86   {
87      WRITE_TIME,         // default = 2ms
88      WRITE_ALL_TIME,      // default = 8ms
89      ERASE_TIME,         // default = 1ms
90      ERASE_ALL_TIME,      // default = 8ms
91      TIMING_COUNT
92   };
93
7594   // inline configuration helpers
7695   static void static_set_size(device_t &device, int cells, int cellbits);
7796   static void static_set_default_data(device_t &device, const UINT8 *data, UINT32 size);
7897   static void static_set_default_data(device_t &device, const UINT16 *data, UINT32 size);
7998   static void static_set_default_value(device_t &device, UINT32 value);
99   static void static_set_timing(device_t &device, timing_type type, attotime duration);
80100
81   // read/write data
82   UINT32 read_data(offs_t address);
83   void write_data(offs_t address, UINT32 data);
84
101   // read/write/erase data
102   UINT32 read(offs_t address);
103   void write(offs_t address, UINT32 data);
104   void write_all(UINT32 data);
105   void erase(offs_t address);
106   void erase_all();
107   
108   // status
109   bool ready() const { return machine().time() >= m_completion_time; }
110   
85111protected:
86112   // device-level overrides
87113   virtual void device_validity_check(validity_checker &valid) const;
r24548r24549
96122   virtual void nvram_read(emu_file &file);
97123   virtual void nvram_write(emu_file &file);
98124
125   // internal read/write without side-effects
126   UINT32 internal_read(offs_t address);
127   void internal_write(offs_t address, UINT32 data);
128
99129   // configuration state
100130   UINT32               m_cells;
101131   UINT8               m_address_bits;
r24548r24549
105135   UINT32                  m_default_data_size;
106136   UINT32                  m_default_value;
107137   bool                    m_default_value_set;
138   attotime            m_operation_time[TIMING_COUNT];
139
140   // live state
141   attotime            m_completion_time;
108142};
109143
110144
trunk/src/mess/machine/sega8_rom.c
r24548r24549
684684   if (offset == 0x8000 && m_93c46_enabled)
685685   {
686686      UINT8 value = (m_93c46_lines & 0xfc) | 0x02;
687      value |= m_eeprom->read_bit() ? 1 : 0;
687      value |= m_eeprom->do_read() ? 1 : 0;
688688      return value;
689689   }
690690
r24548r24549
699699   if (offset == 0x8000 && m_93c46_enabled)
700700   {
701701      m_93c46_lines = data;
702      m_eeprom->write_bit((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
703      m_eeprom->set_cs_line(!(data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
704      m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
702      m_eeprom->di_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
703      m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
704      m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
705705   }
706706}
707707
r24548r24549
714714         {
715715            m_eeprom->reset();
716716            logerror("eeprom CS = 1\n");
717            m_eeprom->set_cs_line(ASSERT_LINE);
717            m_eeprom->cs_write(CLEAR_LINE);
718718         }
719719         m_93c46_enabled = BIT(data, 3);
720720         logerror("eeprom %s\n", m_93c46_enabled ? "enabled" : "disabled");
r24548r24549
729729}
730730
731731MACHINE_CONFIG_FRAGMENT( gg_eeprom )
732   MCFG_EEPROM_93C46_ADD("eeprom")
732   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
733733MACHINE_CONFIG_END
734734
735735machine_config_constructor sega8_eeprom_device::device_mconfig_additions() const
trunk/src/mess/machine/sega8_rom.h
r24548r24549
213213protected:
214214   UINT8 m_rom_bank_base[3];
215215
216   required_device<serial_eeprom_device> m_eeprom;
216   required_device<eeprom_serial_93cxx_device> m_eeprom;
217217   int m_93c46_enabled;
218218   UINT8 m_93c46_lines;
219219};
trunk/src/mess/drivers/ip20.c
r24548r24549
7373   TIMER_CALLBACK_MEMBER(ip20_timer_rtc);
7474   required_device<wd33c93_device> m_wd33c93;
7575   required_device<scc8530_t> m_scc;
76   required_device<serial_eeprom_device> m_eeprom;
76   required_device<eeprom_serial_93cxx_device> m_eeprom;
7777   inline void ATTR_PRINTF(3,4) verboselog(int n_level, const char *s_fmt, ... );
7878   required_device<cpu_device> m_maincpu;
7979
r24548r24549
106106   return 0;
107107}
108108
109static const serial_eeprom_interface eeprom_interface_93C56 =
110{
111   "*110x",            // read         110x aaaaaaaa
112   "*101x",            // write        101x aaaaaaaa dddddddd
113   "*111x",            // erase        111x aaaaaaaa
114   "*10000xxxxxxx",    // lock         100x 00xxxx
115   "*10011xxxxxxx",    // unlock       100x 11xxxx
116};
117109
118110
119
120
121111#define RTC_DAYOFWEEK   state->m_RTC.nRAM[0x0e]
122112#define RTC_YEAR        state->m_RTC.nRAM[0x0b]
123113#define RTC_MONTH       state->m_RTC.nRAM[0x0a]
r24548r24549
169159      return m_HPC.nMiscStatus;
170160   case 0x01bc:
171161//      verboselog(machine, 2, "HPC CPU Serial EEPROM Read\n" );
172      return m_eeprom->read_bit() << 4;
162      return m_eeprom->do_read() << 4;
173163   case 0x01c4:
174164      verboselog(2, "HPC Local IO Register 0 Mask Read: %08x (%08x)\n", m_HPC.nLocalIOReg0Mask, mem_mask );
175165      return m_HPC.nLocalIOReg0Mask;
r24548r24549
353343      {
354344         verboselog(2, "    CPU board LED on\n" );
355345      }
356      m_eeprom->write_bit((data & 0x00000008) ? 1 : 0 );
357      m_eeprom->set_cs_line((data & 0x00000002) ? ASSERT_LINE : CLEAR_LINE );
358      m_eeprom->set_clock_line((data & 0x00000004) ? CLEAR_LINE : ASSERT_LINE );
346      m_eeprom->di_write((data & 0x00000008) ? 1 : 0 );
347      m_eeprom->cs_write((data & 0x00000002) ? CLEAR_LINE : ASSERT_LINE );
348      m_eeprom->clk_write((data & 0x00000004) ? CLEAR_LINE : ASSERT_LINE );
359349      break;
360350   case 0x01c4:
361351      verboselog(2, "HPC Local IO Register 0 Mask Write: %08x (%08x)\n", data, mem_mask );
r24548r24549
625615   MCFG_SOUND_MODIFY( "scsi:cdrom:cdda" )
626616   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "^^^mono", 1.0)
627617
628   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 16, eeprom_interface_93C56)
618   MCFG_EEPROM_SERIAL_93C56_ADD("eeprom")
629619MACHINE_CONFIG_END
630620
631621ROM_START( ip204415 )
trunk/src/mame/machine/kaneko_calc3.c
r24548r24549
13301330               //printf("save to eeprom\n");
13311331
13321332               {
1333                  address_space &eeprom_space = space.machine().device<serial_eeprom_device>(":eeprom")->space();
1333                  address_space &eeprom_space = space.machine().device<eeprom_serial_93cxx_device>(":eeprom")->space();
13341334
13351335                  for (i=0;i<0x80;i++)
13361336                  {
r24548r24549
16731673         }
16741674#endif
16751675         {
1676            address_space &eeprom_space = space.machine().device<serial_eeprom_device>(":eeprom")->space();
1676            address_space &eeprom_space = space.machine().device<eeprom_serial_93cxx_device>(":eeprom")->space();
16771677
16781678            for (i=0;i<0x80;i++)
16791679            {
trunk/src/mame/machine/leland.c
r24548r24549
820820{
821821   if (LOG_EEPROM) logerror("%s:EE write %d%d%d\n", machine().describe_context(),
822822         (data >> 6) & 1, (data >> 5) & 1, (data >> 4) & 1);
823   m_eeprom->write_bit     ((data & 0x10) >> 4);
824   m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
825   m_eeprom->set_cs_line   ((~data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
823   m_eeprom->di_write ((data & 0x10) >> 4);
824   m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
825   m_eeprom->cs_write ((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
826826}
827827
828828
r24548r24549
11221122
11231123         if (LOG_EEPROM) logerror("%04X:EE write %d%d%d\n", space.device().safe_pc(),
11241124               (data >> 6) & 1, (data >> 5) & 1, (data >> 4) & 1);
1125         m_eeprom->write_bit     ((data & 0x10) >> 4);
1126         m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
1127         m_eeprom->set_cs_line   ((~data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
1125         m_eeprom->di_write ((data & 0x10) >> 4);
1126         m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
1127         m_eeprom->cs_write ((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
11281128         break;
11291129
11301130      case 0x0a:  /* /OGIA */
trunk/src/mame/machine/gaelco2.c
r24548r24549
263263WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_cs_w)
264264{
265265   /* bit 0 is CS (active low) */
266   m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
266   m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
267267}
268268
269269WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_sk_w)
270270{
271271   /* bit 0 is SK (active high) */
272   m_eeprom->set_clock_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
272   m_eeprom->clk_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
273273}
274274
275275WRITE16_MEMBER(gaelco2_state::gaelco2_eeprom_data_w)
276276{
277277   /* bit 0 is EEPROM data (DIN) */
278   m_eeprom->write_bit(data & 0x01);
278   m_eeprom->di_write(data & 0x01);
279279}
280280
281281/***************************************************************************
trunk/src/mame/machine/kaneko_toybox.c
r24548r24549
199199      {
200200         UINT8* nvdat = (UINT8*)&kaneko16_mcu_ram[mcu_offset];
201201
202         address_space &eeprom_space = machine.device<serial_eeprom_device>(":eeprom")->space();
202         address_space &eeprom_space = machine.device<eeprom_serial_93cxx_device>(":eeprom")->space();
203203
204204         for (int i=0;i<0x80;i++)
205205         {
r24548r24549
213213
214214      case 0x42:  // Write to NVRAM
215215      {
216         address_space &eeprom_space = machine.device<serial_eeprom_device>(":eeprom")->space();
216         address_space &eeprom_space = machine.device<eeprom_serial_93cxx_device>(":eeprom")->space();
217217         UINT8* nvdat = (UINT8*)&kaneko16_mcu_ram[mcu_offset];
218218         for (int i=0;i<0x80;i++)
219219         {
r24548r24549
232232            //memcpy(m_nvram_save, bonkadv_mcu_43, sizeof(bonkadv_mcu_43));
233233
234234
235            address_space &eeprom_space = machine.device<serial_eeprom_device>(":eeprom")->space();
235            address_space &eeprom_space = machine.device<eeprom_serial_93cxx_device>(":eeprom")->space();
236236            UINT8* nvdat = (UINT8*)&bonkadv_mcu_43[0];
237237            for (int i=0;i<0x80;i++)
238238            {
trunk/src/mame/includes/undrfire.h
r24548r24549
3535   optional_device<cpu_device> m_subcpu;
3636   required_device<tc0100scn_device> m_tc0100scn;
3737   required_device<tc0480scp_device> m_tc0480scp;
38   required_device<serial_eeprom_device> m_eeprom;
38   required_device<eeprom_serial_93cxx_device> m_eeprom;
3939   optional_shared_ptr<UINT32> m_ram;
4040   optional_shared_ptr<UINT32> m_shared_ram;
4141   UINT16 m_coin_word;
trunk/src/mame/includes/xorworld.h
r24548r24549
2626   UINT32 screen_update_xorworld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
2727   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
2828   required_device<cpu_device> m_maincpu;
29   required_device<serial_eeprom_device> m_eeprom;
29   required_device<eeprom_serial_93cxx_device> m_eeprom;
3030};
trunk/src/mame/includes/kaneko16.h
r24548r24549
1414#include "machine/kaneko_calc3.h"
1515#include "machine/kaneko_toybox.h"
1616#include "sound/okim6295.h"
17#include "machine/eepromser.h"
1817
1918
2019class kaneko16_state : public driver_device
r24548r24549
2726      m_oki(*this, "oki"),
2827      m_oki1(*this, "oki1"),
2928      m_oki2(*this, "oki2"),
30      m_eeprom(*this, "eeprom"),
3129      m_spriteram(*this, "spriteram"),
3230      m_mainram(*this, "mainram"),
3331      m_view2_0(*this, "view2_0"),
r24548r24549
4139   optional_device<okim6295_device> m_oki;
4240   optional_device<okim6295_device> m_oki1;
4341   optional_device<okim6295_device> m_oki2;
44   optional_device<serial_eeprom_device> m_eeprom;
4542   optional_shared_ptr<UINT16> m_spriteram;
4643   optional_shared_ptr<UINT16> m_mainram;
4744   optional_device<kaneko_view2_tilemap_device> m_view2_0;
r24548r24549
6764   DECLARE_WRITE16_MEMBER(kaneko16_ay2_YM2149_w);
6865   DECLARE_WRITE16_MEMBER(bakubrkr_oki_bank_sw);
6966
70   DECLARE_WRITE8_MEMBER(kaneko16_eeprom_reset_w);
71
7267   DECLARE_DRIVER_INIT(kaneko16);
7368   DECLARE_DRIVER_INIT(samplebank);
7469
trunk/src/mame/includes/20pacgal.h
r24548r24549
3333
3434   /* devices */
3535   required_device<cpu_device> m_maincpu;
36   required_device<serial_eeprom_device> m_eeprom;
36   required_device<eeprom_serial_93cxx_device> m_eeprom;
3737
3838   /* memory */
3939   UINT8 m_sprite_gfx_ram[0x2000];
trunk/src/mame/includes/taito_z.h
r24548r24549
5656   required_device<cpu_device> m_maincpu;
5757   optional_device<cpu_device> m_audiocpu;
5858   required_device<cpu_device> m_subcpu;
59   optional_device<serial_eeprom_device> m_eeprom;
59   optional_device<eeprom_serial_93cxx_device> m_eeprom;
6060   optional_device<tc0480scp_device> m_tc0480scp;
6161   optional_device<tc0150rod_device> m_tc0150rod;
6262   optional_device<tc0100scn_device> m_tc0100scn;
trunk/src/mame/includes/model2.h
r24548r24549
180180   optional_device<cpu_device> m_tgp;
181181   optional_device<cpu_device> m_dsp;
182182   optional_device<cpu_device> m_drivecpu;
183   required_device<serial_eeprom_device> m_eeprom;
183   required_device<eeprom_serial_93cxx_device> m_eeprom;
184184};
185185
186186/*----------- defined in video/model2.c -----------*/
trunk/src/mame/includes/leland.h
r24548r24549
2929
3030   required_device<cpu_device> m_master;
3131   required_device<cpu_device> m_slave;
32   required_device<serial_eeprom_device> m_eeprom;
32   required_device<eeprom_serial_93cxx_device> m_eeprom;
3333
3434   UINT8 m_dac_control;
3535   UINT8 *m_alleymas_kludge_mem;
trunk/src/mame/includes/segas32.h
r24548r24549
254254   DECLARE_WRITE_LINE_MEMBER(ym3438_irq_handler);
255255   required_device<cpu_device> m_maincpu;
256256   required_device<cpu_device> m_soundcpu;
257   required_device<serial_eeprom_device> m_eeprom;
257   required_device<eeprom_serial_93cxx_device> m_eeprom;
258258};
259259
260260/*----------- defined in machine/segas32.c -----------*/
trunk/src/mame/includes/gaelco3d.h
r24548r24549
7272   required_shared_ptr<UINT16> m_adsp_fastram_base;
7373   required_device<cpu_device> m_maincpu;
7474   required_device<cpu_device> m_adsp;
75   required_device<serial_eeprom_device> m_eeprom;
75   required_device<eeprom_serial_93cxx_device> m_eeprom;
7676   required_device<cpu_device> m_tms;
7777   required_device<gaelco_serial_device> m_serial;
7878   UINT16 m_sound_data;
trunk/src/mame/includes/kickgoal.h
r24548r24549
5656
5757   /* devices */
5858   required_device<okim6295_device> m_adpcm;
59   required_device<serial_eeprom_device> m_eeprom;
59   required_device<eeprom_serial_93cxx_device> m_eeprom;
6060   DECLARE_READ16_MEMBER(kickgoal_eeprom_r);
6161   DECLARE_WRITE16_MEMBER(kickgoal_eeprom_w);
6262   DECLARE_WRITE16_MEMBER(kickgoal_fgram_w);
trunk/src/mame/includes/model3.h
r24548r24549
209209   void model3_exit();
210210   DECLARE_WRITE_LINE_MEMBER(scsp_irq);
211211   required_device<cpu_device> m_audiocpu;
212   required_device<serial_eeprom_device> m_eeprom;
212   required_device<eeprom_serial_93cxx_device> m_eeprom;
213213};
214214
215215
trunk/src/mame/includes/playmark.h
r24548r24549
5353
5454   /* devices */
5555   required_device<okim6295_device> m_oki;
56   optional_device<serial_eeprom_device> m_eeprom;
56   optional_device<eeprom_serial_93cxx_device> m_eeprom;
5757   DECLARE_WRITE16_MEMBER(coinctrl_w);
5858   DECLARE_WRITE16_MEMBER(wbeachvl_coin_eeprom_w);
5959   DECLARE_WRITE16_MEMBER(hotmind_coin_eeprom_w);
trunk/src/mame/includes/gaelco2.h
r24548r24549
1717   required_device<buffered_spriteram16_device> m_spriteram;
1818   required_shared_ptr<UINT16> m_vregs;
1919   optional_shared_ptr<UINT16> m_snowboar_protection;
20   optional_device<serial_eeprom_device> m_eeprom;
20   optional_device<eeprom_serial_93cxx_device> m_eeprom;
2121
2222   int m_clr_gun_int;
2323   UINT8 m_analog_ports[2];
trunk/src/mame/includes/toaplan2.h
r24548r24549
154154   optional_device<nmk112_device> m_nmk112;
155155   optional_device<okim6295_device> m_oki;
156156   optional_device<okim6295_device> m_oki1;
157   optional_device<serial_eeprom_device> m_eeprom;
157   optional_device<eeprom_serial_93cxx_device> m_eeprom;
158158
159159protected:
160160   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
trunk/src/mame/includes/galastrm.h
r24548r24549
3434   required_shared_ptr<UINT32> m_spriteram;
3535
3636   required_device<cpu_device> m_maincpu;
37   required_device<serial_eeprom_device> m_eeprom;
37   required_device<eeprom_serial_93cxx_device> m_eeprom;
3838   required_device<tc0100scn_device> m_tc0100scn;
3939   required_device<tc0480scp_device> m_tc0480scp;
4040   UINT16 m_coin_word;
trunk/src/mame/includes/centiped.h
r24548r24549
33    Atari Centipede hardware
44
55*************************************************************************/
6
67#include "machine/eepromser.h"
78
89class centiped_state : public driver_device
r24548r24549
8788   void milliped_set_color(offs_t offset, UINT8 data);
8889   inline int read_trackball(int idx, int switch_port);
8990   required_device<cpu_device> m_maincpu;
90   optional_device<serial_eeprom_device> m_eeprom;
91   optional_device<eeprom_serial_93cxx_device> m_eeprom;
9192};
trunk/src/mame/includes/pirates.h
r24548r24549
4242   void pirates_decrypt_s();
4343   void pirates_decrypt_oki();
4444   required_device<cpu_device> m_maincpu;
45   required_device<serial_eeprom_device> m_eeprom;
45   required_device<eeprom_serial_93cxx_device> m_eeprom;
4646   required_device<okim6295_device> m_oki;
4747};
trunk/src/mame/includes/jaguar.h
r24548r24549
322322   emu_file *jaguar_nvram_fopen( UINT32 openflags);
323323   void jaguar_nvram_load();
324324   void jaguar_nvram_save();
325   optional_device<serial_eeprom_device> m_eeprom;
325   optional_device<eeprom_serial_93cxx_device> m_eeprom;
326326   optional_device<vt83c461_device> m_ide;
327327};
trunk/src/mame/includes/seta2.h
r24548r24549
3131
3232   optional_device<x1_010_device> m_x1;
3333   optional_device<okim9810_device> m_oki;
34   optional_device<serial_eeprom_device> m_eeprom;
34   optional_device<eeprom_serial_93cxx_device> m_eeprom;
3535
3636   int m_xoffset;
3737   int m_yoffset;
trunk/src/mame/includes/plygonet.h
r24548r24549
2626   required_device<cpu_device> m_maincpu;
2727   required_device<cpu_device> m_audiocpu;
2828   required_device<cpu_device> m_dsp;
29   required_device<serial_eeprom_device> m_eeprom;
29   required_device<eeprom_serial_93cxx_device> m_eeprom;
3030   required_device<k053936_device> m_k053936;
3131
3232   /* 68k-side shared ram */
trunk/src/mame/includes/8080bw.h
r24548r24549
2828   optional_device<timer_device> m_claybust_gun_on;
2929   optional_device<discrete_device> m_discrete;
3030   optional_device<speaker_sound_device> m_speaker;
31   optional_device<serial_eeprom_device> m_eeprom;
31   optional_device<eeprom_serial_93cxx_device> m_eeprom;
3232
3333
3434   /* misc game specific */
trunk/src/mame/includes/fromanc2.h
r24548r24549
3333   /* devices */
3434   required_device<cpu_device> m_audiocpu;
3535   optional_device<cpu_device> m_subcpu;
36   optional_device<serial_eeprom_device> m_eeprom;
36   optional_device<eeprom_serial_93cxx_device> m_eeprom;
3737   DECLARE_WRITE16_MEMBER(fromanc2_sndcmd_w);
3838   DECLARE_WRITE16_MEMBER(fromanc2_portselect_w);
3939   DECLARE_READ16_MEMBER(fromanc2_keymatrix_r);
trunk/src/mame/includes/superchs.h
r24548r24549
5050   required_device<cpu_device> m_maincpu;
5151   required_device<cpu_device> m_subcpu;
5252   required_device<tc0480scp_device> m_tc0480scp;
53   required_device<serial_eeprom_device> m_eeprom;
53   required_device<eeprom_serial_93cxx_device> m_eeprom;
5454};
trunk/src/mame/includes/dkong.h
r24548r24549
9797   /* devices */
9898   required_device<cpu_device> m_maincpu;
9999   optional_device<cpu_device> m_soundcpu;
100   optional_device<serial_eeprom_device> m_eeprom;
100   optional_device<eeprom_serial_93cxx_device> m_eeprom;
101101   optional_device<cpu_device> m_dev_n2a03a;
102102   optional_device<cpu_device> m_dev_n2a03b;
103103   optional_device<m58819_device> m_m58819;
trunk/src/mame/includes/othunder.h
r24548r24549
6363   /* devices */
6464   required_device<cpu_device> m_maincpu;
6565   required_device<cpu_device> m_audiocpu;
66   optional_device<serial_eeprom_device> m_eeprom;
66   optional_device<eeprom_serial_93cxx_device> m_eeprom;
6767   required_device<tc0220ioc_device> m_tc0220ioc;
6868   required_device<tc0100scn_device> m_tc0100scn;
6969   required_device<tc0110pcr_device> m_tc0110pcr;
trunk/src/mame/includes/tecmosys.h
r24548r24549
9494   DECLARE_WRITE_LINE_MEMBER(sound_irq);
9595   required_device<cpu_device> m_maincpu;
9696   required_device<cpu_device> m_audiocpu;
97   required_device<serial_eeprom_device> m_eeprom;
97   required_device<eeprom_serial_93cxx_device> m_eeprom;
9898};
trunk/src/mame/includes/stlforce.h
r24548r24549
5353   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
5454   required_device<cpu_device> m_maincpu;
5555   required_device<okim6295_device> m_oki;
56   required_device<serial_eeprom_device> m_eeprom;
56   required_device<eeprom_serial_93cxx_device> m_eeprom;
5757};
trunk/src/mame/includes/gunbustr.h
r24548r24549
3434   required_device<tc0480scp_device> m_tc0480scp;
3535   required_shared_ptr<UINT32> m_ram;
3636   required_shared_ptr<UINT32> m_spriteram;
37   required_device<serial_eeprom_device> m_eeprom;
37   required_device<eeprom_serial_93cxx_device> m_eeprom;
3838
3939   bool m_coin_lockout;
4040   UINT16 m_coin_word;
trunk/src/mame/includes/esd16.h
r24548r24549
4949   int           m_tilemap1_color;
5050
5151   /* devices */
52   optional_device<serial_eeprom_device> m_eeprom;
52   optional_device<eeprom_serial_93cxx_device> m_eeprom;
5353   DECLARE_WRITE16_MEMBER(esd16_sound_command_w);
5454   DECLARE_WRITE16_MEMBER(hedpanic_platform_w);
5555   DECLARE_READ16_MEMBER(esd_eeprom_r);
trunk/src/mame/includes/psikyosh.h
r24548r24549
4949
5050   /* devices */
5151   required_device<cpu_device> m_maincpu;
52   required_device<serial_eeprom_device> m_eeprom;
52   required_device<eeprom_serial_93cxx_device> m_eeprom;
5353
5454   DECLARE_WRITE32_MEMBER(psikyosh_irqctrl_w);
5555   DECLARE_WRITE32_MEMBER(paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w);
trunk/src/mame/includes/lordgun.h
r24548r24549
8383   required_device<cpu_device> m_maincpu;
8484   required_device<cpu_device> m_soundcpu;
8585   required_device<okim6295_device> m_oki;
86   required_device<serial_eeprom_device> m_eeprom;
86   required_device<eeprom_serial_93cxx_device> m_eeprom;
8787};
8888
8989/*----------- defined in video/lordgun.c -----------*/
trunk/src/mame/includes/ssv.h
r24548r24549
3838
3939   required_device<cpu_device> m_maincpu;
4040   required_device<device_t> m_ensoniq;
41   optional_device<serial_eeprom_device> m_eeprom;
41   optional_device<eeprom_serial_93cxx_device> m_eeprom;
4242   optional_device<upd96050_device> m_dsp;
4343
4444   required_shared_ptr<UINT16> m_mainram;
trunk/src/mame/includes/cave.h
r24548r24549
215215   void sailormn_tilebank_w(int bank);
216216   DECLARE_WRITE_LINE_MEMBER(irqhandler);
217217   DECLARE_WRITE_LINE_MEMBER(sound_irq_gen);
218   optional_device<serial_eeprom_device> m_eeprom;
218   optional_device<eeprom_serial_93cxx_device> m_eeprom;
219219
220220private:
221221   inline void get_tile_info( tile_data &tileinfo, int tile_index, int GFX );
trunk/src/mame/includes/metro.h
r24548r24549
7070   optional_shared_ptr<UINT16> m_input_sel;
7171   optional_shared_ptr<UINT16> m_k053936_ram;
7272
73   optional_device<serial_eeprom_device> m_eeprom;
73   optional_device<eeprom_serial_93cxx_device> m_eeprom;
7474
7575
7676   int         m_flip_screen;
trunk/src/mame/includes/stv.h
r24548r24549
144144   required_device<cpu_device> m_maincpu;
145145   required_device<cpu_device> m_slave;
146146   required_device<m68000_base_device> m_audiocpu;
147   optional_device<serial_eeprom_device> m_eeprom;
147   optional_device<eeprom_serial_93cxx_device> m_eeprom;
148148
149149   bitmap_rgb32 m_tmpbitmap;
150150   DECLARE_VIDEO_START(stv_vdp2);
trunk/src/mame/includes/naomi.h
r24548r24549
2929   optional_shared_ptr<UINT64> pvr2_framebuffer_ram;
3030   optional_shared_ptr<UINT64> elan_ram;
3131   optional_device<macronix_29l001mc_device> m_awflash;
32   optional_device<serial_eeprom_device> m_eeprom;
32   optional_device<eeprom_serial_93cxx_device> m_eeprom;
3333
3434   DECLARE_WRITE_LINE_MEMBER(aica_irq);
3535   DECLARE_MACHINE_RESET(naomi);
trunk/src/mame/includes/unico.h
r24548r24549
5252   void zeropnt2_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect);
5353   required_device<cpu_device> m_maincpu;
5454   optional_device<okim6295_device> m_oki;
55   optional_device<serial_eeprom_device> m_eeprom;
55   optional_device<eeprom_serial_93cxx_device> m_eeprom;
5656};
trunk/src/mame/includes/mitchell.h
r24548r24549
3232   required_shared_ptr<UINT8> m_colorram;
3333   required_shared_ptr<UINT8> m_videoram;
3434
35   optional_device<serial_eeprom_device> m_eeprom;
35   optional_device<eeprom_serial_93cxx_device> m_eeprom;
3636   optional_device<msm5205_device> m_msm;
3737
3838   /* video-related */
trunk/src/mame/includes/deco_mlc.h
r24548r24549
6464   void draw_sprites( const rectangle &cliprect, int scanline, UINT32* dest);
6565   void descramble_sound(  );
6666   required_device<cpu_device> m_maincpu;
67   required_device<serial_eeprom_device> m_eeprom;
67   required_device<eeprom_serial_93cxx_device> m_eeprom;
6868
6969   DECLARE_READ16_MEMBER( sh96_protection_region_0_146_r );
7070   DECLARE_WRITE16_MEMBER( sh96_protection_region_0_146_w );
trunk/src/mame/includes/simpl156.h
r24548r24549
2626   /* devices */
2727   required_device<cpu_device> m_maincpu;
2828   required_device<deco16ic_device> m_deco_tilegen1;
29   required_device<serial_eeprom_device> m_eeprom;
29   required_device<eeprom_serial_93cxx_device> m_eeprom;
3030   required_device<okim6295_device> m_okimusic;
3131   /* memory pointers */
3232   UINT16 *  m_pf1_rowscroll;
trunk/src/mame/includes/galpani2.h
r24548r24549
7171
7272   DECLARE_WRITE16_MEMBER( galpani2_bg15_w );
7373   required_device<okim6295_device> m_oki2;
74   required_device<serial_eeprom_device> m_eeprom;
74   required_device<eeprom_serial_93cxx_device> m_eeprom;
7575};
trunk/src/mame/includes/deco32.h
r24548r24549
5252   optional_device<decospr_device> m_sprgen1;
5353   optional_device<decospr_device> m_sprgen2;
5454
55   optional_device<serial_eeprom_device> m_eeprom;
55   optional_device<eeprom_serial_93cxx_device> m_eeprom;
5656   optional_device<okim6295_device> m_oki1;
5757   optional_device<okim6295_device> m_oki2;
5858
trunk/src/mame/includes/policetr.h
r24548r24549
5757   INTERRUPT_GEN_MEMBER(irq4_gen);
5858   void render_display_list(offs_t offset);
5959   required_device<cpu_device> m_maincpu;
60   required_device<serial_eeprom_device> m_eeprom;
60   required_device<eeprom_serial_93cxx_device> m_eeprom;
6161
6262protected:
6363   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
trunk/src/mame/includes/seibuspi.h
r24548r24549
3333   required_shared_ptr<UINT32> m_mainram;
3434   optional_shared_ptr<UINT32> m_scrollram;
3535   optional_memory_region m_z80_rom;
36   optional_device<serial_eeprom_device> m_eeprom;
36   optional_device<eeprom_serial_93cxx_device> m_eeprom;
3737   optional_device<intel_e28f008sa_device> m_soundflash1;
3838   optional_device<intel_e28f008sa_device> m_soundflash2;
3939   optional_device<fifo7200_device> m_soundfifo1;
trunk/src/mame/includes/psikyo4.h
r24548r24549
3737
3838   /* devices */
3939   required_device<cpu_device> m_maincpu;
40   required_device<serial_eeprom_device> m_eeprom;
40   required_device<eeprom_serial_93cxx_device> m_eeprom;
4141
4242   DECLARE_WRITE32_MEMBER(ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w);
4343   DECLARE_WRITE32_MEMBER(ps4_bgpen_1_dword_w);
trunk/src/mame/drivers/moo.c
r24548r24549
5252#define MOO_DMADELAY (100)
5353
5454
55static const serial_eeprom_interface eeprom_intf =
56{
57   "011000",       /* read command */
58   "011100",       /* write command */
59   "0100100000000",    /* erase command */
60   "0100000000000",    /* lock command */
61   "0100110000000"     /* unlock command */
62};
63
6455READ16_MEMBER(moo_state::control2_r)
6556{
6657   return m_cur_control2;
r24548r24549
376367   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE4 )
377368
378369   PORT_START("IN1")
379   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
380   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM ready (always 1) */
370   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
371   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
381372   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
382373   PORT_SERVICE_NO_TOGGLE(0x08, IP_ACTIVE_LOW)
383374   PORT_DIPNAME( 0x10, 0x00, "Sound Output")       PORT_DIPLOCATION("SW1:1")
r24548r24549
392383   PORT_DIPSETTING(    0x80, "4")
393384
394385   PORT_START( "EEPROMOUT" )
395   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
396   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
397   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
386   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
387   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
388   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
398389
399390   PORT_START("P1_P3")
400391   KONAMI16_LSB( 1, IPT_UNKNOWN, IPT_START1 )
r24548r24549
506497   MCFG_MACHINE_START_OVERRIDE(moo_state,moo)
507498   MCFG_MACHINE_RESET_OVERRIDE(moo_state,moo)
508499
509   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
500   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
510501
511502   MCFG_K053252_ADD("k053252", 16000000/2, moo_k053252_intf)
512503
r24548r24549
551542   MCFG_MACHINE_START_OVERRIDE(moo_state,moo)
552543   MCFG_MACHINE_RESET_OVERRIDE(moo_state,moo)
553544
554   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
545   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
555546
556547   /* video hardware */
557548   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
trunk/src/mame/drivers/wheelfir.c
r24548r24549
818818
819819   MCFG_PALETTE_LENGTH(NUM_COLORS)
820820
821   MCFG_EEPROM_93C46_ADD("eeprom")
821   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
822822
823823
824824
trunk/src/mame/drivers/fcrash.c
r24548r24549
9494#include "sound/okim6295.h"
9595#include "machine/eepromser.h"
9696
97static const serial_eeprom_interface qsound_eeprom_interface =
98{
99   "0110", /*  read command */
100   "0101", /* write command */
101   "0111"  /* erase command */
102};
103
10497WRITE16_MEMBER( cps_state::fcrash_soundlatch_w )
10598{
10699   if (ACCESSING_BITS_0_7)
r24548r24549
13201313   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START3 )
13211314
13221315   PORT_START( "EEPROMIN" )
1323   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1316   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
13241317
13251318   PORT_START( "EEPROMOUT" )
1326   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1327   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1328   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1319   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
1320   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
1321   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
13291322INPUT_PORTS_END
13301323
13311324
r24548r24549
19741967
19751968   MCFG_MACHINE_START_OVERRIDE(cps_state, dinopic)
19761969
1977   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface)
1970   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
19781971
19791972   /* video hardware */
19801973   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
21412134   MCFG_PALETTE_LENGTH(0xc00)
21422135   MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
21432136
2144   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface)
2137   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
21452138
21462139   /* sound hardware */
21472140   MCFG_SPEAKER_STANDARD_MONO("mono")
r24548r24549
22192212
22202213   MCFG_MACHINE_START_OVERRIDE(cps_state, punipic)
22212214
2222   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface)
2215   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
22232216
22242217   /* video hardware */
22252218   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
26092602
26102603   MCFG_MACHINE_START_OVERRIDE(cps_state, slampic)
26112604
2612   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface)
2605   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
26132606
26142607   /* video hardware */
26152608   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/tmaster.c
r24548r24549
571571
572572// NVRAM (5 x EEPROM)
573573
574static const serial_eeprom_interface galgames_eeprom_interface =
575{
576   "*1100",            // read         110 0aaaaaaaaaa
577   "*1010",            // write        101 0aaaaaaaaaa dddddddd
578   "*1110",            // erase        111 0aaaaaaaaaa
579   "*10000xxxxxxxxx",  // lock         100 00xxxxxxxxx
580   "*10011xxxxxxxxx",  // unlock       100 11xxxxxxxxx
581   0,                  // multi_read
582   1                   // reset_delay
583};
584
585574#define GALGAMES_EEPROM_BIOS  "eeprom_bios"
586575#define GALGAMES_EEPROM_CART1 "eeprom_cart1"
587576#define GALGAMES_EEPROM_CART2 "eeprom_cart2"
r24548r24549
592581
593582READ16_MEMBER(tmaster_state::galgames_eeprom_r)
594583{
595   serial_eeprom_device *eeprom = machine().device<serial_eeprom_device>(galgames_eeprom_names[m_galgames_cart]);
584   eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[m_galgames_cart]);
596585
597   return eeprom->read_bit() ? 0x80 : 0x00;
586   return eeprom->do_read() ? 0x80 : 0x00;
598587}
599588
600589WRITE16_MEMBER(tmaster_state::galgames_eeprom_w)
r24548r24549
604593
605594   if ( ACCESSING_BITS_0_7 )
606595   {
607      serial_eeprom_device *eeprom = machine().device<serial_eeprom_device>(galgames_eeprom_names[m_galgames_cart]);
596      eeprom_serial_93cxx_device *eeprom = machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[m_galgames_cart]);
608597
609598      // latch the bit
610      eeprom->write_bit(data & 0x0001);
599      eeprom->di_write(data & 0x0001);
611600
612601      // clock line asserted: write latch or select next bit to read
613      eeprom->set_clock_line((data & 0x0002) ? ASSERT_LINE : CLEAR_LINE );
602      eeprom->clk_write((data & 0x0002) ? ASSERT_LINE : CLEAR_LINE );
614603   }
615604}
616605
r24548r24549
677666      {
678667         case 0x07:      // 7 resets the eeprom
679668            for (i = 0; i < 5; i++)
680               machine().device<serial_eeprom_device>(galgames_eeprom_names[i])->set_cs_line(ASSERT_LINE);
669               machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[i])->cs_write(CLEAR_LINE);
681670            break;
682671
683672         case 0x00:
r24548r24549
685674         case 0x02:
686675         case 0x03:
687676         case 0x04:
688            machine().device<serial_eeprom_device>(galgames_eeprom_names[data & 0xff])->set_cs_line(CLEAR_LINE);
677            machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[data & 0xff])->cs_write(ASSERT_LINE);
689678            galgames_update_rombank(data & 0xff);
690679            break;
691680
692681         default:
693            machine().device<serial_eeprom_device>(galgames_eeprom_names[0])->set_cs_line(CLEAR_LINE);
682            machine().device<eeprom_serial_93cxx_device>(galgames_eeprom_names[0])->cs_write(ASSERT_LINE);
694683            galgames_update_rombank(0);
695684            logerror("%06x: unknown cart sel = %04x\n", space.device().safe_pc(), data);
696685            break;
r24548r24549
966955   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmaster_state, tm3k_interrupt, "screen", 0, 1)
967956
968957   // 5 EEPROMs on the motherboard (for BIOS + 4 Carts)
969   MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_BIOS,  1024, 8, galgames_eeprom_interface)
970   MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_CART1, 1024, 8, galgames_eeprom_interface)
971   MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_CART2, 1024, 8, galgames_eeprom_interface)
972   MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_CART3, 1024, 8, galgames_eeprom_interface)
973   MCFG_SERIAL_EEPROM_ADD(GALGAMES_EEPROM_CART4, 1024, 8, galgames_eeprom_interface)
958   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_BIOS)
959   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART1)
960   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART2)
961   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART3)
962   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD(GALGAMES_EEPROM_CART4)
974963
975964   MCFG_MACHINE_RESET_OVERRIDE(tmaster_state, galgames )
976965
trunk/src/mame/drivers/model2.c
r24548r24549
413413   if(ACCESSING_BITS_0_7)
414414   {
415415      m_ctrlmode = data & 0x01;
416      m_eeprom->write_bit(data & 0x20);
417      m_eeprom->set_clock_line((data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
418      m_eeprom->set_cs_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
416      m_eeprom->di_write((data & 0x20) >> 5);
417      m_eeprom->clk_write((data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
418      m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
419419   }
420420}
421421
r24548r24549
454454   else
455455   {
456456      ret &= ~0x0030;
457      return ret | 0x00d0 | (m_eeprom->read_bit() << 5);
457      return ret | 0x00d0 | (m_eeprom->do_read() << 5);
458458   }
459459}
460460
r24548r24549
19791979   MCFG_MACHINE_START_OVERRIDE(model2_state,model2)
19801980   MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2o)
19811981
1982   MCFG_EEPROM_93C46_ADD("eeprom")
1982   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
19831983   MCFG_NVRAM_ADD_1FILL("backup1")
19841984   MCFG_NVRAM_ADD_1FILL("backup2")
19851985
r24548r24549
20382038   MCFG_MACHINE_START_OVERRIDE(model2_state,model2)
20392039   MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2)
20402040
2041   MCFG_EEPROM_93C46_ADD("eeprom")
2041   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
20422042   MCFG_NVRAM_ADD_1FILL("backup1")
20432043
20442044   MCFG_TIMER_DRIVER_ADD("timer0", model2_state, model2_timer_cb)
r24548r24549
21412141   MCFG_MACHINE_START_OVERRIDE(model2_state,model2)
21422142   MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2b)
21432143
2144   MCFG_EEPROM_93C46_ADD("eeprom")
2144   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
21452145   MCFG_NVRAM_ADD_1FILL("backup1")
21462146
21472147   MCFG_TIMER_DRIVER_ADD("timer0", model2_state, model2_timer_cb)
r24548r24549
21882188   MCFG_MACHINE_START_OVERRIDE(model2_state,model2)
21892189   MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2c)
21902190
2191   MCFG_EEPROM_93C46_ADD("eeprom")
2191   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
21922192   MCFG_NVRAM_ADD_1FILL("backup1")
21932193
21942194   MCFG_TIMER_DRIVER_ADD("timer0", model2_state, model2_timer_cb)
trunk/src/mame/drivers/vamphalf.c
r24548r24549
173173   required_device<cpu_device> m_maincpu;
174174   optional_device<okim6295_device> m_oki;
175175   optional_device<okim6295_device> m_oki2;
176   required_device<serial_eeprom_device> m_eeprom;
176   required_device<eeprom_serial_93cxx_device> m_eeprom;
177177};
178178
179179READ16_MEMBER(vamphalf_state::eeprom_r)
180180{
181181   if(offset)
182182   {
183      return m_eeprom->read_bit();
183      return m_eeprom->do_read();
184184   }
185185   else
186186      return 0;
r24548r24549
188188
189189READ32_MEMBER(vamphalf_state::eeprom32_r)
190190{
191   return m_eeprom->read_bit();
191   return m_eeprom->do_read();
192192}
193193
194194WRITE16_MEMBER(vamphalf_state::eeprom_w)
195195{
196196   if(offset)
197197   {
198      m_eeprom->write_bit(data & 0x01);
199      m_eeprom->set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE );
200      m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
198      m_eeprom->di_write(data & 0x01);
199      m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
200      m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
201201
202202      // data & 8?
203203   }
r24548r24549
205205
206206WRITE32_MEMBER(vamphalf_state::eeprom32_w)
207207{
208   m_eeprom->write_bit(data & 0x01);
209   m_eeprom->set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE );
210   m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
208   m_eeprom->di_write(data & 0x01);
209   m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
210   m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
211211}
212212
213213WRITE32_MEMBER(vamphalf_state::finalgdr_eeprom_w)
214214{
215   m_eeprom->write_bit(data & 0x4000);
216   m_eeprom->set_cs_line((data & 0x1000) ? CLEAR_LINE : ASSERT_LINE );
217   m_eeprom->set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE );
215   m_eeprom->di_write((data & 0x4000) >> 14);
216   m_eeprom->cs_write((data & 0x1000) ? ASSERT_LINE : CLEAR_LINE );
217   m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE );
218218}
219219
220220WRITE16_MEMBER(vamphalf_state::flipscreen_w)
r24548r24549
885885   PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START2 )
886886   PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_UNKNOWN )
887887   PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_UNKNOWN )
888   PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // eeprom bit
888   PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // eeprom bit
889889   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_SERVICE1 )
890890   PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN )
891891   PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
982982   MCFG_CPU_PROGRAM_MAP(common_map)
983983   MCFG_CPU_VBLANK_INT_DRIVER("screen", vamphalf_state,  irq1_line_hold)
984984
985   MCFG_EEPROM_93C46_ADD("eeprom")
985   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
986986
987987   /* video hardware */
988988   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
11131113   MCFG_CPU_IO_MAP(aoh_io)
11141114   MCFG_CPU_VBLANK_INT_DRIVER("screen", vamphalf_state,  irq1_line_hold)
11151115
1116   MCFG_EEPROM_93C46_ADD("eeprom")
1116   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
11171117
11181118   /* video hardware */
11191119   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/dkong.c
r24548r24549
15831583
15841584READ8_MEMBER(dkong_state::braze_eeprom_r)
15851585{
1586   return m_eeprom->read_bit();
1586   return m_eeprom->do_read();
15871587}
15881588
15891589WRITE8_MEMBER(dkong_state::braze_a15_w)
r24548r24549
15941594
15951595WRITE8_MEMBER(dkong_state::braze_eeprom_w)
15961596{
1597   m_eeprom->write_bit(data & 0x01);
1598   m_eeprom->set_cs_line(data & 0x04 ? CLEAR_LINE : ASSERT_LINE);
1599   m_eeprom->set_clock_line(data & 0x02 ? ASSERT_LINE : CLEAR_LINE);
1597   m_eeprom->di_write(data & 0x01);
1598   m_eeprom->cs_write(data & 0x04 ? ASSERT_LINE : CLEAR_LINE);
1599   m_eeprom->clk_write(data & 0x02 ? ASSERT_LINE : CLEAR_LINE);
16001600}
16011601
16021602void dkong_state::braze_decrypt_rom(UINT8 *dest)
r24548r24549
16901690
16911691static MACHINE_CONFIG_DERIVED( braze, dkong2b )
16921692
1693   MCFG_EEPROM_93C46_8BIT_ADD("eeprom")
1693   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
16941694MACHINE_CONFIG_END
16951695
16961696static MACHINE_CONFIG_START( dkong3, dkong_state )
trunk/src/mame/drivers/fromanc2.c
r24548r24549
313313   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fromanc2_state,subcpu_int_r, NULL) // SUBCPU INT FLAG
314314   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fromanc2_state,sndcpu_nmi_r, NULL) // SNDCPU NMI FLAG
315315   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fromanc2_state,subcpu_nmi_r, NULL) // SUBCPU NMI FLAG
316   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
316   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
317317   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME( "Service Mode (1P)" ) PORT_CODE(KEYCODE_F2) // TEST (1P)
318318   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME( "Service Mode (2P)" ) PORT_CODE(KEYCODE_F2) // TEST (2P)
319319   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
396396   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
397397
398398   PORT_START( "EEPROMOUT" )
399   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
400   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
401   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
399   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
400   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
401   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
402402INPUT_PORTS_END
403403
404404static INPUT_PORTS_START( fromanc4 )
r24548r24549
412412   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_COIN4 )
413413   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, fromanc2_state,sndcpu_nmi_r, NULL) // SNDCPU NMI FLAG
414414   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED )
415   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
415   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
416416   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
417417   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNUSED )
418418
419419   PORT_MODIFY("EEPROMOUT")
420   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
421   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
422   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
420   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
421   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
422   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
423423INPUT_PORTS_END
424424
425425
r24548r24549
534534
535535   MCFG_MACHINE_START_OVERRIDE(fromanc2_state,fromanc2)
536536
537   MCFG_EEPROM_93C46_ADD("eeprom")
537   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
538538
539539   /* video hardware */
540540   MCFG_GFXDECODE(fromanc2)
r24548r24549
584584
585585   MCFG_MACHINE_START_OVERRIDE(fromanc2_state,fromanc2)
586586
587   MCFG_EEPROM_93C46_ADD("eeprom")
587   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
588588
589589   /* video hardware */
590590   MCFG_GFXDECODE(fromancr)
r24548r24549
630630
631631   MCFG_MACHINE_START_OVERRIDE(fromanc2_state,fromanc4)
632632
633   MCFG_EEPROM_93C46_ADD("eeprom")
633   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
634634
635635   /* video hardware */
636636   MCFG_GFXDECODE(fromancr)
trunk/src/mame/drivers/superchs.c
r24548r24549
142142
143143         if (ACCESSING_BITS_0_7)
144144         {
145            m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
146            m_eeprom->write_bit(data & 0x40);
147            m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
145            m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
146            m_eeprom->di_write((data & 0x40) >> 6);
147            m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
148148            return;
149149         }
150150
r24548r24549
223223   PORT_BIT( 0x00000010, IP_ACTIVE_LOW,  IPT_UNKNOWN )
224224   PORT_BIT( 0x00000020, IP_ACTIVE_LOW,  IPT_UNKNOWN )
225225   PORT_BIT( 0x00000040, IP_ACTIVE_LOW,  IPT_UNKNOWN )
226   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* reserved for EEROM */
226   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* reserved for EEROM */
227227   PORT_BIT( 0x00000100, IP_ACTIVE_LOW,  IPT_SERVICE2 ) PORT_NAME("Seat Center")   /* seat center (cockpit only) */
228228   PORT_BIT( 0x00000200, IP_ACTIVE_LOW,  IPT_UNKNOWN )
229229   PORT_BIT( 0x00000400, IP_ACTIVE_LOW,  IPT_UNKNOWN )
r24548r24549
303303                 MACHINE DRIVERS
304304***********************************************************/
305305
306static const serial_eeprom_interface superchs_eeprom_interface =
307{
308   "0110",         /* read command */
309   "0101",         /* write command */
310   "0111",         /* erase command */
311   "0100000000",   /* unlock command */
312   "0100110000",   /* lock command */
313};
314
315306static const tc0480scp_interface superchs_tc0480scp_intf =
316307{
317308   1, 2,       /* gfxnum, txnum */
r24548r24549
335326
336327   MCFG_QUANTUM_TIME(attotime::from_hz(480)) /* Need to interleave CPU 1 & 3 */
337328
338   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, superchs_eeprom_interface)
329   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
339330
340331   /* video hardware */
341332   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/inufuku.c
r24548r24549
235235   PORT_DIPSETTING(    0x0010, DEF_STR( Off ) )
236236   PORT_DIPSETTING(    0x0000, DEF_STR( On ) )
237237   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
238   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
238   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
239239   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, inufuku_state,soundflag_r, NULL)    // pending sound command
240240   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) // 3on3dunk cares about something in here, possibly a vblank flag
241241
242242   PORT_START( "EEPROMOUT" )
243   PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
244   PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
245   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
243   PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
244   PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
245   PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
246246
247247   PORT_START("P3")
248248   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3)
r24548r24549
375375                        /* IRQs are triggered by the YM2610 */
376376
377377
378   MCFG_EEPROM_93C46_ADD("eeprom")
378   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
379379
380380   /* video hardware */
381381   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/tecmosys.c
r24548r24549
269269
270270READ16_MEMBER(tecmosys_state::eeprom_r)
271271{
272   return ((m_eeprom->read_bit() & 0x01) << 11);
272   return ((m_eeprom->do_read() & 0x01) << 11);
273273}
274274
275275WRITE16_MEMBER(tecmosys_state::eeprom_w)
276276{
277277   if ( ACCESSING_BITS_8_15 )
278278   {
279      m_eeprom->write_bit(data & 0x0800);
280      m_eeprom->set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE );
281      m_eeprom->set_clock_line((data & 0x0400) ? CLEAR_LINE: ASSERT_LINE );
279      m_eeprom->di_write((data & 0x0800) >> 11);
280      m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE );
281      m_eeprom->clk_write((data & 0x0400) ? CLEAR_LINE: ASSERT_LINE );
282282   }
283283}
284284
r24548r24549
456456
457457   MCFG_GFXDECODE(tecmosys)
458458
459   MCFG_EEPROM_93C46_ADD("eeprom")
459   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
460460
461461   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
462462
trunk/src/mame/drivers/esd16.c
r24548r24549
104104{
105105   if (ACCESSING_BITS_8_15)
106106   {
107      return ((m_eeprom->read_bit() & 0x01) << 15);
107      return ((m_eeprom->do_read() & 0x01) << 15);
108108   }
109109
110110//  logerror("(0x%06x) unk EEPROM read: %04x\n", space.device().safe_pc(), mem_mask);
r24548r24549
455455   PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
456456
457457   PORT_START( "EEPROMOUT" )
458   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
459   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
460   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
458   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
459   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
460   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
461461INPUT_PORTS_END
462462
463463
r24548r24549
492492   PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
493493
494494   PORT_START( "EEPROMOUT" )
495   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
496   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
497   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
495   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
496   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
497   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
498498INPUT_PORTS_END
499499
500500/***************************************************************************
r24548r24549
668668   MCFG_CPU_MODIFY("maincpu")
669669   MCFG_CPU_PROGRAM_MAP(hedpanic_map)
670670
671   MCFG_EEPROM_93C46_ADD("eeprom")
671   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
672672MACHINE_CONFIG_END
673673
674674/* The ESD 08-26-1999 PCBs take that further and modify the sprite offsets */
trunk/src/mame/drivers/eolith.c
r24548r24549
280280   PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 )
281281   PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START2 )
282282   PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_UNUSED )
283   PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
283   PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
284284   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_COIN1 )
285285   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNUSED )
286286   PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, eolith_state, eolith_speedup_getvblank, NULL)
r24548r24549
316316   PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNUSED )
317317
318318   PORT_START( "EEPROMOUT" )
319   PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
320   PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
321   PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
319   PORT_BIT( 0x00000002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
320   PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
321   PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
322322INPUT_PORTS_END
323323
324324static INPUT_PORTS_START( linkypip )
r24548r24549
539539
540540/*************************************
541541 *
542 *  EEPROM interface
543 *
544 *************************************/
545
546// It's configured for 512 bytes
547static const serial_eeprom_interface eeprom_interface_93C66 =
548{
549   "*110",         // read         110 aaaaaaaaa
550   "*101",         // write        101 aaaaaaaaa dddddddd
551   "*111",         // erase        111 aaaaaaaaa
552   "*10000xxxxxx", // lock         100 00xxxxxxx
553   "*10011xxxxxx"  // unlock       100 11xxxxxxx
554};
555
556
557/*************************************
558 *
559542 *  QS1000 interface
560543 *
561544 *************************************/
r24548r24549
595578
596579   MCFG_MACHINE_RESET_OVERRIDE(eolith_state,eolith)
597580
598   MCFG_SERIAL_EEPROM_ADD("eeprom", 512, 8, eeprom_interface_93C66)
581   MCFG_EEPROM_SERIAL_93C66_8BIT_ADD("eeprom")
599582
600583//  for testing sound sync
601584//  MCFG_QUANTUM_PERFECT_CPU("maincpu")
trunk/src/mame/drivers/xexex.c
r24548r24549
7272#define XE_SKIPIDLE   1
7373#define XE_DMADELAY   attotime::from_usec(256)
7474
75static const serial_eeprom_interface eeprom_intf =
76{
77   "011000",       /*  read command */
78   "011100",       /* write command */
79   "0100100000000",/* erase command */
80   "0100000000000",/* lock command */
81   "0100110000000" /* unlock command */
82};
83
8475#if 0 // (for reference; do not remove)
8576
8677/* the interface with the 053247 is weird. The chip can address only 0x1000 bytes */
r24548r24549
377368   KONAMI16_LSB(2, IPT_UNKNOWN, IPT_START2 )
378369
379370   PORT_START("EEPROM")
380   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
381   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM ready (always 1) */
371   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
372   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
382373   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
383374   PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW )
384375   PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
385376
386377   PORT_START( "EEPROMOUT" )
387   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
388   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
389   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
378   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
379   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
380   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
390381INPUT_PORTS_END
391382
392383
r24548r24549
492483
493484   MCFG_QUANTUM_TIME(attotime::from_hz(1920))
494485
486   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
495487
496   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
497
498488   /* video hardware */
499489   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK)
500490
trunk/src/mame/drivers/psikyo4.c
r24548r24549
150150   GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x000, 0x80 ) // 8bpp tiles
151151GFXDECODE_END
152152
153static const serial_eeprom_interface eeprom_interface_93C56 =
154{
155   "*110x",    // read         110x aaaaaaaa
156   "*101x",    // write        101x aaaaaaaa dddddddd
157   "*111x",    // erase        111x aaaaaaaa
158   "*10000xxxxxxx",// lock         100x 00xxxx
159   "*10011xxxxxxx",// unlock       100x 11xxxx
160//  "*10001xxxx",   // write all    1 00 01xxxx dddddddddddddddd
161//  "*10010xxxx"    // erase all    1 00 10xxxx
162};
163
164153WRITE32_MEMBER(psikyo4_state::ps4_eeprom_w)
165154{
166155   if (ACCESSING_BITS_16_31)
167156   {
168      m_eeprom->write_bit((data & 0x00200000) ? 1 : 0);
169      m_eeprom->set_cs_line((data & 0x00800000) ? CLEAR_LINE : ASSERT_LINE);
170      m_eeprom->set_clock_line((data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE);
157      m_eeprom->di_write((data & 0x00200000) ? 1 : 0);
158      m_eeprom->cs_write((data & 0x00800000) ? ASSERT_LINE : CLEAR_LINE);
159      m_eeprom->clk_write((data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE);
171160
172161      return;
173162   }
r24548r24549
383372
384373   PORT_START("JP4")/* jumper pads 'JP4' on the PCB */
385374   /* EEPROM is read here */
386   PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
375   PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
387376
388377   PORT_START("SYSTEM")    /* system inputs */
389378   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )  // Screen 1
r24548r24549
558547   PORT_DIPSETTING(          0x00000000, "Japan (Shows Version Number)" )
559548   PORT_DIPSETTING(          0x00010000, "World (Does Not Show Version Number)" )
560549   /* EEPROM is read here */
561   PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
550   PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
562551INPUT_PORTS_END
563552
564553/* unused inputs also act as duplicate buttons */
r24548r24549
637626
638627   PORT_START("JP4")/* jumper pads 'JP4' on the PCB */
639628   /* EEPROM is read here */
640   PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
629   PORT_BIT( 0x00100000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
641630INPUT_PORTS_END
642631
643632
r24548r24549
667656   MCFG_CPU_VBLANK_INT_DRIVER("lscreen", psikyo4_state,  psikyosh_interrupt)
668657
669658
670   MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 8, eeprom_interface_93C56)
671   MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0)
659   MCFG_EEPROM_SERIAL_93C56_8BIT_ADD("eeprom")
660   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
672661
673662   /* video hardware */
674663   MCFG_GFXDECODE(ps4)
trunk/src/mame/drivers/jaguar.c
r24548r24549
506506   m_eeprom_bit_count++;
507507   if (m_eeprom_bit_count != 9)        /* kill extra bit at end of address */
508508   {
509      m_eeprom->write_bit(data >> 31);
510      m_eeprom->set_clock_line(PULSE_LINE);
509      m_eeprom->di_write(data >> 31);
510      m_eeprom->clk_write(PULSE_LINE);
511511   }
512512}
513513
514514READ32_MEMBER(jaguar_state::eeprom_clk)
515515{
516   m_eeprom->set_clock_line(PULSE_LINE); /* get next bit when reading */
516   m_eeprom->clk_write(PULSE_LINE); /* get next bit when reading */
517517   return 0;
518518}
519519
520520READ32_MEMBER(jaguar_state::eeprom_cs)
521521{
522   m_eeprom->set_cs_line(ASSERT_LINE);   /* must do at end of an operation */
523   m_eeprom->set_cs_line(CLEAR_LINE);        /* enable chip for next operation */
524   m_eeprom->write_bit(1);           /* write a start bit */
525   m_eeprom->set_clock_line(PULSE_LINE);
522   m_eeprom->cs_write(CLEAR_LINE);   /* must do at end of an operation */
523   m_eeprom->cs_write(ASSERT_LINE);        /* enable chip for next operation */
524   m_eeprom->di_write(1);           /* write a start bit */
525   m_eeprom->clk_write(PULSE_LINE);
526526   m_eeprom_bit_count = 0;
527527   return 0;
528528}
r24548r24549
662662      }
663663   }
664664
665   joystick_result |= m_eeprom->read_bit();
665   joystick_result |= m_eeprom->do_read();
666666   joybuts_result |= (ioport("CONFIG")->read() & 0x10);
667667
668668   return (joystick_result << 16) | joybuts_result;
r24548r24549
16301630   /* software lists */
16311631   MCFG_SOFTWARE_LIST_ADD("cart_list","jaguar")
16321632
1633   MCFG_EEPROM_93C46_ADD("eeprom")
1633   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
16341634MACHINE_CONFIG_END
16351635
16361636
trunk/src/mame/drivers/r2dx_v33.c
r24548r24549
7373   INTERRUPT_GEN_MEMBER(rdx_v33_interrupt);
7474   void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri);
7575   required_device<cpu_device> m_maincpu;
76   optional_device<serial_eeprom_device> m_eeprom;
76   optional_device<eeprom_serial_93cxx_device> m_eeprom;
7777};
7878
7979
r24548r24549
272272{
273273   if (ACCESSING_BITS_0_7)
274274   {
275      m_eeprom->set_clock_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
276      m_eeprom->write_bit(data & 0x20);
277      m_eeprom->set_cs_line((data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
275      m_eeprom->clk_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
276      m_eeprom->di_write((data & 0x20) >> 5);
277      m_eeprom->cs_write((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
278278
279279      if (data&0xc7) logerror("eeprom_w extra bits used %04x\n",data);
280280   }
r24548r24549
568568   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
569569   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
570570   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
571   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
571   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
572572   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
573573   PORT_DIPNAME( 0x0040, 0x0040, "Test Mode" )
574574   PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
r24548r24549
606606   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
607607   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
608608   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
609   //PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
609   //PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
610610   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
611611   PORT_DIPNAME( 0x0040, 0x0040, "Test Mode" )
612612   PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
r24548r24549
696696
697697   //MCFG_MACHINE_RESET_OVERRIDE(r2dx_v33_state,rdx_v33)
698698
699   MCFG_EEPROM_93C46_ADD("eeprom")
699   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
700700
701701   /* video hardware */
702702   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/jchan.c
r24548r24549
612612   MCFG_DEVICE_ADD("toybox", KANEKO_TOYBOX, 0)
613613
614614
615   MCFG_EEPROM_93C46_ADD("eeprom")
615   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
616616
617617   /* sound hardware */
618618   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
trunk/src/mame/drivers/f-32.c
r24548r24549
119119   PORT_BIT( 0xff000000, IP_ACTIVE_LOW, IPT_UNUSED )
120120
121121   PORT_START( "EEPROMIN" )
122   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
122   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
123123
124124   PORT_START( "EEPROMOUT" )
125   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
125   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
126126
127127   PORT_START( "EEPROMCLK" )
128   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
128   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
129129
130130   PORT_START( "EEPROMCS" )
131   PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
131   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
132132INPUT_PORTS_END
133133
134134static MACHINE_CONFIG_START( mosaicf2, mosaicf2_state )
r24548r24549
139139   MCFG_CPU_IO_MAP(mosaicf2_io)
140140   MCFG_CPU_VBLANK_INT_DRIVER("screen", mosaicf2_state,  irq0_line_hold)
141141
142   MCFG_EEPROM_93C46_ADD("eeprom")
142   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
143143
144144   /* video hardware */
145145   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/psikyosh.c
r24548r24549
306306   GFXDECODE_ENTRY( "gfx1", 0, layout_16x16x8, 0x000, 0x100 ) // 8bpp tiles
307307GFXDECODE_END
308308
309static const serial_eeprom_interface eeprom_interface_93C56 =
310{
311   "*110x",    // read         110x aaaaaaaa
312   "*101x",    // write        101x aaaaaaaa dddddddd
313   "*111x",    // erase        111x aaaaaaaa
314   "*10000xxxxxxx",// lock         100x 00xxxx
315   "*10011xxxxxxx",// unlock       100x 11xxxx
316//  "*10001xxxx",   // write all    1 00 01xxxx dddddddddddddddd
317//  "*10010xxxx"    // erase all    1 00 10xxxx
318};
319
320309WRITE32_MEMBER(psikyosh_state::psh_eeprom_w)
321310{
322311   if (ACCESSING_BITS_24_31)
323312   {
324      m_eeprom->write_bit((data & 0x20000000) ? 1 : 0);
325      m_eeprom->set_cs_line((data & 0x80000000) ? CLEAR_LINE : ASSERT_LINE);
326      m_eeprom->set_clock_line((data & 0x40000000) ? ASSERT_LINE : CLEAR_LINE);
313      m_eeprom->di_write((data & 0x20000000) ? 1 : 0);
314      m_eeprom->cs_write((data & 0x80000000) ? ASSERT_LINE : CLEAR_LINE);
315      m_eeprom->clk_write((data & 0x40000000) ? ASSERT_LINE : CLEAR_LINE);
327316
328317      return;
329318   }
r24548r24549
604593   PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Region ) )
605594   PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
606595   PORT_DIPSETTING(          0x01000000, DEF_STR( World ) )
607   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
596   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
608597INPUT_PORTS_END
609598
610599static INPUT_PORTS_START( soldivid )
r24548r24549
614603   PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Region ) )
615604   PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
616605   PORT_DIPSETTING(          0x01000000, DEF_STR( World ) )
617   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
606   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
618607INPUT_PORTS_END
619608
620609static INPUT_PORTS_START( daraku )
r24548r24549
632621   PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Region ) )
633622   PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
634623   PORT_DIPSETTING(          0x01000000, DEF_STR( World ) ) /* Title screen is different, English is default now */
635   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
624   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
636625INPUT_PORTS_END
637626
638627static INPUT_PORTS_START( sbomberb )
r24548r24549
647636   PORT_DIPNAME( 0x01000000, 0x01000000, DEF_STR( Region ) )
648637   PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
649638   PORT_DIPSETTING(          0x01000000, DEF_STR( World ) )
650   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
639   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
651640INPUT_PORTS_END
652641
653642static INPUT_PORTS_START( gunbird2 ) /* Different Region */
r24548r24549
659648   PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
660649   PORT_DIPSETTING(          0x01000000, "International Ver A." )
661650   PORT_DIPSETTING(          0x02000000, "International Ver B." )
662   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
651   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
663652INPUT_PORTS_END
664653
665654static INPUT_PORTS_START( s1945iii ) /* Different Region again */
r24548r24549
671660   PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
672661   PORT_DIPSETTING(          0x02000000, "International Ver A." )
673662   PORT_DIPSETTING(          0x01000000, "International Ver B." )
674   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
663   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
675664INPUT_PORTS_END
676665
677666static INPUT_PORTS_START( dragnblz ) /* Security requires bit high */
r24548r24549
687676   PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
688677   PORT_DIPSETTING(          0x02000000, "International Ver A." )
689678   PORT_DIPSETTING(          0x01000000, "International Ver B." )
690   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
679   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
691680INPUT_PORTS_END
692681
693682static INPUT_PORTS_START( gnbarich ) /* Same as S1945iii except only one button */
r24548r24549
699688   PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
700689   PORT_DIPSETTING(          0x02000000, "International Ver A." )
701690   PORT_DIPSETTING(          0x01000000, "International Ver B." )
702   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
691   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
703692INPUT_PORTS_END
704693
705694static INPUT_PORTS_START( tgm2 )
r24548r24549
720709//  PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
721710//  PORT_DIPSETTING(          0x02000000, "International Ver A." )
722711//  PORT_DIPSETTING(          0x01000000, "International Ver B." )
723   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
712   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
724713INPUT_PORTS_END
725714
726715static INPUT_PORTS_START( mjgtaste )
r24548r24549
774763//  PORT_DIPSETTING(          0x00000000, DEF_STR( Japan ) )
775764//  PORT_DIPSETTING(          0x02000000, "International Ver A." )
776765//  PORT_DIPSETTING(          0x01000000, "International Ver B." )
777   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
766   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
778767INPUT_PORTS_END
779768
780769
r24548r24549
798787   MCFG_CPU_VBLANK_INT_DRIVER("screen", psikyosh_state,  psikyosh_interrupt)
799788
800789
801   MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 8, eeprom_interface_93C56)
802   MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0)
790   MCFG_EEPROM_SERIAL_93C56_8BIT_ADD("eeprom")
791   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
803792
804793   /* video hardware */
805794   MCFG_BUFFERED_SPRITERAM32_ADD("spriteram") /* If using alpha */
trunk/src/mame/drivers/cps2.c
r24548r24549
679679 *
680680 *************************************/
681681
682static const serial_eeprom_interface cps2_eeprom_interface =
683{
684   "0110", /*  read command */
685   "0101", /* write command */
686   "0111"  /* erase command */
687};
688
689682WRITE16_MEMBER( cps_state::cps2_eeprom_port_w )
690683{
691684   if (ACCESSING_BITS_8_15)
r24548r24549
934927   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4)
935928
936929   PORT_START("IN2")      /* (0x20) */
937   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
930   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
938931   PORT_SERVICE_NO_TOGGLE( 0x0002, IP_ACTIVE_LOW )
939932   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
940933   PORT_BIT( 0x00f8, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
948941   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN4 )
949942
950943   PORT_START( "EEPROMOUT" )
951   PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
952   PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
953   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
944   PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
945   PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
946   PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
954947
955948   /* fake inputs for digital volume buttons */
956949   PORT_START( "DIGITALVOL" )
r24548r24549
12561249
12571250   MCFG_MACHINE_START_OVERRIDE(cps_state,cps2)
12581251
1259   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, cps2_eeprom_interface)
1252   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
12601253
12611254   /* video hardware */
12621255   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
trunk/src/mame/drivers/eolith16.c
r24548r24549
3838
3939
4040
41// It's configured for 512 bytes
42static const serial_eeprom_interface eeprom_interface_93C66 =
43{
44   "*110",         // read         110 aaaaaaaaa
45   "*101",         // write        101 aaaaaaaaa dddddddd
46   "*111",         // erase        111 aaaaaaaaa
47   "*10000xxxxxx", // lock         100 00xxxxxxx
48   "*10011xxxxxx"  // unlock       100 11xxxxxxx
49};
50
5141WRITE16_MEMBER(eolith16_state::eeprom_w)
5242{
5343   m_vbuffer = (data & 0x80) >> 7;
r24548r24549
9282
9383static INPUT_PORTS_START( eolith16 )
9484   PORT_START("SPECIAL")
95   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
85   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
9686   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, eolith16_state, eolith_speedup_getvblank, NULL)
9787   PORT_BIT( 0xff6f, IP_ACTIVE_LOW, IPT_UNUSED )
9888
r24548r24549
115105   PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNUSED )
116106
117107   PORT_START( "EEPROMOUT" )
118   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
119   PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
120   PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
108   PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
109   PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
110   PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
121111INPUT_PORTS_END
122112
123113VIDEO_START_MEMBER(eolith16_state,eolith16)
r24548r24549
179169   MCFG_CPU_PROGRAM_MAP(eolith16_map)
180170   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", eolith16_state, eolith_speedup, "screen", 0, 1)
181171
182   MCFG_SERIAL_EEPROM_ADD("eeprom", 512, 8, eeprom_interface_93C66)
172   MCFG_EEPROM_SERIAL_93C66_8BIT_ADD("eeprom")
183173
184174   /* video hardware */
185175   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/groundfx.c
r24548r24549
111111
112112
113113/**********************************************************
114                EPROM
115**********************************************************/
116
117static const serial_eeprom_interface groundfx_eeprom_interface =
118{
119   "0110",         /* read command */
120   "0101",         /* write command */
121   "0111",         /* erase command */
122   "0100000000",   /* unlock command */
123   "0100110000",   /* lock command */
124};
125
126
127/**********************************************************
128114            GAME INPUTS
129115**********************************************************/
130116
r24548r24549
249235   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNUSED )
250236   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNUSED )
251237   PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNUSED )
252   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
238   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
253239   PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_BUTTON3 )      /* shift hi */
254240   PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_BUTTON1 )      /* brake */
255241   PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
261247   PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED )
262248
263249   PORT_START( "EEPROMOUT" )
264   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
265   PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
266   PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
250   PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
251   PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
252   PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
267253
268254   PORT_START("SYSTEM")
269255   PORT_SERVICE_NO_TOGGLE( 0x00000001, IP_ACTIVE_LOW )
r24548r24549
370356   MCFG_CPU_PROGRAM_MAP(groundfx_map)
371357   MCFG_CPU_VBLANK_INT_DRIVER("screen", groundfx_state,  groundfx_interrupt)
372358
373   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, groundfx_eeprom_interface)
359   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
374360
375361   /* video hardware */
376362   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/taito_z.c
r24548r24549
10641064   0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
10651065};
10661066
1067static const serial_eeprom_interface spacegun_eeprom_intf =
1068{
1069   "0110",         /* read command */
1070   "0101",         /* write command */
1071   "0111",         /* erase command */
1072   "0100000000",   /* lock command */
1073   "0100111111",   /* unlock command */
1074   0,              /* multi-read disabled */
1075   1               /* reset delay */
1076};
10771067
1078
10791068#if 0
10801069READ16_MEMBER(taitoz_state::eep_latch_r)
10811070{
r24548r24549
12521241   switch (offset)
12531242   {
12541243      case 0x03:
1255         return m_eeprom->read_bit() << 7;
1244         return m_eeprom->do_read() << 7;
12561245
12571246      default:
12581247         return m_tc0220ioc->read(space, offset); /* might be a 510NIO ! */
r24548r24549
26672656   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
26682657
26692658   PORT_START( "EEPROMOUT" )
2670   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
2671   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
2672   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
2659   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
2660   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
2661   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
26732662
26742663   PORT_START("STICKX1")
26752664   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)
r24548r24549
35023491   MCFG_MACHINE_START_OVERRIDE(taitoz_state,bshark)
35033492   MCFG_MACHINE_RESET_OVERRIDE(taitoz_state,taitoz)
35043493
3505   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, spacegun_eeprom_intf)
3506   MCFG_SERIAL_EEPROM_DATA(spacegun_default_eeprom, 128)
3494   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
3495   MCFG_EEPROM_SERIAL_DATA(spacegun_default_eeprom, 128)
35073496
35083497   MCFG_TC0220IOC_ADD("tc0220ioc", taitoz_io220_intf)
35093498
trunk/src/mame/drivers/fortecar.c
r24548r24549
345345   virtual void video_start();
346346   virtual void palette_init();
347347   UINT32 screen_update_fortecar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
348   required_device<serial_eeprom_device> m_eeprom;
348   required_device<eeprom_serial_93cxx_device> m_eeprom;
349349};
350350
351351
r24548r24549
442442DIN  PPI_PC2
443443DOUT PPI_PC4
444444*/
445   m_eeprom->write_bit((data & 0x04) >> 2);
446   m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
447   m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
445   m_eeprom->di_write((data & 0x04) >> 2);
446   m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
447   m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
448448}
449449
450450READ8_MEMBER(fortecar_state::ppi0_portc_r)
451451{
452452//  popmessage("%s",machine().describe_context());
453   return ((m_eeprom->read_bit()<<4) & 0x10);
453   return ((m_eeprom->do_read()<<4) & 0x10);
454454}
455455
456456static I8255A_INTERFACE( ppi8255_intf )
r24548r24549
548548};
549549
550550
551static const serial_eeprom_interface forte_eeprom_intf =
552{/*
553    Preliminary interface for NM93CS56N Serial EEPROM.
554    Correct address & data. Using 93C46 similar protocol.
555*/
556   "*110",           /* read command */
557   "*101",           /* write command */
558   "*111",           /* erase command */
559   "*10000xxxxxx",   /* lock command */
560   "*10011xxxxxx",   /* unlock command */
561};
562
563
564551static ADDRESS_MAP_START( fortecar_map, AS_PROGRAM, 8, fortecar_state )
565552   AM_RANGE(0x0000, 0xbfff) AM_ROM
566553   AM_RANGE(0xc000, 0xc7ff) AM_ROM
r24548r24549
700687   MCFG_SCREEN_UPDATE_DRIVER(fortecar_state, screen_update_fortecar)
701688
702689
703   MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, forte_eeprom_intf)
704   MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0)
690   MCFG_EEPROM_SERIAL_93C56_ADD("eeprom")
691   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
705692
706693   MCFG_I8255A_ADD( "fcppi0", ppi8255_intf )
707694   MCFG_V3021_ADD("rtc")
r24548r24549
733720   ROM_REGION( 0x0800, "nvram", 0 )    /* default NVRAM */
734721   ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, BAD_DUMP CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) )
735722
736   ROM_REGION( 0x0200, "eeprom", 0 )   /* default serial EEPROM */
723   ROM_REGION( 0x0100, "eeprom", 0 )   /* default serial EEPROM */
737724   ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, BAD_DUMP CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) )
738725
739726   ROM_REGION( 0x200, "proms", 0 )
r24548r24549
752739   ROM_REGION( 0x0800, "nvram", 0 )    /* default NVRAM */
753740   ROM_LOAD( "fortecrd_nvram.u6", 0x0000, 0x0800, CRC(7d3e7eb5) SHA1(788fe7adc381bcc6eaefed33f5aa1081340608a0) )
754741
755   ROM_REGION( 0x0200, "eeprom", 0 )   /* default serial EEPROM */
742   ROM_REGION( 0x0100, "eeprom", 0 )   /* default serial EEPROM */
756743   ROM_LOAD16_WORD_SWAP( "forte_card_93cs56_serial_12345678.u13", 0x0000, 0x0100, CRC(2fc5961d) SHA1(f958c8b2b4e48cc6e5a607a6751acde5592bd27f) )
757744
758745   ROM_REGION( 0x0200, "proms", 0 )
trunk/src/mame/drivers/unico.c
r24548r24549
204204   if ( ACCESSING_BITS_24_31 )
205205   {
206206      // latch the bit
207      m_eeprom->write_bit(data & 0x04000000);
207      m_eeprom->di_write((data & 0x04000000) >> 26);
208208
209209      // reset line asserted: reset.
210      m_eeprom->set_cs_line((data & 0x01000000) ? CLEAR_LINE : ASSERT_LINE);
210      m_eeprom->cs_write((data & 0x01000000) ? ASSERT_LINE : CLEAR_LINE);
211211
212212      // clock line asserted: write latch or select next bit to read
213      m_eeprom->set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
213      m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
214214   }
215215}
216216
r24548r24549
507507   PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
508508   PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
509509   PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
510   PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // EEPROM
510   PORT_BIT( 0x80000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // EEPROM
511511
512512   PORT_START("Y0")    /* $800140.b */
513513   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(2)
r24548r24549
567567}
568568
569569
570static const serial_eeprom_interface zeropnt2_eeprom_interface =
571{
572   "*110",         // read         1 10 aaaaaaa
573   "*101",         // write        1 01 aaaaaaa dddddddd
574   "*111",         // erase        1 11 aaaaaaa
575   "*10000xxxx",   // lock         1 00 00xxxx
576   "*10011xxxx",   // unlock       1 00 11xxxx
577//  "*10001xxxx"    // write all    1 00 01xxxx dddddddd
578//  "*10010xxxx"    // erase all    1 00 10xxxx
579};
580
581
582570/***************************************************************************
583571                                Burglar X
584572***************************************************************************/
r24548r24549
677665
678666   MCFG_MACHINE_RESET_OVERRIDE(unico_state,zeropt)
679667
680   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, zeropnt2_eeprom_interface)
668   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
681669
682670   /* video hardware */
683671   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/jclub2.c
r24548r24549
131131   optional_shared_ptr<UINT32> m_spriteram;
132132   optional_device<st0020_device> m_gdfs_st0020;
133133   required_device<cpu_device> m_maincpu;
134   required_device<serial_eeprom_device> m_eeprom;
134   required_device<eeprom_serial_93cxx_device> m_eeprom;
135135   DECLARE_WRITE32_MEMBER(darkhors_tmapram_w);
136136   DECLARE_WRITE32_MEMBER(darkhors_tmapram2_w);
137137   DECLARE_WRITE32_MEMBER(paletteram32_xBBBBBGGGGGRRRRR_dword_w);
r24548r24549
294294   if ( ACCESSING_BITS_24_31 )
295295   {
296296      // latch the bit
297      m_eeprom->write_bit(data & 0x04000000);
297      m_eeprom->di_write((data & 0x04000000) >> 26);
298298
299299      // reset line asserted: reset.
300      m_eeprom->set_cs_line((data & 0x01000000) ? CLEAR_LINE : ASSERT_LINE );
300      m_eeprom->cs_write((data & 0x01000000) ? ASSERT_LINE : CLEAR_LINE );
301301
302302      // clock line asserted: write latch or select next bit to read
303      m_eeprom->set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
303      m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
304304   }
305305}
306306
r24548r24549
474474   PORT_BIT( 0x00100000, IP_ACTIVE_LOW,  IPT_SERVICE  ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // test
475475   PORT_BIT( 0x00200000, IP_ACTIVE_LOW,  IPT_UNKNOWN  )    // door 1
476476   PORT_BIT( 0x00400000, IP_ACTIVE_LOW,  IPT_UNKNOWN  )    // door 2
477   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL  ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
477   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL  ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
478478   PORT_BIT( 0x01000000, IP_ACTIVE_LOW,  IPT_START1   )    // start
479479   PORT_BIT( 0x02000000, IP_ACTIVE_LOW,  IPT_OTHER ) PORT_NAME("P1 Payout") PORT_CODE(KEYCODE_LCONTROL)    // payout
480480   PORT_BIT( 0x04000000, IP_ACTIVE_LOW,  IPT_OTHER ) PORT_NAME("P1 Cancel") PORT_CODE(KEYCODE_LALT)        // cancel
r24548r24549
692692   MCFG_CPU_PROGRAM_MAP(darkhors_map)
693693   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkhors_state, darkhors_irq, "screen", 0, 1)
694694
695   MCFG_EEPROM_93C46_8BIT_ADD("eeprom")
695   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
696696
697697   /* video hardware */
698698   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
733733   MCFG_CPU_PROGRAM_MAP(jclub2_map)
734734   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", darkhors_state, darkhors_irq, "screen", 0, 1)
735735
736   MCFG_EEPROM_93C46_8BIT_ADD("eeprom")
736   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
737737
738738   /* video hardware */
739739   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
799799   MCFG_CPU_IO_MAP(st0016_io)
800800   MCFG_CPU_VBLANK_INT_DRIVER("screen", darkhors_state,  irq0_line_hold)
801801
802   MCFG_EEPROM_93C46_8BIT_ADD("eeprom")
802   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
803803
804804   /* video hardware */
805805   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/backfire.c
r24548r24549
6060   required_device<deco16ic_device> m_deco_tilegen1;
6161   required_device<deco16ic_device> m_deco_tilegen2;
6262
63   required_device<serial_eeprom_device> m_eeprom;
63   required_device<eeprom_serial_93cxx_device> m_eeprom;
6464
6565   /* memory */
6666   UINT16    m_pf1_rowscroll[0x0800/2];
r24548r24549
197197{
198198   /* some kind of screen indicator?  checked by backfirea set before it will boot */
199199   int backfire_screen = machine().rand() & 1;
200   return ((m_eeprom->read_bit() << 24) | m_io_in0->read()
200   return ((m_eeprom->do_read() << 24) | m_io_in0->read()
201201         | ((m_io_in2->read() & 0xbf) << 16)
202202         | ((m_io_in3->read() & 0x40) << 16)) ^ (backfire_screen << 26) ;
203203}
r24548r24549
205205READ32_MEMBER(backfire_state::backfire_control2_r)
206206{
207207//  logerror("%08x:Read eprom %08x (%08x)\n", space.device().safe_pc(), offset << 1, mem_mask);
208   return (m_eeprom->read_bit() << 24) | m_io_in1->read() | (m_io_in1->read() << 16);
208   return (m_eeprom->do_read() << 24) | m_io_in1->read() | (m_io_in1->read() << 16);
209209}
210210
211211#ifdef UNUSED_FUNCTION
212212READ32_MEMBER(backfire_state::backfire_control3_r)
213213{
214214//  logerror("%08x:Read eprom %08x (%08x)\n", space.device().safe_pc(), offset << 1, mem_mask);
215   return (m_eeprom->read_bit() << 24) | m_io_in2->read() | (m_io_in2->read() << 16);
215   return (m_eeprom->do_read() << 24) | m_io_in2->read() | (m_io_in2->read() << 16);
216216}
217217#endif
218218
r24548r24549
222222   logerror("%s:write eprom %08x (%08x) %08x\n",machine().describe_context(),offset<<1,mem_mask,data);
223223   if (ACCESSING_BITS_0_7)
224224   {
225      m_eeprom->set_clock_line(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE);
226      m_eeprom->write_bit(BIT(data, 0));
227      m_eeprom->set_cs_line(BIT(data, 2) ? CLEAR_LINE : ASSERT_LINE);
225      m_eeprom->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE);
226      m_eeprom->di_write(BIT(data, 0));
227      m_eeprom->cs_write(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE);
228228   }
229229}
230230
r24548r24549
499499   MCFG_CPU_PROGRAM_MAP(backfire_map)
500500   MCFG_CPU_VBLANK_INT_DRIVER("lscreen", backfire_state,  deco32_vbl_interrupt)    /* or is it "rscreen?" */
501501
502   MCFG_EEPROM_93C46_ADD("eeprom")
502   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
503503
504504
505505   /* video hardware */
trunk/src/mame/drivers/ultrsprt.c
r24548r24549
185185   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_START2 )
186186
187187   PORT_START("SERVICE")
188   PORT_BIT( 0x02000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
188   PORT_BIT( 0x02000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
189189   PORT_SERVICE_NO_TOGGLE( 0x08000000, IP_ACTIVE_LOW )
190190
191191   PORT_START( "EEPROMOUT" )
192   PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
193   PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
194   PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
192   PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
193   PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
194   PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
195195
196196   PORT_START("STICKX1")
197197   PORT_BIT( 0xfff, 0x800, IPT_AD_STICK_X ) PORT_MINMAX(0x000,0xfff) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) PORT_PLAYER(1)
r24548r24549
240240
241241   MCFG_QUANTUM_TIME(attotime::from_hz(12000))
242242
243   MCFG_EEPROM_93C46_ADD("eeprom")
243   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
244244
245245   /* video hardware */
246246   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/gaelco2.c
r24548r24549
249249   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 )
250250   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START1 )
251251   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2 )
252   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) */
252   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) */
253253   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SPECIAL )  /* bit 7 is EEPROM ready */
254254
255255   PORT_START("LIGHT0_X")
r24548r24549
271271   { 0*0x0200000, 1*0x0200000, 2*0x0200000, 3*0x0200000 }  /* start of each ROM bank */
272272};
273273
274static const serial_eeprom_interface gaelco2_eeprom_interface =
275{
276   "*110",         /* read command */
277   "*101",         /* write command */
278   "*111",         /* erase command */
279   "*10000xxxxxx", /* lock command */
280   "*10011xxxxxx", /* unlock command */
281//  "*10001xxxxxx", /* write all */
282//  "*10010xxxxxx", /* erase all */
283};
284
285274static MACHINE_CONFIG_START( bang, gaelco2_state )
286275   /* basic machine hardware */
287276   MCFG_CPU_ADD("maincpu", M68000, 30000000/2)         /* 15 MHz */
288277   MCFG_CPU_PROGRAM_MAP(bang_map)
289278   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gaelco2_state, bang_irq, "screen", 0, 1)
290279
291   MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, gaelco2_eeprom_interface)
280   MCFG_EEPROM_SERIAL_93C66_ADD("eeprom")
292281
293282   /* video hardware */
294283   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
r24548r24549
949938   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 )
950939   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
951940   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
952   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) */
953   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL )    /* bit 7 is EEPROM ready */
941   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) */
942   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL )
954943INPUT_PORTS_END
955944
956945static const gaelcosnd_interface snowboar_snd_interface =
r24548r24549
965954   MCFG_CPU_PROGRAM_MAP(snowboar_map)
966955   MCFG_CPU_VBLANK_INT_DRIVER("screen", gaelco2_state,  irq6_line_hold)
967956
968   MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, gaelco2_eeprom_interface)
957   MCFG_EEPROM_SERIAL_93C66_ADD("eeprom")
969958
970959   /* video hardware */
971960   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
r24548r24549
12061195   MCFG_CPU_PROGRAM_MAP(wrally2_map)
12071196   MCFG_CPU_VBLANK_INT_DRIVER("lscreen", gaelco2_state,  irq6_line_hold)
12081197
1209   MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, gaelco2_eeprom_interface)
1198   MCFG_EEPROM_SERIAL_93C66_ADD("eeprom")
12101199
12111200   /* video hardware */
12121201   MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
trunk/src/mame/drivers/simpl156.c
r24548r24549
127127
128128READ32_MEMBER(simpl156_state::simpl156_inputs_read)
129129{
130   int eep = m_eeprom->read_bit();
130   int eep = m_eeprom->do_read();
131131   UINT32 returndata = ioport("IN0")->read() ^ 0xffff0000;
132132
133133   returndata ^= ((eep << 8));
r24548r24549
172172
173173   m_okimusic->set_bank_base(0x40000 * (data & 0x7));
174174
175   m_eeprom->set_clock_line(BIT(data, 5) ? ASSERT_LINE : CLEAR_LINE);
176   m_eeprom->write_bit(BIT(data, 4));
177   m_eeprom->set_cs_line(BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE);
175   m_eeprom->clk_write(BIT(data, 5) ? ASSERT_LINE : CLEAR_LINE);
176   m_eeprom->di_write(BIT(data, 4));
177   m_eeprom->cs_write(BIT(data, 6) ? ASSERT_LINE : CLEAR_LINE);
178178}
179179
180180
r24548r24549
424424   MCFG_CPU_PROGRAM_MAP(chainrec_map)
425425   MCFG_CPU_VBLANK_INT_DRIVER("screen", simpl156_state,  simpl156_vbl_interrupt)
426426
427   MCFG_EEPROM_93C46_ADD("eeprom")  // 93C45
427   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")  // 93C45
428428
429429   /* video hardware */
430430   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/galpani2.c
r24548r24549
3535
3636READ16_MEMBER(galpani2_state::galpani2_eeprom_r)
3737{
38   return (m_eeprom_word & ~1) | (m_eeprom->read_bit() & 1);
38   return (m_eeprom_word & ~1) | (m_eeprom->do_read() & 1);
3939}
4040
4141WRITE16_MEMBER(galpani2_state::galpani2_eeprom_w)
r24548r24549
4444   if ( ACCESSING_BITS_0_7 )
4545   {
4646      // latch the bit
47      m_eeprom->write_bit(data & 0x02);
47      m_eeprom->di_write((data & 0x02) >> 1);
4848
4949      // reset line asserted: reset.
50      m_eeprom->set_cs_line((data & 0x08) ? CLEAR_LINE : ASSERT_LINE );
50      m_eeprom->cs_write((data & 0x08) ? ASSERT_LINE : CLEAR_LINE );
5151
5252      // clock line asserted: write latch or select next bit to read
53      m_eeprom->set_clock_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
53      m_eeprom->clk_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
5454   }
5555}
5656
r24548r24549
581581   MCFG_CPU_PROGRAM_MAP(galpani2_mem2)
582582   MCFG_TIMER_DRIVER_ADD_SCANLINE("s_scantimer", galpani2_state, galpani2_interrupt2, "screen", 0, 1)
583583
584   MCFG_EEPROM_93C46_ADD("eeprom")
584   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
585585
586586   /* video hardware */
587587   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/ssv.c
r24548r24549
445445{
446446   ioport_port *gun[] = { m_io_gunx1, m_io_guny1, m_io_gunx2, m_io_guny2 };
447447
448   return (((m_gdfs_lightgun_select & 1) ? 0 : 0xff) ^ gun[m_gdfs_lightgun_select]->read()) | (m_eeprom->read_bit() << 8);
448   return (((m_gdfs_lightgun_select & 1) ? 0 : 0xff) ^ gun[m_gdfs_lightgun_select]->read()) | (m_eeprom->do_read() << 8);
449449}
450450
451451WRITE16_MEMBER(ssv_state::gdfs_eeprom_w)
r24548r24549
459459//      data & 0x0001 ?
460460
461461      // latch the bit
462      m_eeprom->write_bit(data & 0x4000);
462      m_eeprom->di_write((data & 0x4000) >> 14);
463463
464464      // reset line asserted: reset.
465      m_eeprom->set_cs_line((data & 0x1000) ? CLEAR_LINE : ASSERT_LINE );
465      m_eeprom->cs_write((data & 0x1000) ? ASSERT_LINE : CLEAR_LINE );
466466
467467      // clock line asserted: write latch or select next bit to read
468      m_eeprom->set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE );
468      m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE );
469469
470470      if (!(m_gdfs_eeprom_old & 0x0800) && (data & 0x0800))   // rising clock
471471         m_gdfs_lightgun_select = (data & 0x0300) >> 8;
r24548r24549
26342634   MCFG_TIMER_MODIFY("scantimer")
26352635   MCFG_TIMER_DRIVER_CALLBACK(ssv_state, gdfs_interrupt)
26362636
2637   MCFG_EEPROM_93C46_ADD("eeprom")
2637   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
26382638
26392639   /* video hardware */
26402640   MCFG_SCREEN_MODIFY("screen")
trunk/src/mame/drivers/zr107.c
r24548r24549
548548   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* PARAACK */
549549   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
550550   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("adc0838", adc083x_device, sars_read)
551   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
551   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
552552
553553   PORT_START("EEPROMOUT")
554   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
555   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
556   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
554   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
555   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
556   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
557557
558558   PORT_START("OUT4")
559559   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("adc0838", adc083x_device, cs_write)
r24548r24549
768768
769769   MCFG_QUANTUM_TIME(attotime::from_hz(30000))
770770
771   MCFG_EEPROM_93C46_ADD("eeprom")
771   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
772772
773773   MCFG_K056230_ADD("k056230", zr107_k056230_intf)
774774
r24548r24549
826826
827827   MCFG_QUANTUM_TIME(attotime::from_hz(30000))
828828
829   MCFG_EEPROM_93C46_ADD("eeprom")
829   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
830830
831831   MCFG_K056230_ADD("k056230", zr107_k056230_intf)
832832
trunk/src/mame/drivers/seibuspi.c
r24548r24549
895895
896896WRITE8_MEMBER(seibuspi_state::eeprom_w)
897897{
898   m_eeprom->write_bit((data & 0x80) ? 1 : 0);
899   m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
900   m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
898   m_eeprom->di_write((data & 0x80) ? 1 : 0);
899   m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
900   m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
901901}
902902
903903WRITE8_MEMBER(seibuspi_state::spi_layerbanks_eeprom_w)
r24548r24549
12471247   PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_UNUSED )
12481248
12491249   PORT_MODIFY("SYSTEM")
1250   PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1250   PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
12511251INPUT_PORTS_END
12521252
12531253
r24548r24549
13651365   PORT_START("SYSTEM")
13661366   PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_COIN1 )
13671367   PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_COIN2 )
1368   PORT_BIT( 0x00004000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1368   PORT_BIT( 0x00004000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
13691369   PORT_BIT( 0xffffbf3f, IP_ACTIVE_LOW, IPT_UNUSED )
13701370
13711371   PORT_START("INPUTS")
r24548r24549
17501750
17511751/*****************************************************************************/
17521752
1753/* this is a 93C46 but with reset delay */
1754static const serial_eeprom_interface eeprom_intf =
1755{
1756   "*110",         /* read command */
1757   "*101",         /* write command */
1758   "*111",         /* erase command */
1759   "*10000xxxx",   /* lock command */
1760   "*10011xxxx",   /* unlock command */
1761   1,              /* enable_multi_read */
1762   1               /* reset_delay */
1763};
1764
17651753INTERRUPT_GEN_MEMBER(seibuspi_state::spi_interrupt)
17661754{
17671755   device.execute().set_input_line(0, HOLD_LINE); // where is ack?
r24548r24549
19151903
19161904   MCFG_DEVICE_REMOVE("ds2404")
19171905
1918   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1906   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
19191907
19201908   // Z80 is Z84C0006PCS instead of Z84C0008PEC
19211909   // clock is unknown, possibly slower than 7.159MHz
r24548r24549
19481936   MCFG_CPU_PROGRAM_MAP(sys386i_map)
19491937   MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt)
19501938
1951   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1939   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
19521940
19531941   /* video hardware */
19541942   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
19981986   MCFG_CPU_PROGRAM_MAP(sys386f_map)
19991987   MCFG_CPU_VBLANK_INT_DRIVER("screen", seibuspi_state, spi_interrupt)
20001988
2001   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1989   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
20021990
20031991   /* video hardware */
20041992   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/pirates.c
r24548r24549
9494#include "includes/pirates.h"
9595
9696
97static const serial_eeprom_interface eeprom_intf =
98{
99   "*110",         /*  read command */
100   "*101",         /* write command */
101   0,              /* erase command */
102   "*10000xxxx",   /* lock command */
103   "*10011xxxx"    /* unlock command */
104};
105
10697WRITE16_MEMBER(pirates_state::pirates_out_w)
10798{
10899   if (ACCESSING_BITS_0_7)
109100   {
110101      /* bits 0-2 control EEPROM */
111      m_eeprom->write_bit(data & 0x04);
112      m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
113      m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
102      m_eeprom->di_write((data & 0x04) >> 2);
103      m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
104      m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
114105
115106      /* bit 6 selects oki bank */
116107      m_oki->set_bank_base((data & 0x40) ? 0x40000 : 0x00000);
r24548r24549
204195   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
205196   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
206197   PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
207   PORT_BIT( 0x0010, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)  // EEPROM data
198   PORT_BIT( 0x0010, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)  // EEPROM data
208199   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN )     // seems checked in "test mode"
209200   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN )     // seems checked in "test mode"
210201   PORT_BIT( 0x0080, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, pirates_state,prot_r, NULL)      // protection
r24548r24549
260251   MCFG_CPU_PROGRAM_MAP(pirates_map)
261252   MCFG_CPU_VBLANK_INT_DRIVER("screen", pirates_state,  irq1_line_hold)
262253
263   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
254   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
264255
265256   MCFG_GFXDECODE(pirates)
266257
trunk/src/mame/drivers/sigmab98.c
r24548r24549
109109   required_device<cpu_device> m_maincpu;
110110   optional_shared_ptr<UINT8> m_spriteram;
111111   required_shared_ptr<UINT8> m_nvram;
112   required_device<serial_eeprom_device> m_eeprom;
112   required_device<eeprom_serial_93cxx_device> m_eeprom;
113113
114114   UINT8 m_reg;
115115   UINT8 m_rombank;
r24548r24549
446446WRITE8_MEMBER(sigmab98_state::eeprom_w)
447447{
448448   // latch the bit
449   m_eeprom->write_bit(data & 0x40);
449   m_eeprom->di_write((data & 0x40) >> 6);
450450
451451   // reset line asserted: reset.
452452//  if ((m_c0 ^ data) & 0x20)
453      m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
453      m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
454454
455455   // clock line asserted: write latch or select next bit to read
456   m_eeprom->set_clock_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
456   m_eeprom->clk_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
457457
458458   m_c0 = data;
459459   //show_outputs(state);
r24548r24549
644644
645645READ8_MEMBER(sigmab98_state::sammymdl_eeprom_r)
646646{
647   return m_eeprom->read_bit() ? 0x80 : 0;
647   return m_eeprom->do_read() ? 0x80 : 0;
648648}
649649
650650WRITE8_MEMBER(sigmab98_state::sammymdl_eeprom_w)
651651{
652652   // latch the bit
653   m_eeprom->write_bit(data & 0x40);
653   m_eeprom->di_write((data & 0x40) >> 6);
654654
655655   // reset line asserted: reset.
656   m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
656   m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
657657
658658   // clock line asserted: write latch or select next bit to read
659   m_eeprom->set_clock_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
659   m_eeprom->clk_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
660660
661661   if (data & 0x8f)
662662      logerror("%s: unknown eeeprom bits written %02x\n", machine().describe_context(), data);
r24548r24549
15161516   PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_UNKNOWN )
15171517   PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_UNKNOWN )
15181518   PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1519   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )   PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1519   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )   PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
15201520
15211521   PORT_START("IN1")
15221522   PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN2   ) PORT_IMPULSE(5)   // ? (coin error, pulses mask 4 of port c6)
r24548r24549
15541554   PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_UNKNOWN )
15551555   PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_UNKNOWN )
15561556   PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1557   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )   PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1557   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )   PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
15581558
15591559   PORT_START("IN1")
15601560   PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN2   ) PORT_IMPULSE(5)   // ? (coin error, pulses mask 4 of port c6)
r24548r24549
15921592   PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_UNKNOWN )
15931593   PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_UNKNOWN )
15941594   PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1595   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )   PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1595   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL )   PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
15961596
15971597   PORT_START("IN1")
15981598   PORT_BIT( 0x01, IP_ACTIVE_LOW,  IPT_COIN2   ) PORT_IMPULSE(10)  // ? (coin error, pulses mask 4 of port c6)
r24548r24549
16751675                        GeGeGe no Kitarou Youkai Slot
16761676***************************************************************************/
16771677
1678const serial_eeprom_interface eeprom_intf =
1679{
1680   "*110",         // read         1 10 aaaaaa
1681   "*101",         // write        1 01 aaaaaa dddddddddddddddd
1682   "*111",         // erase        1 11 aaaaaa
1683   "*10000xxxx",   // lock         1 00 00xxxx
1684   "*10011xxxx",   // unlock       1 00 11xxxx
1685   0,              // enable_multi_read
1686   7               // reset_delay (otherwise gegege will hang when saving settings)
1687};
1688
16891678INTERRUPT_GEN_MEMBER(sigmab98_state::gegege_vblank_interrupt)
16901679{
16911680   device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x5a);
r24548r24549
16981687   MCFG_CPU_VBLANK_INT_DRIVER("screen", sigmab98_state,  gegege_vblank_interrupt)
16991688
17001689   MCFG_NVRAM_ADD_0FILL("nvram")
1701   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1690   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
17021691
17031692   MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
17041693
r24548r24549
17241713                             Sammy Medal Games
17251714***************************************************************************/
17261715
1727static const serial_eeprom_interface eeprom_interface_93C46_8bit_delay =
1728{
1729   "*110",         // read         1 10 aaaaaa
1730   "*101",         // write        1 01 aaaaaa dddddddd
1731   "*111",         // erase        1 11 aaaaaa
1732   "*10000xxxx",   // lock         1 00 00xxxx
1733   "*10011xxxx",   // unlock       1 00 11xxxx
1734   0,              // enable_multi_read
1735   1               // reset_delay (needed by animalc)
1736//  "*10001xxxx"    // write all    1 00 01xxxx dddddddd
1737//  "*10010xxxx"    // erase all    1 00 10xxxx
1738};
1739
17401716MACHINE_RESET_MEMBER(sigmab98_state,sammymdl)
17411717{
17421718   m_maincpu->set_state_int(Z80_PC, 0x400);  // code starts at 400 ??? (000 = cart header)
r24548r24549
17501726   MCFG_MACHINE_RESET_OVERRIDE(sigmab98_state, sammymdl )
17511727
17521728   MCFG_NVRAM_ADD_0FILL("nvram")   // battery
1753   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_interface_93C46_8bit_delay)
1729   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
17541730
17551731   MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
17561732
trunk/src/mame/drivers/undrfire.c
r24548r24549
238238
239239
240240/**********************************************************
241                EPROM
242**********************************************************/
243
244static const serial_eeprom_interface undrfire_eeprom_interface =
245{
246   "0110",         /* read command */
247   "0101",         /* write command */
248   "0111",         /* erase command */
249   "0100000000",   /* unlock command */
250   "0100110000",   /* lock command */
251};
252
253
254/**********************************************************
255241            GAME INPUTS
256242**********************************************************/
257243
r24548r24549
291277
292278         if (ACCESSING_BITS_0_7)
293279         {
294            m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
295            m_eeprom->write_bit(data & 0x40);
296            m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
280            m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
281            m_eeprom->di_write((data & 0x40) >> 6);
282            m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
297283            return;
298284         }
299285
r24548r24549
536522   PORT_BIT( 0x00000010, IP_ACTIVE_LOW,  IPT_UNKNOWN )
537523   PORT_BIT( 0x00000020, IP_ACTIVE_LOW,  IPT_UNKNOWN )
538524   PORT_BIT( 0x00000040, IP_ACTIVE_LOW,  IPT_UNKNOWN )
539   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* reserved for EEROM */
525   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* reserved for EEROM */
540526   PORT_BIT( 0x00000100, IP_ACTIVE_LOW,  IPT_UNKNOWN )
541527   PORT_BIT( 0x00000200, IP_ACTIVE_LOW,  IPT_UNKNOWN )
542528   PORT_BIT( 0x00000400, IP_ACTIVE_LOW,  IPT_UNKNOWN )
r24548r24549
604590   PORT_BIT( 0x00000010, IP_ACTIVE_LOW,  IPT_UNKNOWN )
605591   PORT_BIT( 0x00000020, IP_ACTIVE_LOW,  IPT_UNKNOWN )
606592   PORT_BIT( 0x00000040, IP_ACTIVE_LOW,  IPT_UNKNOWN )
607   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* reserved for EEROM */
593   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* reserved for EEROM */
608594   PORT_BIT( 0x00000100, IP_ACTIVE_LOW,  IPT_UNKNOWN )
609595   PORT_BIT( 0x00000200, IP_ACTIVE_LOW,  IPT_UNKNOWN )
610596   PORT_BIT( 0x00000400, IP_ACTIVE_LOW,  IPT_UNKNOWN )
r24548r24549
732718   MCFG_CPU_PROGRAM_MAP(undrfire_map)
733719   MCFG_CPU_VBLANK_INT_DRIVER("screen", undrfire_state,  undrfire_interrupt)
734720
735   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, undrfire_eeprom_interface)
721   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
736722
737723   /* video hardware */
738724   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
767753
768754   MCFG_QUANTUM_TIME(attotime::from_hz(480))   /* CPU slices - Need to interleave Cpu's 1 & 3 */
769755
770   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, undrfire_eeprom_interface)
756   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
771757
772758   /* video hardware */
773759   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/20pacgal.c
r24548r24549
135135
136136/*************************************
137137 *
138 *  Non-volatile memory
139 *
140 *************************************/
141
142static const serial_eeprom_interface _20pacgal_eeprom_intf =
143{
144   "*110",           /* read command */
145   "*101",           /* write command */
146   0,                /* erase command */
147   "*10000xxxxx",    /* lock command */
148   "*10011xxxxx",    /* unlock command */
149};
150
151
152/*************************************
153 *
154138 *  Coin counter
155139 *
156140 *************************************/
r24548r24549
304288   PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
305289
306290   PORT_START( "EEPROMIN" )
307   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)   /* bit 7 is EEPROM data */
291   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 */
308292
309293   PORT_START( "EEPROMOUT" )
310   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) */
311   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) */
312   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)      /* bit 7 is data */
294   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) */
295   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) */
296   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)    /* bit 7 is data */
313297INPUT_PORTS_END
314298
315299
r24548r24549
366350   MCFG_CPU_VBLANK_INT_DRIVER("screen", _20pacgal_state,  vblank_irq)
367351
368352
369   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, _20pacgal_eeprom_intf)
353   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
370354
371355   /* video hardware */
372356   MCFG_FRAGMENT_ADD(20pacgal_video)
trunk/src/mame/drivers/albazg.c
r24548r24549
268268   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Coin Out")
269269   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out")
270270   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Init SW")
271   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
271   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
272272   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
273273
274274   PORT_START("IN0")
r24548r24549
322322   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
323323
324324   PORT_START( "EEPROMOUT" )
325   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
326   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
327   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
325   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
326   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
327   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
328328
329329   /* Unused, on the PCB there's just one bank */
330330   PORT_START("DSW1")
r24548r24549
384384   MCFG_CPU_IO_MAP(port_map)
385385   MCFG_CPU_VBLANK_INT_DRIVER("screen", albazg_state,  irq0_line_hold)
386386
387   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
387388
388   MCFG_EEPROM_93C46_ADD("eeprom")
389
390389   MCFG_WATCHDOG_VBLANK_INIT(8) // timing is unknown
391390
392391   MCFG_I8255A_ADD( "ppi8255_0", ppi8255_intf )
trunk/src/mame/drivers/simpsons.c
r24548r24549
184184
185185   PORT_START("TEST")
186186   PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW )
187   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
188   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )    // eeprom ack
187   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
188   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
189189   PORT_BIT( 0xce, IP_ACTIVE_LOW, IPT_UNKNOWN )
190190
191191   PORT_START( "EEPROMOUT" )
192   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
193   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
194   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
192   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
193   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
194   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
195195INPUT_PORTS_END
196196
197197static INPUT_PORTS_START( simpsn2p )
r24548r24549
219219
220220   PORT_START("TEST")
221221   PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW )
222   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
223   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )    // eeprom ack
222   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
223   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
224224   PORT_BIT( 0xce, IP_ACTIVE_LOW, IPT_UNKNOWN )
225225
226226   PORT_START( "EEPROMOUT" )
227   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
228   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
229   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
227   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
228   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
229   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
230230INPUT_PORTS_END
231231
232232
r24548r24549
291291   simpsons_sprite_callback
292292};
293293
294static const serial_eeprom_interface eeprom_intf =
295{
296   "011000",       /*  read command */
297   "011100",       /* write command */
298   0,              /* erase command */
299   "0100000000000",/* lock command */
300   "0100110000000" /* unlock command */
301};
302
303294static MACHINE_CONFIG_START( simpsons, simpsons_state )
304295
305296   /* basic machine hardware */
r24548r24549
311302   MCFG_CPU_PROGRAM_MAP(z80_map)
312303                        /* NMIs are generated by the 053260 */
313304
305   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
314306
315   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
316
317307   /* video hardware */
318308   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
319309
trunk/src/mame/drivers/rungun.c
r24548r24549
5353#define RNG_DEBUG 0
5454
5555
56static const serial_eeprom_interface eeprom_intf =
57{
58   "011000",       /*  read command */
59   "011100",       /* write command */
60   "0100100000000",/* erase command */
61   "0100000000000",/* lock command */
62   "0100110000000" /* unlock command */
63};
64
6556READ16_MEMBER(rungun_state::rng_sysregs_r)
6657{
6758   UINT16 data = 0;
r24548r24549
113104   {
114105      case 0x08/2:
115106         /*
116             bit0  : eeprom_write_bit
117             bit1  : eeprom_set_cs_line
118             bit2  : eeprom_set_clock_line
107             bit0  : eeprom_di_write
108             bit1  : eeprom_cs_write
109             bit2  : eeprom_clk_write
119110             bit3  : coin counter?
120111             bit7  : set before massive memory writes
121112             bit10 : IRQ5 ACK
r24548r24549
261252   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
262253
263254   PORT_START("DSW")
264   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
265   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM ready (always 1) */
255   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
256   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
266257   PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW )
267258   PORT_DIPNAME( 0x10, 0x00, "Monitors" )
268259   PORT_DIPSETTING(    0x00, "1" )
r24548r24549
281272   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
282273
283274   PORT_START( "EEPROMOUT" )
284   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
285   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
286   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
275   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
276   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
277   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
287278
288279   PORT_START("P1")
289280   KONAMI8_B123_START(1)
r24548r24549
387378
388379   MCFG_GFXDECODE(rungun)
389380
381   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
390382
391   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
392
393383   /* video hardware */
394384   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK)
395385
trunk/src/mame/drivers/kickgoal.c
r24548r24549
445445{
446446   if (ACCESSING_BITS_0_7)
447447   {
448      return m_eeprom->read_bit();
448      return m_eeprom->do_read();
449449   }
450450   return 0;
451451}
r24548r24549
458458      switch (offset)
459459      {
460460         case 0:
461            m_eeprom->set_cs_line((data & 0x0001) ? CLEAR_LINE : ASSERT_LINE);
461            m_eeprom->cs_write((data & 0x0001) ? ASSERT_LINE : CLEAR_LINE);
462462            break;
463463         case 1:
464            m_eeprom->set_clock_line((data & 0x0001) ? ASSERT_LINE : CLEAR_LINE);
464            m_eeprom->clk_write((data & 0x0001) ? ASSERT_LINE : CLEAR_LINE);
465465            break;
466466         case 2:
467            m_eeprom->write_bit(data & 0x0001);
467            m_eeprom->di_write(data & 0x0001);
468468            break;
469469      }
470470   }
r24548r24549
649649   MCFG_CPU_IO_MAP(kickgoal_sound_io_map)
650650
651651
652   MCFG_EEPROM_93C46_ADD("eeprom")
653   MCFG_SERIAL_EEPROM_DATA(kickgoal_default_eeprom_type1, 128)
652   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
653   MCFG_EEPROM_SERIAL_DATA(kickgoal_default_eeprom_type1, 128)
654654
655655   /* video hardware */
656656   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
684684   MCFG_CPU_IO_MAP(actionhw_io_map)
685685
686686
687   MCFG_EEPROM_93C46_ADD("eeprom")
688   MCFG_SERIAL_EEPROM_DATA(kickgoal_default_eeprom_type1, 128)
687   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
688   MCFG_EEPROM_SERIAL_DATA(kickgoal_default_eeprom_type1, 128)
689689
690690   /* video hardware */
691691   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/taito_b.c
r24548r24549
373373
374374***************************************************************************/
375375
376static const serial_eeprom_interface taitob_eeprom_intf =
377{
378   "0110",         /*  read command */
379   "0101",         /* write command */
380   "0111",         /* erase command */
381   "0100000000",   /*  lock command */
382   "0100110000"    /* unlock command*/
383};
384
385376READ16_MEMBER(taitob_state::eep_latch_r)
386377{
387378   return m_eep_latch;
r24548r24549
11641155   PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) /*ok*/
11651156
11661157   PORT_START("COIN")
1167   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1158   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
11681159   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
11691160   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
11701161   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
12241215   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
12251216
12261217   PORT_START( "EEPROMOUT" )
1227   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1228   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1229   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1218   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
1219   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
1220   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
12301221INPUT_PORTS_END
12311222
12321223static INPUT_PORTS_START( spacedxo )
r24548r24549
13261317   PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW ) /*ok*/
13271318
13281319   PORT_START("COIN")
1329   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1320   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
13301321   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
13311322   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
13321323   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
13861377   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
13871378
13881379   PORT_START( "EEPROMOUT" )
1389   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1390   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1391   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1380   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
1381   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
1382   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
13921383INPUT_PORTS_END
13931384
13941385static INPUT_PORTS_START( viofight )
r24548r24549
23542345
23552346   MCFG_QUANTUM_TIME(attotime::from_hz(600))
23562347
2357   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, taitob_eeprom_intf)
2348   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
23582349
23592350   MCFG_TC0640FIO_ADD("tc0640fio", pbobble_io_intf)
23602351
r24548r24549
24022393   MCFG_QUANTUM_TIME(attotime::from_hz(600))
24032394
24042395
2405   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, taitob_eeprom_intf)
2396   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
24062397
24072398   MCFG_TC0640FIO_ADD("tc0640fio", pbobble_io_intf)
24082399
r24548r24549
24942485   MCFG_QUANTUM_TIME(attotime::from_hz(600))
24952486
24962487
2497   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, taitob_eeprom_intf)
2488   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
24982489
24992490   MCFG_TC0640FIO_ADD("tc0640fio", pbobble_io_intf)
25002491
trunk/src/mame/drivers/dreambal.c
r24548r24549
3939      m_deco_tilegen1(*this, "tilegen1")
4040   { }
4141
42   required_device<serial_eeprom_device> m_eeprom;
42   required_device<eeprom_serial_93cxx_device> m_eeprom;
4343
4444   /* devices */
4545   required_device<cpu_device> m_maincpu;
r24548r24549
6363
6464      if (mem_mask&0x00ff)
6565      {
66         m_eeprom->set_clock_line(data &0x2 ? ASSERT_LINE : CLEAR_LINE);
67         m_eeprom->write_bit(data &0x1);
68         m_eeprom->set_cs_line(data&0x4 ? CLEAR_LINE : ASSERT_LINE);
66         m_eeprom->clk_write(data &0x2 ? ASSERT_LINE : CLEAR_LINE);
67         m_eeprom->di_write(data &0x1);
68         m_eeprom->cs_write(data&0x4 ? ASSERT_LINE : CLEAR_LINE);
6969      }
7070   }
7171};
r24548r24549
191191   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
192192
193193   PORT_START("DSW")
194   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
194   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
195195   PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
196196   PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
197197   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
r24548r24549
328328   MCFG_PALETTE_LENGTH(0x400/2)
329329   MCFG_GFXDECODE(dreambal)
330330
331   MCFG_EEPROM_93C46_ADD("eeprom")  // 93lc46b
331   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")  // 93lc46b
332332
333333   MCFG_DECO104_ADD("ioprot104")
334334
trunk/src/mame/drivers/galastrm.c
r24548r24549
124124
125125         if (ACCESSING_BITS_0_7)
126126         {
127            m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
128            m_eeprom->write_bit(data & 0x40);
129            m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
127            m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
128            m_eeprom->di_write((data & 0x40) >> 6);
129            m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
130130            return;
131131         }
132132         return;
r24548r24549
200200   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN )
201201   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN )
202202   PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN )
203   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
203   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
204204   PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_START1 )
205205   PORT_BIT( 0x00000200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, galastrm_state,frame_counter_r, NULL)
206206   PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
275275                 MACHINE DRIVERS
276276***********************************************************/
277277
278static const serial_eeprom_interface galastrm_eeprom_interface =
279{
280   "0110",         /* read command */
281   "0101",         /* write command */
282   "0111",         /* erase command */
283   "0100000000",   /* unlock command */
284   "0100110000",   /* lock command */
285};
286
287278/***************************************************************************/
288279
289280static const tc0100scn_interface galastrm_tc0100scn_intf =
r24548r24549
311302   MCFG_CPU_PROGRAM_MAP(galastrm_map)
312303   MCFG_CPU_VBLANK_INT_DRIVER("screen", galastrm_state,  galastrm_interrupt) /* VBL */
313304
314   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, galastrm_eeprom_interface)
305   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
315306
316307   /* video hardware */
317308   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/rbmk.c
r24548r24549
8585   INTERRUPT_GEN_MEMBER(mcu_irq);
8686   required_device<cpu_device> m_maincpu;
8787   required_device<cpu_device> m_mcu;
88   required_device<serial_eeprom_device> m_eeprom;
88   required_device<eeprom_serial_93cxx_device> m_eeprom;
8989};
9090
9191
r24548r24549
113113   //bad ?
114114   if( ACCESSING_BITS_0_7 )
115115   {
116      m_eeprom->write_bit(data & 0x04);
117      m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE:ASSERT_LINE );
116      m_eeprom->di_write((data & 0x04) >> 2);
117      m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE );
118118
119      m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
119      m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
120120   }
121121}
122122
r24548r24549
366366   PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
367367   PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
368368   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
369   PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
369   PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
370370
371371   PORT_START("IN4")   /* 16bit */
372372   PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
r24548r24549
560560   MCFG_PALETTE_LENGTH(0x800)
561561
562562
563   MCFG_EEPROM_93C46_ADD("eeprom")
563   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
564564
565565
566566   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
trunk/src/mame/drivers/seta2.c
r24548r24549
181181
182182READ16_MEMBER(seta2_state::gundamex_eeprom_r)
183183{
184   return ((m_eeprom->read_bit() & 1)) << 3;
184   return ((m_eeprom->do_read() & 1)) << 3;
185185}
186186
187187WRITE16_MEMBER(seta2_state::gundamex_eeprom_w)
188188{
189   m_eeprom->set_clock_line((data & 0x2) ? ASSERT_LINE : CLEAR_LINE);
190   m_eeprom->write_bit(data & 0x1);
191   m_eeprom->set_cs_line((data & 0x4) ? CLEAR_LINE : ASSERT_LINE);
189   m_eeprom->clk_write((data & 0x2) ? ASSERT_LINE : CLEAR_LINE);
190   m_eeprom->di_write(data & 0x1);
191   m_eeprom->cs_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE);
192192}
193193
194194static ADDRESS_MAP_START( gundamex_map, AS_PROGRAM, 16, seta2_state )
r24548r24549
20362036   MCFG_CPU_MODIFY("maincpu")
20372037   MCFG_CPU_PROGRAM_MAP(gundamex_map)
20382038
2039   MCFG_EEPROM_93C46_ADD("eeprom")
2039   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
20402040
20412041   // video hardware
20422042   MCFG_SCREEN_MODIFY("screen")
trunk/src/mame/drivers/plygonet.c
r24548r24549
7272
7373enum { BANK_GROUP_A, BANK_GROUP_B, INVALID_BANK_GROUP };
7474
75static const serial_eeprom_interface eeprom_intf =
76{
77   "*110",          // read command
78   "*101",          // write command
79   "*111",          // erase command
80   "*10000xxxxxxx", // lock command
81   "*10011xxxxxxx", // unlock command
82   1,
83   0
84//  "*10001xxxxxxx", // write all
85//  "*10010xxxxxxx"  // erase all
86};
87
8875READ8_MEMBER(polygonet_state::polygonet_inputs_r)
8976{
9077   return m_inputs[offset]->read();
r24548r24549
10390          D25 = EEPROM CS
10491          D24 = EEPROM DATA
10592      */
106         m_eeprom->write_bit(data & 1);
107         m_eeprom->set_cs_line((data & 2) ? CLEAR_LINE : ASSERT_LINE);
108         m_eeprom->set_clock_line((data & 4) ? ASSERT_LINE : CLEAR_LINE);
93         m_eeprom->di_write(data & 1);
94         m_eeprom->cs_write((data & 2) ? ASSERT_LINE : CLEAR_LINE);
95         m_eeprom->clk_write((data & 4) ? ASSERT_LINE : CLEAR_LINE);
10996
11097         m_sys0 = data;
11198         break;
r24548r24549
669656
670657   MCFG_QUANTUM_PERFECT_CPU("maincpu") /* TODO: TEMPORARY!  UNTIL A MORE LOCALIZED SYNC CAN BE MADE */
671658
672   MCFG_SERIAL_EEPROM_ADD("eeprom", 512, 8, eeprom_intf)
659   MCFG_EEPROM_SERIAL_93C66_ADD("eeprom")
673660
674661   MCFG_GFXDECODE(plygonet)
675662
r24548r24549
724711   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
725712
726713   PORT_START("IN2")
727   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
714   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
728715   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT )
729716   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )
730717   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) // Start 2, unused
trunk/src/mame/drivers/powerbal.c
r24548r24549
3030   int         m_tilebank;
3131   int         m_bg_yoffset;
3232
33   optional_device<serial_eeprom_device> m_eeprom;
33   optional_device<eeprom_serial_93cxx_device> m_eeprom;
3434
3535   DECLARE_DRIVER_INIT(powerbal);
3636   DECLARE_DRIVER_INIT(magicstk);
r24548r24549
4747};
4848
4949
50static const serial_eeprom_interface eeprom_intf =
51{
52   "*110",         /*  read command */
53   "*101",         /* write command */
54   0,              /* erase command */
55   "*10000xxxx",   /* lock command */
56   "*10011xxxx",   /* unlock command */
57   0,              /* enable_multi_read */
58   5               /* reset_delay (otherwise wbeachvl will hang when saving settings) */
59};
60
6150WRITE16_MEMBER(powerbal_state::magicstk_coin_eeprom_w)
6251{
6352   if (ACCESSING_BITS_0_7)
6453   {
6554      coin_counter_w(machine(), 0, data & 0x20);
6655
67      m_eeprom->set_cs_line((data & 8) ? CLEAR_LINE : ASSERT_LINE);
68      m_eeprom->write_bit(data & 2);
69      m_eeprom->set_clock_line((data & 4) ? CLEAR_LINE : ASSERT_LINE);
56      m_eeprom->cs_write((data & 8) ? ASSERT_LINE : CLEAR_LINE);
57      m_eeprom->di_write((data & 2) >> 1);
58      m_eeprom->clk_write((data & 4) ? CLEAR_LINE : ASSERT_LINE);
7059   }
7160}
7261
r24548r24549
242231   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
243232
244233   PORT_START("IN2")
245   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)   /* EEPROM data */
234   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)   /* EEPROM data */
246235   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
247236   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
248237   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
339328   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
340329
341330   PORT_START("IN2")
342   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)   /* EEPROM data */
331   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)   /* EEPROM data */
343332   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
344333   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
345334   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
532521   MCFG_CPU_PROGRAM_MAP(magicstk_main_map)
533522   MCFG_CPU_VBLANK_INT_DRIVER("screen", powerbal_state, irq2_line_hold)
534523
535   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
536   MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0)
524   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
525   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
537526
538527   MCFG_MACHINE_START_OVERRIDE(powerbal_state,powerbal)
539528   MCFG_MACHINE_RESET_OVERRIDE(powerbal_state,powerbal)
trunk/src/mame/drivers/leland.c
r24548r24549
145145   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
146146
147147   PORT_START("IN3")   /* 0x91 */
148   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
148   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
149149   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
150150   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
151151   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
191191   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
192192
193193   PORT_START("IN3")   /* 0xD1 */
194   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
194   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
195195   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
196196   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
197197   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
224224   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Aim") PORT_PLAYER(1)
225225
226226   PORT_START("IN3")   /* 0x91 */
227   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
227   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
228228   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
229229   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
230230   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
263263//  PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )        /* redundant inputs */
264264
265265   PORT_START("IN3")   /* 0xD1 */
266   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
266   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
267267   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
268268   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
269269   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
299299   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
300300
301301   PORT_START("IN3")   /* 0xD1 */
302   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
302   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
303303   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
304304   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
305305   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
334334   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
335335
336336   PORT_START("IN3")   /* 0x91 */
337   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
337   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
338338   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
339339   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
340340   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
369369   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Run/Cutoff") PORT_PLAYER(1)
370370
371371   PORT_START("IN3")   /* 0x51/D1 */
372   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
372   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
373373   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
374374   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
375375   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
406406   PORT_BIT( 0xe0, 0x00, IPT_PEDAL ) PORT_MINMAX(0x00,0xe0) PORT_SENSITIVITY(100) PORT_KEYDELTA(64) PORT_PLAYER(2)
407407
408408   PORT_START("IN3")   /* 0xD1 */
409   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
409   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
410410   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
411411   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
412412   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
444444   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
445445
446446   PORT_START("IN3")   /* 0x91 */
447   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
447   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
448448   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
449449   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
450450   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
486486   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
487487
488488   PORT_START("IN3")   /* 0x91 */
489   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
489   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
490490   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
491491   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
492492   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
544544   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
545545
546546   PORT_START("IN3")   /* 0x91 */
547   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
547   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
548548   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
549549   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
550550   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
r24548r24549
599599   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
600600
601601   PORT_START("IN3")   /* 0xD1 */
602   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
602   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
603603   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
604604   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
605605   PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW )
r24548r24549
673673   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
674674
675675   PORT_START("IN3")   /* 0x51 */
676   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
676   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
677677   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
678678   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )
679679   PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
724724
725725/*************************************
726726 *
727 *  EEPROM interface
728 *
729 *************************************/
730
731static const serial_eeprom_interface eeprom_intf =
732{
733   "110",
734   "101",
735   "111"
736};
737
738
739
740/*************************************
741 *
742727 *  Machine driver
743728 *
744729 *************************************/
r24548r24549
758743   MCFG_MACHINE_START_OVERRIDE(leland_state,leland)
759744   MCFG_MACHINE_RESET_OVERRIDE(leland_state,leland)
760745
761   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
746   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
762747   MCFG_NVRAM_ADD_0FILL("battery")
763748
764749   /* video hardware */
trunk/src/mame/drivers/tasman.c
r24548r24549
237237   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
238238   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
239239   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
240   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
240   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
241241   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
242242   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
243243   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
r24548r24549
526526   PORT_DIPSETTING(    0x80000000, DEF_STR( On ) )
527527
528528   PORT_START( "EEPROMOUT" )
529   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
530   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
531   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
529   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
530   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
531   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
532532INPUT_PORTS_END
533533
534534static void kongambl_sprite_callback( running_machine &machine, int *code, int *color, int *priority_mask )
r24548r24549
597597   MCFG_CPU_PROGRAM_MAP(kongamaud_map)
598598   MCFG_CPU_PERIODIC_INT_DRIVER(kongambl_state, irq2_line_hold,  480)
599599
600   MCFG_EEPROM_93C46_ADD("eeprom")
600   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
601601
602602   MCFG_SCREEN_ADD("screen", RASTER)
603603   MCFG_SCREEN_REFRESH_RATE(60)
trunk/src/mame/drivers/model3.c
r24548r24549
11921192
11931193/*****************************************************************************/
11941194
1195/* this is a 93C46 but with reset delay that is needed by Lost World */
1196static const serial_eeprom_interface eeprom_intf =
1197{
1198   "*110",         /*  read command */
1199   "*101",         /* write command */
1200   "*111",         /* erase command */
1201   "*10000xxxx",   /* lock command */
1202   "*10011xxxx",   /* unlock command */
1203   1,              /* enable_multi_read */
1204   5               /* reset_delay (Lost World needs this, very similar to wbeachvl in playmark.c) */
1205};
1206
12071195static const struct LSI53C810interface lsi53c810_intf =
12081196{
12091197   &scsi_irq_callback,
r24548r24549
13931381         if (ACCESSING_BITS_56_63)
13941382         {
13951383            int reg = (data >> 56) & 0xff;
1396            m_eeprom->write_bit((reg & 0x20) ? 1 : 0);
1397            m_eeprom->set_clock_line((reg & 0x80) ? ASSERT_LINE : CLEAR_LINE);
1398            m_eeprom->set_cs_line((reg & 0x40) ? CLEAR_LINE : ASSERT_LINE);
1384            m_eeprom->di_write((reg & 0x20) ? 1 : 0);
1385            m_eeprom->clk_write((reg & 0x80) ? ASSERT_LINE : CLEAR_LINE);
1386            m_eeprom->cs_write((reg & 0x40) ? ASSERT_LINE : CLEAR_LINE);
13991387            m_controls_bank = reg & 0xff;
14001388         }
14011389         return;
r24548r24549
18721860   PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
18731861
18741862   PORT_START("IN1")
1875   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1863   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
18761864   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button B") PORT_CODE(KEYCODE_8)
18771865   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button B") PORT_CODE(KEYCODE_7)
18781866   PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
21072095   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )     /* Select 2 */
21082096
21092097   PORT_START("IN1")
2110   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
2098   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
21112099   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button B") PORT_CODE(KEYCODE_8)
21122100   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button B") PORT_CODE(KEYCODE_7)
21132101   PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
53695357   MCFG_MACHINE_START_OVERRIDE(model3_state,model3_10)
53705358   MCFG_MACHINE_RESET_OVERRIDE(model3_state,model3_10)
53715359
5372   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
5360   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
53735361   MCFG_NVRAM_ADD_1FILL("backup")
53745362
53755363
r24548r24549
54105398   MCFG_MACHINE_START_OVERRIDE(model3_state,model3_15)
54115399   MCFG_MACHINE_RESET_OVERRIDE(model3_state,model3_15)
54125400
5413   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
5401   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
54145402   MCFG_NVRAM_ADD_1FILL("backup")
54155403
54165404
r24548r24549
54575445   MCFG_MACHINE_START_OVERRIDE(model3_state,model3_20)
54585446   MCFG_MACHINE_RESET_OVERRIDE(model3_state,model3_20)
54595447
5460   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
5448   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
54615449   MCFG_NVRAM_ADD_1FILL("backup")
54625450
54635451
r24548r24549
54955483   MCFG_MACHINE_START_OVERRIDE(model3_state,model3_21)
54965484   MCFG_MACHINE_RESET_OVERRIDE(model3_state,model3_21)
54975485
5498   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
5486   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
54995487   MCFG_NVRAM_ADD_1FILL("backup")
55005488
55015489
trunk/src/mame/drivers/othunder.c
r24548r24549
297297bits are different.
298298******************************************************************/
299299
300static const serial_eeprom_interface eeprom_intf =
301{
302   "0110",         /* read command */
303   "0101",         /* write command */
304   "0111",         /* erase command */
305   "0100000000",   /* lock command */
306   "0100111111"    /* unlock command */
307};
308
309300WRITE16_MEMBER(othunder_state::othunder_tc0220ioc_w)
310301{
311302   if (ACCESSING_BITS_0_7)
r24548r24549
330321            if (data & 4)
331322               popmessage("OBPRI SET!");
332323
333            m_eeprom->write_bit(data & 0x40);
334            m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
335            m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
324            m_eeprom->di_write((data & 0x40) >> 6);
325            m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
326            m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
336327            break;
337328
338329         default:
r24548r24549
351342   switch (offset)
352343   {
353344      case 0x03:
354         return (m_eeprom->read_bit() & 1) << 7;
345         return (m_eeprom->do_read() & 1) << 7;
355346
356347      default:
357348         return m_tc0220ioc->read(space, offset);
r24548r24549
686677   MCFG_CPU_ADD("audiocpu", Z80,16000000/4 )   /* 4 MHz */
687678   MCFG_CPU_PROGRAM_MAP(z80_sound_map)
688679
689   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
680   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
690681
691682
692683   MCFG_TC0220IOC_ADD("tc0220ioc", othunder_io_intf)
trunk/src/mame/drivers/ataxx.c
r24548r24549
119119   PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
120120
121121   PORT_START("IN2")       /* 0x20 */
122   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
122   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
123123   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
124124
125125   PORT_START("AN0")       /* 0x00 - analog X */
r24548r24549
150150   PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
151151
152152   PORT_START("IN2")       /* 0x20 */
153   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
153   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
154154   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
155155   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )
156156   PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
202202   PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
203203
204204   PORT_START("IN2")       /* 0x20 */
205   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
205   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
206206   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
207207
208208   PORT_START("AN0")       /* Analog wheel 1 */
r24548r24549
248248   PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED )
249249
250250   PORT_START("IN2")       /* 0x20 */
251   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
251   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
252252   PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNUSED )
253253
254254   PORT_START("P1")        /* 0x0E */
r24548r24549
286286
287287/*************************************
288288 *
289 *  EEPROM interface
290 *
291 *************************************/
292
293static const serial_eeprom_interface eeprom_intf =
294{
295   "000001100",
296   "000001010",
297   0,
298   "0000010000000000",
299   "0000010011000000",
300   1
301};
302
303
304
305/*************************************
306 *
307289 *  Machine driver
308290 *
309291 *************************************/
r24548r24549
326308   MCFG_MACHINE_START_OVERRIDE(leland_state,ataxx)
327309   MCFG_MACHINE_RESET_OVERRIDE(leland_state,ataxx)
328310
329   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 16, eeprom_intf)
311   MCFG_EEPROM_SERIAL_93C56_ADD("eeprom")
312   MCFG_EEPROM_SERIAL_ENABLE_STREAMING()
313
330314   MCFG_NVRAM_ADD_0FILL("battery")
331315
332316   /* video hardware */
trunk/src/mame/drivers/konamigv.c
r24548r24549
321321   MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 5, psx_dma_write_delegate( FUNC( konamigv_state::scsi_dma_write ), (konamigv_state *) owner ) )
322322
323323   MCFG_DEVICE_ADD("mb89371", MB89371, 0)
324   MCFG_EEPROM_93C46_ADD("eeprom")
324   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
325325
326326   MCFG_SCSIBUS_ADD("scsi")
327327   MCFG_SCSIDEV_ADD("scsi:cdrom", SCSICD, SCSI_ID_4)
r24548r24549
359359   PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_COIN1 )
360360   PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_SERVICE1 )
361361   PORT_SERVICE_NO_TOGGLE( 0x00001000, IP_ACTIVE_LOW )
362   PORT_BIT( 0x00002000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER( "eeprom", serial_eeprom_device, read_bit )
362   PORT_BIT( 0x00002000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER( "eeprom", eeprom_serial_93cxx_device, do_read )
363363   PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_UNKNOWN )
364364   PORT_BIT( 0x00008000, IP_ACTIVE_LOW, IPT_UNKNOWN )
365365   PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
403403   PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNKNOWN )
404404
405405   PORT_START("EEPROMOUT")
406   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
407   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
408   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
406   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
407   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
408   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
409409INPUT_PORTS_END
410410
411411/* Simpsons Bowling */
trunk/src/mame/drivers/stlforce.c
r24548r24549
7878{
7979   if( ACCESSING_BITS_0_7 )
8080   {
81      m_eeprom->write_bit(data & 0x01);
82      m_eeprom->set_cs_line((data & 0x02) ? CLEAR_LINE : ASSERT_LINE );
83      m_eeprom->set_clock_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
81      m_eeprom->di_write(data & 0x01);
82      m_eeprom->cs_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
83      m_eeprom->clk_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
8484   }
8585}
8686
r24548r24549
138138   PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
139139   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
140140   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
141   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* eeprom */
141   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* eeprom */
142142   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
143143   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
144144INPUT_PORTS_END
r24548r24549
190190   MCFG_CPU_PROGRAM_MAP(stlforce_map)
191191   MCFG_CPU_VBLANK_INT_DRIVER("screen", stlforce_state,  irq4_line_hold)
192192
193   MCFG_EEPROM_93C46_ADD("eeprom")
193   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
194194
195195   /* video hardware */
196196   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/overdriv.c
r24548r24549
5454};
5555
5656
57static const serial_eeprom_interface eeprom_intf =
58{
59   "011000",       /*  read command */
60   "010100",       /* write command */
61   0,              /* erase command */
62   "010000000000", /* lock command */
63   "010011000000"  /* unlock command */
64};
65
6657WRITE16_MEMBER(overdriv_state::eeprom_w)
6758{
6859//logerror("%06x: write %04x to eeprom_w\n",space.device().safe_pc(),data);
r24548r24549
246237   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
247238   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
248239   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
249   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
250   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
240   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
241   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
251242
252243   PORT_START("SYSTEM")
253244   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r24548r24549
263254   PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_SENSITIVITY(100) PORT_KEYDELTA(50)
264255
265256   PORT_START( "EEPROMOUT" )
266   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
267   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
268   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
257   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
258   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
259   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
269260INPUT_PORTS_END
270261
271262
r24548r24549
350341
351342   MCFG_QUANTUM_TIME(attotime::from_hz(12000))
352343
344   MCFG_EEPROM_SERIAL_ER5911_16BIT_ADD("eeprom")
345   MCFG_EEPROM_SERIAL_DATA(overdriv_default_eeprom, 128)
353346
354   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
355   MCFG_SERIAL_EEPROM_DATA(overdriv_default_eeprom, 128)
356
357347   /* video hardware */
358348   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
359349
trunk/src/mame/drivers/jackpool.c
r24548r24549
4242   UINT32 screen_update_jackpool(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
4343   INTERRUPT_GEN_MEMBER(jackpool_interrupt);
4444   required_device<cpu_device> m_maincpu;
45   required_device<serial_eeprom_device> m_eeprom;
45   required_device<eeprom_serial_93cxx_device> m_eeprom;
4646};
4747
4848
r24548r24549
120120      case 0x1c: return ioport("BET")->read();
121121      case 0x1e: return 0xff; //ticket motor
122122      case 0x20: return 0xff; //hopper motor
123      case 0x2c: return m_eeprom->read_bit();
124      case 0x2e: return m_eeprom->read_bit();
123      case 0x2c: return m_eeprom->do_read();
124      case 0x2e: return m_eeprom->do_read();
125125//      default: printf("R %02x\n",offset*2); break;
126126   }
127127
r24548r24549
148148      case 0x4a: /* ---- ---x Ticket motor */break;
149149      case 0x4c: /* ---- ---x Hopper motor */break;
150150      case 0x4e: m_map_vreg = data & 1;        break;
151      case 0x50: m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break;
152      case 0x52: m_eeprom->set_clock_line((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break;
153      case 0x54: m_eeprom->write_bit(data & 1); break;
154//      case 0x5a: m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break;
155//      case 0x5c: m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE ); break;
151      case 0x50: m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break;
152      case 0x52: m_eeprom->clk_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break;
153      case 0x54: m_eeprom->di_write(data & 1); break;
154//      case 0x5a: m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break;
155//      case 0x5c: m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE ); break;
156156      case 0x60: break;
157157//      default: printf("[%02x] <- %02x W\n",offset*2,data);      break;
158158   }
r24548r24549
161161   if(offset*2 == 0x54)
162162   {
163163      printf("Write bit %02x\n",data);
164      m_eeprom->write_bit(data & 1);
164      m_eeprom->di_write(data & 1);
165165   }
166166   if(offset*2 == 0x52)
167167   {
168168      printf("Clock bit %02x\n",data);
169      m_eeprom->set_clock_line((data & 1) ? ASSERT_LINE : CLEAR_LINE );
169      m_eeprom->clk_write((data & 1) ? ASSERT_LINE : CLEAR_LINE );
170170   }
171171   if(offset*2 == 0x50)
172172   {
173173      printf("chip select bit %02x\n",data);
174      m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE );
174      m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE );
175175   }
176176   #endif
177177}
r24548r24549
273273   MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 32*8-1)
274274   MCFG_SCREEN_UPDATE_DRIVER(jackpool_state, screen_update_jackpool)
275275
276   MCFG_EEPROM_93C46_ADD("eeprom")
276   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
277277
278278   MCFG_PALETTE_LENGTH(0x200)
279279
trunk/src/mame/drivers/deco156.c
r24548r24549
203203   PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNUSED )
204204   PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNUSED )
205205   PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNUSED )
206   PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
206   PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
207207   PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
208208   PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
209209   PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
213213   PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNUSED )
214214
215215   PORT_START( "EEPROMOUT" )
216   PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
217   PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
218   PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
216   PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
217   PORT_BIT( 0x00000020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
218   PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
219219INPUT_PORTS_END
220220
221221static INPUT_PORTS_START( wcvol95 )
r24548r24549
245245   PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNUSED ) /* 'soundmask' */
246246   PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNUSED )
247247   PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNUSED )
248   PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
248   PORT_BIT( 0x01000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
249249   PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1)
250250   PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1)
251251   PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
255255   PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNUSED )
256256
257257   PORT_START( "EEPROMOUT" )
258   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
259   PORT_BIT( 0x00000002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
260   PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
258   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
259   PORT_BIT( 0x00000002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
260   PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
261261INPUT_PORTS_END
262262
263263
r24548r24549
356356   MCFG_CPU_PROGRAM_MAP(hvysmsh_map)
357357   MCFG_CPU_VBLANK_INT_DRIVER("screen", deco156_state,  deco32_vbl_interrupt)
358358
359   MCFG_EEPROM_93C46_ADD("eeprom")
359   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
360360
361361   MCFG_SCREEN_ADD("screen", RASTER)
362362   MCFG_SCREEN_REFRESH_RATE(58)
r24548r24549
393393   MCFG_CPU_PROGRAM_MAP(wcvol95_map)
394394   MCFG_CPU_VBLANK_INT_DRIVER("screen", deco156_state,  deco32_vbl_interrupt)
395395
396   MCFG_EEPROM_93C46_ADD("eeprom")
396   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
397397
398398   MCFG_SCREEN_ADD("screen", RASTER)
399399   MCFG_SCREEN_REFRESH_RATE(58)
trunk/src/mame/drivers/cps1.c
r24548r24549
432432*
433433********************************************************************/
434434
435static const serial_eeprom_interface qsound_eeprom_interface =
436{
437   "0110", /*  read command */
438   "0101", /* write command */
439   "0111"  /* erase command */
440};
441
442static const serial_eeprom_interface pang3_eeprom_interface =
443{
444   "0110", /*  read command */
445   "0101", /* write command */
446   "0111"  /* erase command */
447};
448
449
450435/*
451436PAL PRG1 (16P8B @ 12H):
452437
r24548r24549
22712256   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
22722257
22732258   PORT_START( "EEPROMIN" )
2274   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
2259   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
22752260
22762261   PORT_START( "EEPROMOUT" )
2277   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
2278   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
2279   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
2262   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
2263   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
2264   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
22802265INPUT_PORTS_END
22812266
22822267INPUT_PORTS_START( dino )
r24548r24549
23012286   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
23022287
23032288   PORT_START( "EEPROMIN" )
2304   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
2289   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
23052290
23062291   PORT_START( "EEPROMOUT" )
2307   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
2308   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
2309   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
2292   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
2293   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
2294   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
23102295INPUT_PORTS_END
23112296
23122297
r24548r24549
24292414   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
24302415
24312416   PORT_START( "EEPROMIN" )
2432   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
2417   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
24332418
24342419   PORT_START( "EEPROMOUT" )
2435   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
2436   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
2437   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
2420   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
2421   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
2422   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
24382423INPUT_PORTS_END
24392424
24402425
r24548r24549
25292514   PORT_BIT( 0xf7, IP_ACTIVE_LOW, IPT_UNKNOWN )
25302515
25312516   PORT_START( "EEPROMIN" )
2532   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
2517   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
25332518
25342519   PORT_START( "EEPROMOUT" )
2535   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
2536   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
2537   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
2520   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
2521   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
2522   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
25382523INPUT_PORTS_END
25392524
25402525/* Needs further checking */
r24548r24549
27712756   PORT_DIPUNUSED( 0x80, 0x80 ) /* doubles up as an extra service switch */
27722757
27732758   PORT_START( "EEPROMIN" )
2774   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
2759   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
27752760
27762761   PORT_START( "EEPROMOUT" )
2777   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
2778   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
2779   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
2762   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
2763   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
2764   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
27802765INPUT_PORTS_END
27812766
27822767/* Needs further checking */
r24548r24549
30703055   PORT_INCLUDE( sfzch )
30713056
30723057   PORT_START( "EEPROMIN" )
3073   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
3058   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
30743059
30753060   PORT_START( "EEPROMOUT" )
3076   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
3077   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
3078   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
3061   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
3062   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
3063   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
30793064INPUT_PORTS_END
30803065
30813066/*
r24548r24549
32133198static MACHINE_CONFIG_DERIVED( pang3, cps1_12MHz )
32143199
32153200   /* basic machine hardware */
3216   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, pang3_eeprom_interface)
3201   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
32173202MACHINE_CONFIG_END
32183203
32193204static MACHINE_CONFIG_DERIVED( ganbare, cps1_10MHz )
r24548r24549
32383223
32393224   MCFG_MACHINE_START_OVERRIDE(cps_state,qsound)
32403225
3241   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface)
3226   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
32423227
32433228   /* sound hardware */
32443229   MCFG_DEVICE_REMOVE("mono")
r24548r24549
32553240static MACHINE_CONFIG_DERIVED( wofhfh, cps1_12MHz )
32563241
32573242   /* basic machine hardware */
3258   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, qsound_eeprom_interface)
3243   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
32593244MACHINE_CONFIG_END
32603245
32613246static MACHINE_CONFIG_DERIVED( sf2m3, cps1_12MHz)
trunk/src/mame/drivers/gunbustr.c
r24548r24549
100100
101101         if (ACCESSING_BITS_0_7)
102102         {
103            m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
104            m_eeprom->write_bit(data & 0x40);
105            m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
103            m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
104            m_eeprom->di_write((data & 0x40) >> 6);
105            m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
106106         }
107107         break;
108108      }
r24548r24549
185185   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_UNKNOWN )
186186   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNKNOWN )
187187   PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN )
188   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
188   PORT_BIT( 0x00000080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
189189   PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
190190   PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
191191   PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
r24548r24549
284284                 MACHINE DRIVERS
285285***********************************************************/
286286
287static const serial_eeprom_interface gunbustr_eeprom_interface =
288{
289   "0110",         /* read command */
290   "0101",         /* write command */
291   "0111",         /* erase command */
292   "0100000000",   /* unlock command */
293   "0100110000",   /* lock command */
294};
295
296287static const tc0480scp_interface gunbustr_tc0480scp_intf =
297288{
298289   1, 2,           /* gfxnum, txnum */
r24548r24549
310301   MCFG_CPU_PROGRAM_MAP(gunbustr_map)
311302   MCFG_CPU_VBLANK_INT_DRIVER("screen", gunbustr_state,  gunbustr_interrupt) /* VBL */
312303
313   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, gunbustr_eeprom_interface)
304   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
314305
315306   /* video hardware */
316307   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/pzletime.c
r24548r24549
6565   UINT32 screen_update_pzletime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6666   required_device<cpu_device> m_maincpu;
6767   required_device<okim6295_device> m_oki;
68   required_device<serial_eeprom_device> m_eeprom;
68   required_device<eeprom_serial_93cxx_device> m_eeprom;
6969};
7070
7171
r24548r24549
171171{
172172   if (ACCESSING_BITS_0_7)
173173   {
174      m_eeprom->write_bit(data & 0x01);
175      m_eeprom->set_cs_line((data & 0x02) ? CLEAR_LINE : ASSERT_LINE );
176      m_eeprom->set_clock_line((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
174      m_eeprom->di_write(data & 0x01);
175      m_eeprom->cs_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
176      m_eeprom->clk_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE );
177177   }
178178}
179179
r24548r24549
246246   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
247247   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
248248   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
249   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* eeprom */
249   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* eeprom */
250250   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, pzletime_state,ticket_status_r, NULL) /* ticket dispenser */
251251   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
252252
r24548r24549
335335   MCFG_SCREEN_UPDATE_DRIVER(pzletime_state, screen_update_pzletime)
336336   MCFG_GFXDECODE(pzletime)
337337   MCFG_PALETTE_LENGTH(0x300 + 32768)
338   MCFG_EEPROM_93C46_ADD("eeprom")
338   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
339339
340340
341341   /* sound hardware */
trunk/src/mame/drivers/pntnpuzl.c
r24548r24549
154154   DECLARE_READ16_MEMBER(pntnpuzl_eeprom_r);
155155   DECLARE_WRITE16_MEMBER(pntnpuzl_eeprom_w);
156156   DECLARE_DRIVER_INIT(pip);
157   required_device<serial_eeprom_device> m_eeprom;
157   required_device<eeprom_serial_93cxx_device> m_eeprom;
158158};
159159
160160
161static const serial_eeprom_interface eeprom_intf =
162{
163   "*110",         /*  read command */
164   "*101",         /* write command */
165   NULL,           /* erase command */
166   "*10000xxxx",   /* lock command */
167   "*10011xxxx"    /* unlock command */
168};
169
170
171161READ16_MEMBER(pntnpuzl_state::pntnpuzl_eeprom_r)
172162{
173163   /* bit 11 is EEPROM data */
174   return (m_eeprom_data & 0xf4ff) | (m_eeprom->read_bit()<<11) | (ioport("IN1")->read() & 0x0300);
164   return (m_eeprom_data & 0xf4ff) | (m_eeprom->do_read()<<11) | (ioport("IN1")->read() & 0x0300);
175165}
176166
177167WRITE16_MEMBER(pntnpuzl_state::pntnpuzl_eeprom_w)
r24548r24549
182172   /* bit 13 is clock (active high) */
183173   /* bit 14 is cs (active high) */
184174
185   m_eeprom->write_bit(data & 0x1000);
186   m_eeprom->set_cs_line((data & 0x4000) ? CLEAR_LINE : ASSERT_LINE);
187   m_eeprom->set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE);
175   m_eeprom->di_write((data & 0x1000) >> 12);
176   m_eeprom->cs_write((data & 0x4000) ? ASSERT_LINE : CLEAR_LINE);
177   m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE);
188178}
189179
190180
r24548r24549
357347   MCFG_CPU_ADD("maincpu", M68000, 12000000)//??
358348   MCFG_CPU_PROGRAM_MAP(pntnpuzl_map)
359349
360   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
350   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
361351
362352   /* video hardware */
363353   MCFG_FRAGMENT_ADD( pcvideo_vga )
trunk/src/mame/drivers/mystwarr.c
r24548r24549
3333
3434
3535
36static const serial_eeprom_interface eeprom_intf =
37{
38   "011000",       /*  read command */
39   "011100",       /* write command */
40   "0100100000000",/* erase command */
41   "0100000000000",/* lock command */
42   "0100110000000" /* unlock command */
43};
44
45/* Gaiapolis and Polygonet Commanders use the ER5911,
46   but the command formats are slightly different.  Why? */
47static const serial_eeprom_interface gaia_eeprom_intf =
48{
49   "011000",       /*  read command */
50   "010100",       /* write command */
51   "0100100000000",/* erase command */
52   "0100000000000",/* lock command */
53   "0100110000000" /* unlock command */
54};
55
5636READ16_MEMBER(mystwarr_state::eeprom_r)
5737{
5838   if (ACCESSING_BITS_0_7)
r24548r24549
600580   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
601581
602582   PORT_START("IN1")
603   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
604   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM ready (always 1) */
583   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
584   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
605585   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )
606586   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* game loops if this is set */
607587   PORT_DIPNAME( 0x10, 0x00, "Sound Output" )      PORT_DIPLOCATION("SW1:1")
r24548r24549
624604   KONAMI16_MSB(4, IPT_BUTTON3, IPT_START4 )
625605
626606   PORT_START( "EEPROMOUT" )
627   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
628   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
629   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
607   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
608   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
609   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
630610INPUT_PORTS_END
631611
632612static INPUT_PORTS_START( metamrph )
r24548r24549
641621   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
642622
643623   PORT_START("IN1")
644   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
645   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM ready (always 1) */
624   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
625   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
646626   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL )
647627   PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW )
648628   PORT_DIPNAME( 0x10, 0x00, "Sound Output" )          PORT_DIPLOCATION("SW1:1")
r24548r24549
667647   KONAMI16_MSB(4, IPT_BUTTON3, IPT_START4 )
668648
669649   PORT_START( "EEPROMOUT" )
670   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
671   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
672   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
650   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
651   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
652   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
673653INPUT_PORTS_END
674654
675655static INPUT_PORTS_START( viostorm )
r24548r24549
684664   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
685665
686666   PORT_START("IN1")
687   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
688   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM ready (always 1) */
667   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
668   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
689669   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL )
690670   PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW )
691671   PORT_DIPNAME( 0x10, 0x00, "Sound Output" )          PORT_DIPLOCATION("SW1:1")
r24548r24549
710690   KONAMI16_MSB(4, IPT_BUTTON3, IPT_START4 )
711691
712692   PORT_START( "EEPROMOUT" )
713   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
714   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
715   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
693   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
694   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
695   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
716696INPUT_PORTS_END
717697
718698static INPUT_PORTS_START( dadandrn )
r24548r24549
728708   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
729709
730710   PORT_START("IN1")
731   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
732   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM ready (always 1) */
711   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
712   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
733713   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL )
734714   PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW )
735715   PORT_DIPNAME( 0x10, 0x00, "Sound Output" )          PORT_DIPLOCATION("SW1:1")
r24548r24549
751731   KONAMI8_B123_START(4)
752732
753733   PORT_START( "EEPROMOUT" )
754   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
755   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
756   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
734   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
735   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
736   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
757737INPUT_PORTS_END
758738
759739static INPUT_PORTS_START( martchmp )
r24548r24549
768748   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
769749
770750   PORT_START("IN1")
771   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
772   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM ready (always 1) */
751   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
752   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
773753   PORT_SERVICE_NO_TOGGLE( 0x04, IP_ACTIVE_LOW )
774754   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* game loops if this is set */
775755   PORT_DIPNAME( 0x10, 0x00, "Sound Output" )          PORT_DIPLOCATION("SW1:1")
r24548r24549
790770   KONAMI16_MSB(4, IPT_BUTTON3, IPT_START4 )
791771
792772   PORT_START( "EEPROMOUT" )
793   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
794   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
795   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
773   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
774   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
775   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
796776INPUT_PORTS_END
797777
798778/**********************************************************************************/
r24548r24549
970950
971951   MCFG_QUANTUM_TIME(attotime::from_hz(1920))
972952
973   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
953   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
974954   MCFG_K053252_ADD("k053252", 6000000, mystwarr_k053252_intf) // 6 MHz?
975955
976956   MCFG_MACHINE_START_OVERRIDE(mystwarr_state,mystwarr)
r24548r24549
10961076
10971077   MCFG_GFXDECODE(gaiapols)
10981078
1099   MCFG_DEVICE_REMOVE("eeprom")
1100   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, gaia_eeprom_intf)
1101
11021079   /* video hardware */
11031080   MCFG_VIDEO_START_OVERRIDE(mystwarr_state,gaiapols)
11041081   MCFG_SCREEN_MODIFY("screen")
trunk/src/mame/drivers/konamigx.c
r24548r24549
13611361   //      excpuint stat, objdma stat, eeprom do
13621362
13631363   // note: racin' force expects bit 1 of the eeprom port to toggle
1364   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1364   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
13651365   PORT_BIT( 0x000000fe, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, konamigx_state,gx_rdport1_3_r, NULL)
13661366   PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_COIN1 )
13671367   PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_COIN2 )
r24548r24549
13741374   PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED )   /* DIP#1 & DIP#2 */
13751375
13761376   PORT_START( "EEPROMOUT" )
1377   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1378   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1379   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1377   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
1378   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
1379   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
13801380INPUT_PORTS_END
13811381
13821382
r24548r24549
17771777   MCFG_MACHINE_START_OVERRIDE(konamigx_state,konamigx)
17781778   MCFG_MACHINE_RESET_OVERRIDE(konamigx_state,konamigx)
17791779
1780   MCFG_EEPROM_93C46_ADD("eeprom")
1780   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
17811781
17821782   /* video hardware */
17831783   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
trunk/src/mame/drivers/tmnt.c
r24548r24549
403403
404404***************************************************************************/
405405
406static const serial_eeprom_interface eeprom_intf =
407{
408   "011000",       /*  read command */
409   "011100",       /* write command */
410   0,              /* erase command */
411   "0100000000000",/* lock command */
412   "0100110000000" /* unlock command */
413};
414
415
416406READ16_MEMBER(tmnt_state::blswhstl_coin_r)
417407{
418408   int res;
r24548r24549
464454   }
465455}
466456
467static const serial_eeprom_interface thndrx2_eeprom_intf =
468{
469   "011000",       /*  read command */
470   "010100",       /* write command */
471   0,              /* erase command */
472   "0100000000000",/* lock command */
473   "0100110000000" /* unlock command */
474};
475
476457READ16_MEMBER(tmnt_state::thndrx2_eeprom_r)
477458{
478459   int res;
r24548r24549
16201601   KONAMI16_LSB( 2, IPT_UNKNOWN, IPT_UNKNOWN )
16211602
16221603   PORT_START("EEPROM")
1623   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1624   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM status? - always 1 */
1604   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
1605   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
16251606   PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNKNOWN )
16261607
16271608   PORT_START( "EEPROMOUT" )
1628   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1629   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1630   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1609   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
1610   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
1611   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
16311612INPUT_PORTS_END
16321613
16331614static INPUT_PORTS_START( glfgreat )
r24548r24549
17641745   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
17651746
17661747   PORT_START("EEPROM")
1767   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1768   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM status? - always 1 */
1748   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
1749   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
17691750   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* ?? TMNT2: OBJMPX */
17701751   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")  /* ?? TMNT2: NVBLK */
17711752   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* ?? TMNT2: IPL0 */
r24548r24549
17731754   PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
17741755
17751756   PORT_START( "EEPROMOUT" )
1776   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1777   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1778   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1757   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
1758   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
1759   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
17791760INPUT_PORTS_END
17801761
17811762static INPUT_PORTS_START( ssridr4p )
r24548r24549
18021783   KONAMI16_LSB( 4, IPT_UNKNOWN, IPT_UNKNOWN )
18031784
18041785   PORT_START("EEPROM")
1805   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1806   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM status? - always 1 */
1786   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
1787   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
18071788   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* ?? TMNT2: OBJMPX */
18081789   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")  /* ?? TMNT2: NVBLK */
18091790   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* ?? TMNT2: IPL0 */
r24548r24549
18111792   PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
18121793
18131794   PORT_START( "EEPROMOUT" )
1814   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1815   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1816   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1795   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
1796   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
1797   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
18171798INPUT_PORTS_END
18181799
18191800/* Same as 'ssridr4p', but additional Start button for each player.
r24548r24549
18421823   KONAMI16_LSB( 4, IPT_UNKNOWN, IPT_START4 )
18431824
18441825   PORT_START("EEPROM")
1845   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1846   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM status? - always 1 */
1826   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
1827   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
18471828   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* ?? TMNT2: OBJMPX */
18481829   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")  /* ?? TMNT2: NVBLK */
18491830   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* ?? TMNT2: IPL0 */
r24548r24549
18511832   PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
18521833
18531834   PORT_START( "EEPROMOUT" )
1854   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1855   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1856   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1835   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
1836   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
1837   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
18571838INPUT_PORTS_END
18581839
18591840/* Version for the bootleg, which has the service switch a little different */
r24548r24549
18811862   KONAMI16_LSB( 4, IPT_UNKNOWN, IPT_START4 )
18821863
18831864   PORT_START("EEPROM")
1884   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1885   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM status? - always 1 */
1865   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
1866   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
18861867   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
18871868   PORT_SERVICE_NO_TOGGLE( 0x08, IP_ACTIVE_LOW )
18881869   PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
18891870
18901871   PORT_START( "EEPROMOUT" )
1891   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1892   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1893   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1872   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
1873   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
1874   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
18941875INPUT_PORTS_END
18951876
18961877static INPUT_PORTS_START( qgakumon )
r24548r24549
19311912   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
19321913
19331914   PORT_START("EEPROM")
1934   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1935   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* EEPROM status? - always 1 */
1915   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
1916   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
19361917   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* ?? TMNT2: OBJMPX */
19371918   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")  /* ?? TMNT2: NVBLK (needs to be ACTIVE_HIGH to avoid problems) */
19381919   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* ?? TMNT2: IPL0 */
r24548r24549
19401921   PORT_SERVICE_NO_TOGGLE( 0x80, IP_ACTIVE_LOW )
19411922
19421923   PORT_START( "EEPROMOUT" )
1943   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1944   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1945   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1924   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
1925   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
1926   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
19461927INPUT_PORTS_END
19471928
19481929static INPUT_PORTS_START( thndrx2 )
r24548r24549
19591940
19601941   PORT_START("P2/EEPROM")
19611942   KONAMI16_LSB( 2, IPT_UNKNOWN, IPT_START2 )
1962   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1963   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SPECIAL )  /* EEPROM status? - always 1 */
1943   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
1944   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
19641945   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
19651946   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* VBLK?? */
19661947   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
19691950   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
19701951
19711952   PORT_START( "EEPROMOUT" )
1972   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1973   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1974   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1953   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
1954   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
1955   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
19751956INPUT_PORTS_END
19761957
19771958static INPUT_PORTS_START( prmrsocr )
r24548r24549
19901971
19911972   PORT_START("P2/EEPROM")
19921973   KONAMI16_LSB( 2, IPT_UNKNOWN, IPT_START2 )
1993   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1994   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SPECIAL )  /* EEPROM status? - always 1 */
1974   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
1975   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
19951976   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN2 )
19961977   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
19971978   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
20001981   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
20011982
20021983   PORT_START( "EEPROMOUT" )
2003   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
2004   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
2005   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1984   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
1985   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
1986   PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
20061987INPUT_PORTS_END
20071988
20081989
r24548r24549
24362417   MCFG_MACHINE_START_OVERRIDE(tmnt_state,common)
24372418   MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
24382419
2439   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
2420   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
24402421
24412422   /* video hardware */
24422423   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
r24548r24549
25652546   MCFG_MACHINE_START_OVERRIDE(tmnt_state,prmrsocr)
25662547   MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
25672548
2568   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, thndrx2_eeprom_intf)
2549   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
25692550
25702551   /* video hardware */
25712552   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
r24548r24549
26142595   MCFG_MACHINE_START_OVERRIDE(tmnt_state,common)
26152596   MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
26162597
2617   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
2598   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
26182599
26192600   /* video hardware */
26202601   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
r24548r24549
26612642   MCFG_MACHINE_START_OVERRIDE(tmnt_state,common)
26622643   MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
26632644
2664   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
2645   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
26652646
26662647   /* video hardware */
26672648   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
r24548r24549
27042685   MCFG_MACHINE_START_OVERRIDE(tmnt_state,common)
27052686   MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
27062687
2707   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
2688   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
27082689
27092690   /* video hardware */
27102691   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_AFTER_VBLANK)
r24548r24549
27442725   MCFG_MACHINE_START_OVERRIDE(tmnt_state,common)
27452726   MCFG_MACHINE_RESET_OVERRIDE(tmnt_state,common)
27462727
2747   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, thndrx2_eeprom_intf)
2728   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
27482729
27492730   /* video hardware */
27502731   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS)
trunk/src/mame/drivers/metro.c
r24548r24549
12111211
12121212READ16_MEMBER(metro_state::gakusai_eeprom_r)
12131213{
1214   return m_eeprom->read_bit() & 1;
1214   return m_eeprom->do_read() & 1;
12151215}
12161216
12171217WRITE16_MEMBER(metro_state::gakusai_eeprom_w)
r24548r24549
12191219   if (ACCESSING_BITS_0_7)
12201220   {
12211221      // latch the bit
1222      m_eeprom->write_bit(BIT(data, 0));
1222      m_eeprom->di_write(BIT(data, 0));
12231223
12241224      // reset line asserted: reset.
1225      m_eeprom->set_cs_line(BIT(data, 2) ? CLEAR_LINE : ASSERT_LINE );
1225      m_eeprom->cs_write(BIT(data, 2) ? ASSERT_LINE : CLEAR_LINE );
12261226
12271227      // clock line asserted: write latch or select next bit to read
1228      m_eeprom->set_clock_line(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE );
1228      m_eeprom->clk_write(BIT(data, 1) ? ASSERT_LINE : CLEAR_LINE );
12291229   }
12301230}
12311231
r24548r24549
13091309READ16_MEMBER(metro_state::dokyusp_eeprom_r)
13101310{
13111311   // clock line asserted: write latch or select next bit to read
1312   m_eeprom->set_clock_line(CLEAR_LINE);
1313   m_eeprom->set_clock_line(ASSERT_LINE);
1312   m_eeprom->clk_write(CLEAR_LINE);
1313   m_eeprom->clk_write(ASSERT_LINE);
13141314
1315   return m_eeprom->read_bit() & 1;
1315   return m_eeprom->do_read() & 1;
13161316}
13171317
13181318WRITE16_MEMBER(metro_state::dokyusp_eeprom_bit_w)
r24548r24549
13201320   if (ACCESSING_BITS_0_7)
13211321   {
13221322      // latch the bit
1323      m_eeprom->write_bit(BIT(data, 0));
1323      m_eeprom->di_write(BIT(data, 0));
13241324
13251325      // clock line asserted: write latch or select next bit to read
1326      m_eeprom->set_clock_line(CLEAR_LINE);
1327      m_eeprom->set_clock_line(ASSERT_LINE);
1326      m_eeprom->clk_write(CLEAR_LINE);
1327      m_eeprom->clk_write(ASSERT_LINE);
13281328   }
13291329}
13301330
r24548r24549
13331333   if (ACCESSING_BITS_0_7)
13341334   {
13351335      // reset line asserted: reset.
1336      m_eeprom->set_cs_line(BIT(data, 0) ? CLEAR_LINE : ASSERT_LINE);
1336      m_eeprom->cs_write(BIT(data, 0) ? ASSERT_LINE : CLEAR_LINE);
13371337   }
13381338}
13391339
r24548r24549
40214021
40224022   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
40234023   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4024   MCFG_EEPROM_93C46_ADD("eeprom")
4024   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
40254025
40264026   /* video hardware */
40274027   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
40574057
40584058   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
40594059   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4060   MCFG_EEPROM_93C46_ADD("eeprom")
4060   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
40614061
40624062   /* video hardware */
40634063   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
40934093
40944094   MCFG_MACHINE_START_OVERRIDE(metro_state,metro)
40954095   MCFG_MACHINE_RESET_OVERRIDE(metro_state,metro)
4096   MCFG_EEPROM_93C46_ADD("eeprom")
4096   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
40974097
40984098   /* video hardware */
40994099   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/8080bw.c
r24548r24549
175175#include "emu.h"
176176#include "cpu/m6800/m6800.h"
177177#include "cpu/i8085/i8085.h"
178#include "machine/eepromser.h"
179178#include "sound/ay8910.h"
180179#include "sound/speaker.h"
181180#include "includes/8080bw.h"
r24548r24549
31483147
31493148READ8_MEMBER(_8080bw_state::invmulti_eeprom_r)
31503149{
3151   return m_eeprom->read_bit();
3150   return m_eeprom->do_read();
31523151}
31533152
31543153WRITE8_MEMBER(_8080bw_state::invmulti_eeprom_w)
31553154{
31563155   // d0: latch bit
3157   m_eeprom->write_bit(data & 1);
3156   m_eeprom->di_write(data & 1);
31583157
31593158   // d6: reset
3160   m_eeprom->set_cs_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
3159   m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
31613160
31623161   // d4: write latch or select next bit to read
3163   m_eeprom->set_clock_line((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
3162   m_eeprom->clk_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
31643163}
31653164
31663165WRITE8_MEMBER(_8080bw_state::invmulti_bank_w)
r24548r24549
31843183   MCFG_CPU_MODIFY("maincpu")
31853184   MCFG_CPU_PROGRAM_MAP(invmulti_map)
31863185
3187   MCFG_EEPROM_93C46_8BIT_ADD("eeprom")
3186   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
31883187
31893188   MCFG_MACHINE_RESET_OVERRIDE(_8080bw_state,invmulti)
31903189MACHINE_CONFIG_END
trunk/src/mame/drivers/vendetta.c
r24548r24549
105105
106106***************************************************************************/
107107
108static const serial_eeprom_interface eeprom_intf =
109{
110   "011000",       /*  read command */
111   "011100",       /* write command */
112   0,              /* erase command */
113   "0100000000000",/* lock command */
114   "0100110000000" /* unlock command */
115};
116
117108WRITE8_MEMBER(vendetta_state::vendetta_eeprom_w)
118109{
119110   /* bit 0 - VOC0 - Video banking related */
r24548r24549
318309   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
319310
320311   PORT_START("EEPROM")
321   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
322   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* EEPROM ready */
312   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
313   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
323314   PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
324315   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* not really vblank, object related. Its timed, otherwise sprites flicker */
325316   PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
326317
327318   PORT_START( "EEPROMOUT" )
328   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
329   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
330   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
319   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
320   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
321   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
331322INPUT_PORTS_END
332323
333324static INPUT_PORTS_START( vendetta )
r24548r24549
374365   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
375366
376367   PORT_START("EEPROM")
377   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
378   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* EEPROM ready */
368   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
369   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
379370   PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
380371   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* not really vblank, object related. Its timed, otherwise sprites flicker */
381372   PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
382373
383374   PORT_START( "EEPROMOUT" )
384   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
385   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
386   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
375   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
376   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
377   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
387378INPUT_PORTS_END
388379
389380static INPUT_PORTS_START( esckidsj )
r24548r24549
496487   MCFG_CPU_PROGRAM_MAP(sound_map)
497488                     /* interrupts are triggered by the main CPU */
498489
490   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
499491
500   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
501
502492   /* video hardware */
503493   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
504494
trunk/src/mame/drivers/naomi.c
r24548r24549
14611461   int res;
14621462
14631463   /* bit 3 is EEPROM data */
1464   res = m_eeprom->read_bit() << 4;
1464   res = m_eeprom->do_read() << 4;
14651465   return res;
14661466}
14671467
r24548r24549
14701470   /* bit 4 is data */
14711471   /* bit 2 is clock */
14721472   /* bit 5 is cs */
1473   m_eeprom->write_bit(data & 0x8);
1474   m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
1475   m_eeprom->set_clock_line((data & 0x4) ? ASSERT_LINE : CLEAR_LINE);
1473   m_eeprom->di_write((data & 0x8) >> 3);
1474   m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
1475   m_eeprom->clk_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE);
14761476}
14771477
14781478/* Dreamcast MAP
r24548r24549
18281828
18291829static INPUT_PORTS_START( naomi_mie )
18301830   PORT_START("MIE.3")
1831   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", serial_eeprom_device, write_bit)
1832   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", serial_eeprom_device, set_cs_line)
1833   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", serial_eeprom_device, set_clock_line)
1831   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", eeprom_serial_93cxx_device, di_write)
1832   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", eeprom_serial_93cxx_device, cs_write)
1833   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("mie_eeprom", eeprom_serial_93cxx_device, clk_write)
18341834
18351835   PORT_START("MIE.5")
18361836   PORT_DIPNAME( 0x01, 0x00, "Monitor" ) PORT_DIPLOCATION("SW1:1")
r24548r24549
18481848   PORT_SERVICE_NO_TOGGLE( 0x10, IP_ACTIVE_LOW )
18491849   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
18501850   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE1 )
1851   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("mie_eeprom", serial_eeprom_device, read_bit)
1851   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("mie_eeprom", eeprom_serial_93cxx_device, do_read)
18521852INPUT_PORTS_END
18531853
18541854/* 2 players with 1 joystick and 6 buttons each */
r24548r24549
24932493
24942494   MCFG_MACHINE_RESET_OVERRIDE(naomi_state,naomi)
24952495
2496   MCFG_EEPROM_93C46_ADD("main_eeprom")
2497   MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0)
2496   MCFG_EEPROM_SERIAL_93C46_ADD("main_eeprom")
2497   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
24982498
24992499   /* video hardware */
25002500   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
25142514static MACHINE_CONFIG_DERIVED( naomi_base, naomi_aw_base )
25152515   MCFG_MIE_ADD("mie", 4000000, "maple_dc", 0, 0, 0, 0, ":MIE.3", 0, ":MIE.5", 0, 0) // Actual frequency unknown
25162516   MCFG_SEGA_837_13551_DEVICE_ADD("837_13551", "mie", ":TILT", ":P1", ":P2", ":A0", ":A1", ":A2", ":A3", ":A4", ":A5", ":A6", ":A7", ":OUTPUT")
2517   MCFG_EEPROM_93C46_8BIT_ADD("mie_eeprom")
2517   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("mie_eeprom")
25182518
25192519   MCFG_X76F100_ADD("naomibd_eeprom")
25202520MACHINE_CONFIG_END
trunk/src/mame/drivers/segas32.c
r24548r24549
666666
667667         if (which == 0)
668668         {
669            m_eeprom->write_bit(data & 0x80);
670            m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
671            m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
669            m_eeprom->di_write((data & 0x80) >> 7);
670            m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
671            m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
672672         }
673673/*            coin_lockout_w(machine(), 1 + 2*which, data & 0x08);
674674            coin_lockout_w(machine(), 0 + 2*which, data & 0x04);*/
r24548r24549
683683         else
684684         {
685685            /* multi-32 EEPROM access */
686            m_eeprom->write_bit(data & 0x80);
687            m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
688            m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
686            m_eeprom->di_write((data & 0x80) >> 7);
687            m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
688            m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
689689         }
690690         break;
691691
r24548r24549
13211321   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE3 )   /* sometimes mirrors SERVICE1 */
13221322   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE4 )   /* tends to also work as a test switch */
13231323   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1324   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1324   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
13251325
13261326   PORT_START("PORTG_A")
13271327   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
13561356
13571357   PORT_START("SERVICE34_B")
13581358   PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
1359   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1359   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
13601360
13611361   PORT_START("PORTG_B")
13621362   PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
21782178
21792179   MCFG_MACHINE_RESET_OVERRIDE(segas32_state,system32)
21802180
2181   MCFG_EEPROM_93C46_ADD("eeprom")
2181   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
21822182
21832183   MCFG_TIMER_DRIVER_ADD("v60_irq0", segas32_state, signal_v60_irq_callback)
21842184   MCFG_TIMER_DRIVER_ADD("v60_irq1", segas32_state, signal_v60_irq_callback)
r24548r24549
22372237
22382238   MCFG_MACHINE_RESET_OVERRIDE(segas32_state,system32)
22392239
2240   MCFG_EEPROM_93C46_ADD("eeprom")
2240   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
22412241
22422242   MCFG_TIMER_DRIVER_ADD("v60_irq0", segas32_state, signal_v60_irq_callback)
22432243   MCFG_TIMER_DRIVER_ADD("v60_irq1", segas32_state, signal_v60_irq_callback)
trunk/src/mame/drivers/taito_f3.c
r24548r24549
284284
285285   /* These are not read directly, but through PORT_CUSTOMs above */
286286   PORT_START("EEPROMIN")
287   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
287   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
288288   PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
289289   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
290290   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) /* Another service mode */
r24548r24549
300300   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)
301301
302302   PORT_START( "EEPROMOUT" )
303   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
304   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
305   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
303   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
304   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
305   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
306306INPUT_PORTS_END
307307
308308static INPUT_PORTS_START( kn )
r24548r24549
442442
443443   MCFG_MACHINE_START_OVERRIDE(taito_f3_state,f3)
444444
445   MCFG_EEPROM_93C46_ADD("eeprom")
445   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
446446
447447   /* video hardware */
448448   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
487487static MACHINE_CONFIG_DERIVED( f3_eeprom, f3 )
488488
489489   MCFG_DEVICE_REMOVE("eeprom")
490   MCFG_EEPROM_93C46_ADD("eeprom")
491   MCFG_SERIAL_EEPROM_DATA(recalh_eeprom, 128) //TODO: convert this into ROM
490   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
491   MCFG_EEPROM_SERIAL_DATA(recalh_eeprom, 128) //TODO: convert this into ROM
492492MACHINE_CONFIG_END
493493
494494static MACHINE_CONFIG_DERIVED( f3_224b_eeprom, f3 )
495495
496496   MCFG_DEVICE_REMOVE("eeprom")
497   MCFG_EEPROM_93C46_ADD("eeprom")
498   MCFG_SERIAL_EEPROM_DATA(recalh_eeprom, 128) //TODO: convert this into ROM
497   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
498   MCFG_EEPROM_SERIAL_DATA(recalh_eeprom, 128) //TODO: convert this into ROM
499499MACHINE_CONFIG_END
500500
501501static const gfx_layout bubsympb_sprite_layout =
r24548r24549
536536
537537   MCFG_MACHINE_START_OVERRIDE(taito_f3_state,f3)
538538
539   MCFG_EEPROM_93C46_ADD("eeprom")
539   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
540540
541541   /* video hardware */
542542   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/lethal.c
r24548r24549
176176#define GUNX( a ) (( ( ioport(gunnames[2 * (a - 1)])->read() * 287 ) / 0xff ) + 16)
177177#define GUNY( a ) (( ( ioport(gunnames[2 * (a - 1) + 1])->read() * 223 ) / 0xff ) + 10)
178178
179static const serial_eeprom_interface eeprom_intf =
180{
181   "011000",       /* read command */
182   "011100",       /* write command */
183   "0100100000000",    /* erase command */
184   "0100000000000",    /* lock command */
185   "0100110000000"     /* unlock command */
186};
187
188179WRITE8_MEMBER(lethal_state::control2_w)
189180{
190181   /* bit 0 is data */
r24548r24549
489480   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
490481
491482   PORT_START("DSW")
492   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
493   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* it must be 1 ? */
483   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
484   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
494485   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
495486   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
496487   PORT_DIPNAME( 0x10, 0x10, DEF_STR(Language) )
r24548r24549
507498   PORT_DIPSETTING(      0x0080, DEF_STR( Stereo ) )
508499
509500   PORT_START( "EEPROMOUT" )
510   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
511   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
512   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
501   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
502   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
503   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
513504
514505   PORT_START("LIGHT0_X")
515506   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_PLAYER(1)
r24548r24549
636627   MCFG_CPU_ADD("soundcpu", Z80, MAIN_CLOCK/4)  /* verified on pcb */
637628   MCFG_CPU_PROGRAM_MAP(le_sound)
638629
630   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
639631
640   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
641
642632   MCFG_GFXDECODE(lethal)
643633
644634   /* video hardware */
trunk/src/mame/drivers/invqix.c
r24548r24549
147147protected:
148148   // devices
149149   required_device<cpu_device> m_maincpu;
150   required_device<serial_eeprom_device> m_eeprom;
150   required_device<eeprom_serial_93cxx_device> m_eeprom;
151151   required_shared_ptr<UINT16> m_vram;
152152
153153   // driver_device overrides
r24548r24549
226226
227227READ8_MEMBER(invqix_state::port3_r)
228228{
229   return (m_eeprom->read_bit() << 5) | 0x03;
229   return (m_eeprom->do_read() << 5) | 0x03;
230230}
231231
232232WRITE8_MEMBER(invqix_state::port3_w)
233233{
234   m_eeprom->set_cs_line(((data >> 2) & 1) ^ 1);
235   m_eeprom->write_bit((data >> 4) & 1);
236   m_eeprom->set_clock_line((data >> 3) & 1);
234   m_eeprom->cs_write((data >> 2) & 1);
235   m_eeprom->di_write((data >> 4) & 1);
236   m_eeprom->clk_write((data >> 3) & 1);
237237}
238238
239239READ8_MEMBER(invqix_state::port5_r)
r24548r24549
344344   MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
345345   MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
346346
347   MCFG_EEPROM_93C46_ADD("eeprom")
348   MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0)
347   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
348   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
349349MACHINE_CONFIG_END
350350
351351ROM_START( invqix )
trunk/src/mame/drivers/asterix.c
r24548r24549
1818#include "includes/konamipt.h"
1919#include "includes/asterix.h"
2020
21static const serial_eeprom_interface eeprom_intf =
22{
23   "111000",       /*  read command */
24   "111100",       /* write command */
25   "1100100000000",/* erase command */
26   "1100000000000",/* lock command */
27   "1100110000000" /* unlock command */
28};
29
3021#if 0
3122READ16_MEMBER(asterix_state::control2_r)
3223{
r24548r24549
211202
212203   PORT_START("IN1")
213204   KONAMI16_LSB(2, IPT_UNKNOWN, IPT_START2)
214   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
215   PORT_BIT( 0x0200, IP_ACTIVE_LOW,  IPT_UNUSED )  // EEPROM ready (always 1)
205   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
206   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
216207   PORT_SERVICE_NO_TOGGLE(0x0400, IP_ACTIVE_LOW )
217208   PORT_BIT( 0xf800, IP_ACTIVE_HIGH, IPT_UNKNOWN )
218209
219210   PORT_START( "EEPROMOUT" )
220   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
221   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
222   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
211   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
212   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
213   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
223214INPUT_PORTS_END
224215
225216
r24548r24549
286277   MCFG_CPU_ADD("audiocpu", Z80, 8000000)
287278   MCFG_CPU_PROGRAM_MAP(sound_map)
288279
280   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
289281
290   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
291
292282   /* video hardware */
293283   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
294284
trunk/src/mame/drivers/mitchell.c
r24548r24549
6868
6969#include "emu.h"
7070#include "cpu/z80/z80.h"
71#include "machine/eepromser.h"
7271#include "machine/kabuki.h"  // needed for decoding functions only
7372#include "includes/mitchell.h"
7473#include "sound/okim6295.h"
r24548r24549
8382 *
8483 *************************************/
8584
86static const serial_eeprom_interface eeprom_intf =
87{
88   "0110", /*  read command */
89   "0101", /* write command */
90   "0111"  /* erase command */
91};
92
9385READ8_MEMBER(mitchell_state::pang_port5_r)
9486{
9587   /* bits 0 and (sometimes) 3 are checked in the interrupt handler.
r24548r24549
10496
10597WRITE8_MEMBER(mitchell_state::eeprom_cs_w)
10698{
107   m_eeprom->set_cs_line(data ? CLEAR_LINE : ASSERT_LINE);
99   m_eeprom->cs_write(data ? CLEAR_LINE : ASSERT_LINE);
108100}
109101
110102WRITE8_MEMBER(mitchell_state::eeprom_clock_w)
111103{
112   m_eeprom->set_clock_line(data ? CLEAR_LINE : ASSERT_LINE);
104   m_eeprom->clk_write(data ? CLEAR_LINE : ASSERT_LINE);
113105}
114106
115107WRITE8_MEMBER(mitchell_state::eeprom_serial_w)
116108{
117   m_eeprom->write_bit(data);
109   m_eeprom->di_write(data);
118110}
119111
120112
r24548r24549
395387   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
396388   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
397389   PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
398   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
390   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
399391
400392   PORT_START("IN0")
401393   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
645637   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
646638   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
647639   PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
648   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
640   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
649641
650642   PORT_START("IN0")
651643   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
812804   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
813805   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
814806   PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
815   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
807   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
816808
817809   PORT_START("IN0")
818810   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE )    /* same as the service mode farther down */
r24548r24549
852844   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
853845   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
854846   PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
855   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
847   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
856848
857849   PORT_START("IN0")
858850   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
894886   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
895887   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
896888   PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* unused? */
897   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
889   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
898890
899891   PORT_START("IN0")
900892   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
10881080   MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell)
10891081   MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell)
10901082
1091   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1083   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
10921084
10931085   /* video hardware */
10941086   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
11251117   MCFG_MACHINE_START_OVERRIDE(mitchell_state,mitchell)
11261118   MCFG_MACHINE_RESET_OVERRIDE(mitchell_state,mitchell)
11271119
1128   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1120   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
11291121
11301122   /* video hardware */
11311123   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
12601252   MCFG_CPU_IO_MAP(mitchell_io_map)
12611253   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1)
12621254
1263   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1255   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
12641256
12651257   /* video hardware */
12661258   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
13111303   MCFG_CPU_IO_MAP(mitchell_io_map)
13121304   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", mitchell_state, mitchell_irq, "screen", 0, 1)
13131305
1314   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1306   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
13151307
13161308   /* video hardware */
13171309   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/deco_mlc.c
r24548r24549
184184   if (ACCESSING_BITS_8_15) {
185185      UINT8 ebyte=(data>>8)&0xff;
186186//      if (ebyte&0x80) {
187         m_eeprom->set_clock_line((ebyte & 0x2) ? ASSERT_LINE : CLEAR_LINE);
188         m_eeprom->write_bit(ebyte & 0x1);
189         m_eeprom->set_cs_line((ebyte & 0x4) ? CLEAR_LINE : ASSERT_LINE);
187         m_eeprom->clk_write((ebyte & 0x2) ? ASSERT_LINE : CLEAR_LINE);
188         m_eeprom->di_write(ebyte & 0x1);
189         m_eeprom->cs_write((ebyte & 0x4) ? ASSERT_LINE : CLEAR_LINE);
190190//      }
191191   }
192192   else if (ACCESSING_BITS_0_7) {
r24548r24549
344344   PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_UNKNOWN )
345345   PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_UNKNOWN )
346346   PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNKNOWN )
347   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
347   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
348348   PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
349349   PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
350350   PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
420420   MCFG_CPU_PROGRAM_MAP(decomlc_map)
421421
422422   MCFG_MACHINE_RESET_OVERRIDE(deco_mlc_state,mlc)
423   MCFG_EEPROM_93C46_ADD("eeprom") /* Actually 93c45 */
423   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* Actually 93c45 */
424424
425425   MCFG_TIMER_DRIVER_ADD("int_timer", deco_mlc_state, interrupt_gen)
426426
r24548r24549
453453   MCFG_CPU_PROGRAM_MAP(decomlc_map)
454454
455455   MCFG_MACHINE_RESET_OVERRIDE(deco_mlc_state,mlc)
456   MCFG_EEPROM_93C46_ADD("eeprom") /* Actually 93c45 */
456   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* Actually 93c45 */
457457
458458   MCFG_TIMER_DRIVER_ADD("int_timer", deco_mlc_state, interrupt_gen)
459459
trunk/src/mame/drivers/dcheese.c
r24548r24549
244244   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE )      /* says tilt */
245245   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT )         /* says test */
246246   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 )
247   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
247   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
248248   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
249249   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON3 )      /* bump left */
250250   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 )      /* bump right */
r24548r24549
282282   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
283283
284284   PORT_START( "EEPROMOUT" )
285   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
286   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
287   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
285   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
286   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
287   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
288288INPUT_PORTS_END
289289
290290
r24548r24549
296296   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE )
297297   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT )
298298   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 )
299   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
299   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
300300   PORT_BIT( 0x1f00, IP_ACTIVE_LOW, IPT_UNUSED )
301301   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 )      /* button */
302302   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 )      /* ticket */
r24548r24549
330330   PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
331331
332332   PORT_START( "EEPROMOUT" )
333   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
334   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
335   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
333   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
334   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
335   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
336336INPUT_PORTS_END
337337
338338
r24548r24549
344344   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE )
345345   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_TILT )
346346   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE1 )
347   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
347   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
348348   PORT_BIT( 0x1f00, IP_ACTIVE_LOW, IPT_UNUSED )
349349   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_5_PAD)
350350   PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNUSED )
r24548r24549
380380   PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
381381
382382   PORT_START( "EEPROMOUT" )
383   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
384   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
385   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
383   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
384   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
385   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
386386INPUT_PORTS_END
387387
388388
r24548r24549
405405   MCFG_CPU_PERIODIC_INT_DRIVER(dcheese_state, irq1_line_hold,  480)   /* accurate for fredmem */
406406
407407
408   MCFG_EEPROM_93C46_ADD("eeprom")
408   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
409409   MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW)
410410
411411   /* video hardware */
trunk/src/mame/drivers/policetr.c
r24548r24549
144144   /* handle EEPROM I/O */
145145   if (ACCESSING_BITS_16_23)
146146   {
147      m_eeprom->write_bit(data & 0x00800000);
148      m_eeprom->set_cs_line((data & 0x00200000) ? CLEAR_LINE : ASSERT_LINE);
149      m_eeprom->set_clock_line((data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE);
147      m_eeprom->di_write((data & 0x00800000) >> 23);
148      m_eeprom->cs_write((data & 0x00200000) ? ASSERT_LINE : CLEAR_LINE);
149      m_eeprom->clk_write((data & 0x00400000) ? ASSERT_LINE : CLEAR_LINE);
150150   }
151151
152152   /* toggling BSMT off then on causes a reset */
r24548r24549
233233
234234/*************************************
235235 *
236 *  EEPROM interface/saving
237 *
238 *************************************/
239
240static const serial_eeprom_interface eeprom_interface_policetr =
241{
242   "*110",         // read         1 10 aaaaaa
243   "*101",         // write        1 01 aaaaaa dddddddddddddddd
244   "*111",         // erase        1 11 aaaaaa
245   "*10000xxxx",   // lock         1 00 00xxxx
246   "*10011xxxx"    // unlock       1 00 11xxxx
247};
248
249
250
251/*************************************
252 *
253236 *  Main CPU memory handlers
254237 *
255238 *************************************/
r24548r24549
332315   PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
333316   PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
334317   PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
335   PORT_BIT( 0x20000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) /* EEPROM read */
318   PORT_BIT( 0x20000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) /* EEPROM read */
336319   PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
337320   PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNKNOWN )
338321
r24548r24549
414397   MCFG_CPU_PROGRAM_MAP(policetr_map)
415398   MCFG_CPU_VBLANK_INT_DRIVER("screen", policetr_state,  irq4_gen)
416399
417   MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, eeprom_interface_policetr)
400   MCFG_EEPROM_SERIAL_93C66_ADD("eeprom")
418401
419402   /* video hardware */
420403   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
trunk/src/mame/drivers/midas.c
r24548r24549
8484   void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
8585   DECLARE_WRITE_LINE_MEMBER(livequiz_irqhandler);
8686   required_device<cpu_device> m_maincpu;
87   required_device<serial_eeprom_device> m_eeprom;
87   required_device<eeprom_serial_93cxx_device> m_eeprom;
8888};
8989
9090
r24548r24549
217217   if (ACCESSING_BITS_0_7)
218218   {
219219      // latch the bit
220      m_eeprom->write_bit(data & 0x04);
220      m_eeprom->di_write((data & 0x04) >> 2);
221221
222222      // reset line asserted: reset.
223      m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE );
223      m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE );
224224
225225      // clock line asserted: write latch or select next bit to read
226      m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
226      m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE );
227227   }
228228}
229229
r24548r24549
456456   PORT_BIT( 0x0001, IP_ACTIVE_LOW,  IPT_COIN1   )
457457   PORT_BIT( 0x0002, IP_ACTIVE_LOW,  IPT_UNKNOWN )
458458   PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_UNKNOWN )
459   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // EEPROM
459   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read) // EEPROM
460460   PORT_BIT( 0x0010, IP_ACTIVE_LOW,  IPT_UNKNOWN )
461461   PORT_BIT( 0x0020, IP_ACTIVE_LOW,  IPT_UNKNOWN )
462462   PORT_SERVICE_NO_TOGGLE( 0x0040,   IP_ACTIVE_LOW )
r24548r24549
589589   PORT_BIT( 0x0001, IP_ACTIVE_LOW,  IPT_COIN1     )
590590   PORT_BIT( 0x0002, IP_ACTIVE_LOW,  IPT_COIN2     )
591591   PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_SERVICE1  )
592   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL   ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
592   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SPECIAL   ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
593593   PORT_BIT( 0x0010, IP_ACTIVE_LOW,  IPT_UNKNOWN   )
594594   PORT_BIT( 0x0020, IP_ACTIVE_LOW,  IPT_UNKNOWN   )
595595   PORT_SERVICE_NO_TOGGLE( 0x0040,   IP_ACTIVE_LOW )
r24548r24549
701701   MCFG_CPU_PROGRAM_MAP(livequiz_map)
702702   MCFG_CPU_VBLANK_INT_DRIVER("screen", midas_state,  irq1_line_hold)
703703
704   MCFG_EEPROM_93C46_ADD("eeprom")
704   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
705705
706706   /* video hardware */
707707   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
730730   MCFG_CPU_PROGRAM_MAP(hammer_map)
731731   MCFG_CPU_VBLANK_INT_DRIVER("screen", midas_state,  irq1_line_hold)
732732
733   MCFG_EEPROM_93C46_ADD("eeprom")
733   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
734734
735735   MCFG_TICKET_DISPENSER_ADD("prize1", attotime::from_msec(1000*5), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
736736   MCFG_TICKET_DISPENSER_ADD("prize2", attotime::from_msec(1000*5), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
trunk/src/mame/drivers/galpani3.c
r24548r24549
512512   //MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 64*8-1)
513513   MCFG_SCREEN_UPDATE_DRIVER(galpani3_state, screen_update_galpani3)
514514
515   MCFG_EEPROM_93C46_ADD("eeprom")
515   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
516516
517517   MCFG_DEVICE_ADD("toybox", KANEKO_TOYBOX, 0)
518518
trunk/src/mame/drivers/gijoe.c
r24548r24549
4545#define JOE_DMADELAY (attotime::from_nsec(42700 + 341300))
4646
4747
48static const serial_eeprom_interface eeprom_intf =
49{
50   "011000",       /*  read command */
51   "011100",       /* write command */
52   "0100100000000",/* erase command */
53   "0100000000000",/* lock command */
54   "0100110000000" /* unlock command */
55};
56
57
5848READ16_MEMBER(gijoe_state::control2_r)
5949{
6050   return m_cur_control2;
r24548r24549
198188   PORT_BIT( 0x0002, IP_ACTIVE_LOW,  IPT_START2 )
199189   PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_START3 )
200190   PORT_BIT( 0x0008, IP_ACTIVE_LOW,  IPT_START4 )
201   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
202   PORT_BIT( 0x0200, IP_ACTIVE_LOW,  IPT_SPECIAL ) // EEPROM ready (always 1)
191   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
192   PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
203193   PORT_SERVICE_NO_TOGGLE( 0x0800, IP_ACTIVE_LOW )
204194
205195   PORT_START( "EEPROMOUT" )
206   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
207   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
208   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
196   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
197   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
198   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
209199
210200   PORT_START("SYSTEM")
211201   PORT_BIT( 0x0001, IP_ACTIVE_LOW,  IPT_COIN1 )
r24548r24549
283273   MCFG_CPU_ADD("audiocpu", Z80, 8000000)  /* Amuse & confirmed. z80e */
284274   MCFG_CPU_PROGRAM_MAP(sound_map)
285275
276   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
286277
287   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
288
289278   /* video hardware */
290279   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_UPDATE_BEFORE_VBLANK)
291280
trunk/src/mame/drivers/stv.c
r24548r24549
954954   MCFG_MACHINE_START_OVERRIDE(stv_state,stv)
955955   MCFG_MACHINE_RESET_OVERRIDE(stv_state,stv)
956956
957   MCFG_EEPROM_93C46_ADD("eeprom") /* Actually 93c45 */
957   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") /* Actually 93c45 */
958958
959959   MCFG_TIMER_DRIVER_ADD("sector_timer", stv_state, stv_sector_cb)
960960   MCFG_TIMER_DRIVER_ADD("sh1_cmd", stv_state, stv_sh1_sim)
trunk/src/mame/drivers/spool99.c
r24548r24549
122122   virtual void video_start();
123123   UINT32 screen_update_spool99(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
124124   required_device<cpu_device> m_maincpu;
125   required_device<serial_eeprom_device> m_eeprom;
125   required_device<eeprom_serial_93cxx_device> m_eeprom;
126126   required_device<okim6295_device> m_oki;
127127};
128128
r24548r24549
186186         case 0xafe4: return ioport("SERVICE2")->read();//attract mode
187187//          case 0xafe5: return 1;
188188//          case 0xafe6: return 1;
189         case 0xafe7: return m_eeprom->read_bit();
189         case 0xafe7: return m_eeprom->do_read();
190190         case 0xaff8: return m_oki->read(space,0);
191191      }
192192   }
r24548r24549
199199WRITE8_MEMBER(spool99_state::eeprom_resetline_w)
200200{
201201   // reset line asserted: reset.
202   m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE );
202   m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE );
203203}
204204
205205WRITE8_MEMBER(spool99_state::eeprom_clockline_w)
206206{
207207   // clock line asserted: write latch or select next bit to read
208   m_eeprom->set_clock_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE );
208   m_eeprom->clk_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE );
209209}
210210
211211WRITE8_MEMBER(spool99_state::eeprom_dataline_w)
212212{
213213   // latch the bit
214   m_eeprom->write_bit(data & 0x01);
214   m_eeprom->di_write(data & 0x01);
215215}
216216
217217static ADDRESS_MAP_START( spool99_map, AS_PROGRAM, 8, spool99_state )
r24548r24549
251251         case 0xa7a2: return ioport("START")->read();
252252         case 0xa7a3: return ioport("BET")->read();//system 2
253253
254         case 0xa7a7: return m_eeprom->read_bit();
254         case 0xa7a7: return m_eeprom->do_read();
255255
256256      }
257257   }
r24548r24549
361361
362362   MCFG_PALETTE_LENGTH(0x200)
363363
364   MCFG_EEPROM_93C46_ADD("eeprom")
364   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
365365
366366
367367   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
trunk/src/mame/drivers/xorworld.c
r24548r24549
4747WRITE16_MEMBER(xorworld_state::eeprom_chip_select_w)
4848{
4949   /* bit 0 is CS (active low) */
50   m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
50   m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
5151}
5252
5353WRITE16_MEMBER(xorworld_state::eeprom_serial_clock_w)
5454{
5555   /* bit 0 is SK (active high) */
56   m_eeprom->set_clock_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
56   m_eeprom->clk_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
5757}
5858
5959WRITE16_MEMBER(xorworld_state::eeprom_data_w)
6060{
6161   /* bit 0 is EEPROM data (DIN) */
62   m_eeprom->write_bit(data & 0x01);
62   m_eeprom->di_write(data & 0x01);
6363}
6464
6565WRITE16_MEMBER(xorworld_state::xorworld_irq2_ack_w)
r24548r24549
104104   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
105105   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
106106   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
107   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)   /* used for accessing the NVRAM */
107   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 */
108108   PORT_DIPNAME( 0x60, 0x40, DEF_STR( Difficulty ) )
109109   PORT_DIPSETTING(    0x40, DEF_STR( Easy ) )
110110   PORT_DIPSETTING(    0x60, DEF_STR( Normal ) )
r24548r24549
174174
175175   MCFG_QUANTUM_TIME(attotime::from_hz(60))
176176
177   MCFG_EEPROM_93C46_ADD("eeprom")
177   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
178178
179179   // video hardware
180180   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/kaneko16.c
r24548r24549
768768   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
769769
770770   PORT_START( "EEPROMOUT" )
771   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
772   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
771   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
772   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
773773INPUT_PORTS_END
774774
775775
r24548r24549
13431343   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
13441344
13451345   PORT_START( "EEPROMOUT" )
1346   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1347   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1346   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
1347   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
13481348INPUT_PORTS_END
13491349
13501350
r24548r24549
14191419   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
14201420
14211421   PORT_START( "EEPROMOUT" )
1422   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1423   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1422   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
1423   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
14241424INPUT_PORTS_END
14251425
14261426
r24548r24549
14951495******************************************************/
14961496
14971497   PORT_START( "EEPROMOUT" )
1498   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1499   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1498   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
1499   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
15001500INPUT_PORTS_END
15011501
15021502
r24548r24549
15911591   DEVCB_NULL,
15921592};
15931593
1594WRITE8_MEMBER(kaneko16_state::kaneko16_eeprom_reset_w)
1595{
1596   // FIXME: the device line cannot be directly put in the interface due to inverse value!
1597   // we might want to define a "reversed" set_cs_line handler
1598   // reset line asserted: reset.
1599   m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE );
1600}
1601
16021594static const ay8910_interface ay8910_intf_eeprom =
16031595{
16041596   AY8910_LEGACY_OUTPUT,
16051597   AY8910_DEFAULT_LOADS,
1606   DEVCB_DEVICE_LINE_MEMBER("eeprom", serial_eeprom_device, read_bit),    /* inputs  A:  0,EEPROM bit read */
1598   DEVCB_DEVICE_LINE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read),    /* inputs  A:  0,EEPROM bit read */
16071599   DEVCB_NULL,                     /* inputs  B */
16081600   DEVCB_NULL,                     /* outputs A */
1609   DEVCB_DRIVER_MEMBER(kaneko16_state,kaneko16_eeprom_reset_w) /* outputs B:  0,EEPROM reset */
1601   DEVCB_DEVICE_LINE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) /* outputs B:  0,EEPROM reset */
16101602};
16111603
16121604
r24548r24549
16821674   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
16831675
16841676   MCFG_MACHINE_RESET_OVERRIDE(kaneko16_state,gtmr)
1685   MCFG_EEPROM_93C46_ADD("eeprom")
1677   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
16861678
16871679   /* video hardware */
16881680   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)    // mangled sprites otherwise
r24548r24549
18111803
18121804   MCFG_MACHINE_RESET_OVERRIDE(kaneko16_gtmr_state,gtmr)
18131805
1814   MCFG_EEPROM_93C46_ADD("eeprom")
1806   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
18151807
18161808   /* video hardware */
18171809   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
r24548r24549
19291921   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", kaneko16_state, kaneko16_interrupt, "screen", 0, 1)
19301922
19311923   MCFG_MACHINE_RESET_OVERRIDE(kaneko16_state,mgcrystl)
1932   MCFG_EEPROM_93C46_ADD("eeprom")
1924   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
19331925
19341926   /* video hardware */
19351927   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
r24548r24549
20532045
20542046   MCFG_MACHINE_RESET_OVERRIDE(kaneko16_shogwarr_state,mgcrystl)
20552047
2056   MCFG_EEPROM_93C46_ADD("eeprom")
2057   MCFG_SERIAL_EEPROM_DATA(shogwarr_default_eeprom, 128)
2048   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
2049   MCFG_EEPROM_SERIAL_DATA(shogwarr_default_eeprom, 128)
20582050
20592051   /* video hardware */
20602052   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
21232115   kaneko_hit_device::set_type(*device, 2);
21242116
21252117   MCFG_DEVICE_REMOVE("eeprom")
2126   MCFG_EEPROM_93C46_ADD("eeprom")
2127   MCFG_SERIAL_EEPROM_DATA(brapboys_default_eeprom, 128)
2118   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
2119   MCFG_EEPROM_SERIAL_DATA(brapboys_default_eeprom, 128)
21282120MACHINE_CONFIG_END
21292121
21302122/***************************************************************************
trunk/src/mame/drivers/rabbit.c
r24548r24549
152152   void rabbit_drawtilemap( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int whichtilemap );
153153   void rabbit_do_blit();
154154   required_device<cpu_device> m_maincpu;
155   required_device<serial_eeprom_device> m_eeprom;
155   required_device<eeprom_serial_93cxx_device> m_eeprom;
156156
157157protected:
158158   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
r24548r24549
692692   if (mem_mask == 0xff000000)
693693   {
694694      // latch the bit
695      m_eeprom->write_bit(data & 0x01000000);
695      m_eeprom->di_write((data & 0x01000000) >> 24);
696696
697697      // reset line asserted: reset.
698      m_eeprom->set_cs_line((data & 0x04000000) ? CLEAR_LINE : ASSERT_LINE );
698      m_eeprom->cs_write((data & 0x04000000) ? ASSERT_LINE : CLEAR_LINE );
699699
700700      // clock line asserted: write latch or select next bit to read
701      m_eeprom->set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
701      m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
702702   }
703703}
704704
r24548r24549
740740
741741static INPUT_PORTS_START( rabbit )
742742   PORT_START("INPUTS")
743   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit) // as per code at 4d932
743   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
744744   PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unlabeled in input test
745745   PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_START1 )
746746   PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 )
r24548r24549
893893   MCFG_CPU_PROGRAM_MAP(rabbit_map)
894894   MCFG_CPU_VBLANK_INT_DRIVER("screen", rabbit_state,  rabbit_vblank_interrupt)
895895
896   MCFG_EEPROM_93C46_ADD("eeprom")
896   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
897897
898898   MCFG_GFXDECODE(rabbit)
899899
trunk/src/mame/drivers/xmen.c
r24548r24549
3030
3131***************************************************************************/
3232
33static const serial_eeprom_interface eeprom_intf =
34{
35   "011000",       /*  read command */
36   "011100",       /* write command */
37   0,              /* erase command */
38   "0100000000000",/* lock command */
39   "0100110000000" /* unlock command */
40};
41
4233WRITE16_MEMBER(xmen_state::eeprom_w)
4334{
4435   logerror("%06x: write %04x to 108000\n",space.device().safe_pc(),data);
r24548r24549
204195
205196   PORT_START("EEPROM")
206197   PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* unused? */
207   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
208   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* EEPROM status - always 1 */
198   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
199   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
209200   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
210201   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
211202   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START3 )
r24548r24549
215206   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* unused? */
216207
217208   PORT_START( "EEPROMOUT" )
218   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
219   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
220   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
209   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
210   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
211   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
221212INPUT_PORTS_END
222213
223214static INPUT_PORTS_START( xmen2p )
r24548r24549
233224   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE1 )
234225   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE2 )
235226   PORT_BIT( 0x003c, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* unused? */
236   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
237   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* EEPROM status - always 1 */
227   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
228   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
238229   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
239230   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
240231   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
244235   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* unused? */
245236
246237   PORT_START( "EEPROMOUT" )
247   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
248   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
249   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
238   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
239   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
240   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
250241INPUT_PORTS_END
251242
252243CUSTOM_INPUT_MEMBER(xmen_state::xmen_frame_r)
r24548r24549
269260
270261   PORT_START("EEPROM")
271262   PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* unused? */
272   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
273   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )  /* EEPROM status - always 1 */
263   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
264   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
274265   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
275266   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
276267   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START3 )
r24548r24549
281272   PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, xmen_state,xmen_frame_r, NULL)  /* screen indicator? */
282273
283274   PORT_START( "EEPROMOUT" )
284   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
285   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
286   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
275   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
276   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
277   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
287278INPUT_PORTS_END
288279
289280
r24548r24549
358349   MCFG_CPU_ADD("audiocpu", Z80, XTAL_16MHz/2) /* verified on pcb */
359350   MCFG_CPU_PROGRAM_MAP(sound_map)
360351
352   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
361353
362   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
363
364354   /* video hardware */
365355   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
366356
r24548r24549
408398   MCFG_CPU_PROGRAM_MAP(sound_map)
409399
410400
411   MCFG_SERIAL_EEPROM_ADD("eeprom", 128, 8, eeprom_intf)
401   MCFG_EEPROM_SERIAL_ER5911_8BIT_ADD("eeprom")
412402
413403   /* video hardware */
414404   MCFG_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
trunk/src/mame/drivers/tmmjprd.c
r24548r24549
7878   void ttmjprd_draw_tilemap(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32*tileram, UINT32*tileregs, UINT8*rom );
7979   void tmmjprd_do_blit();
8080   required_device<cpu_device> m_maincpu;
81   required_device<serial_eeprom_device> m_eeprom;
81   required_device<eeprom_serial_93cxx_device> m_eeprom;
8282};
8383
8484
r24548r24549
509509   if (mem_mask == 0xff000000)
510510   {
511511      // latch the bit
512      m_eeprom->write_bit(data & 0x01000000);
512      m_eeprom->di_write((data & 0x01000000) >> 24);
513513
514514      // reset line asserted: reset.
515      m_eeprom->set_cs_line((data & 0x04000000) ? CLEAR_LINE : ASSERT_LINE );
515      m_eeprom->cs_write((data & 0x04000000) ? ASSERT_LINE : CLEAR_LINE );
516516
517517      // clock line asserted: write latch or select next bit to read
518      m_eeprom->set_clock_line((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
518      m_eeprom->clk_write((data & 0x02000000) ? ASSERT_LINE : CLEAR_LINE );
519519   }
520520}
521521
r24548r24549
544544   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_NAME("Right Screen Coin B") // might actually be service 1
545545   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
546546   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
547   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)   // CHECK!
547   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)   // CHECK!
548548
549549   PORT_START("PL1_1")
550550   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(1)
r24548r24549
753753   MCFG_CPU_PROGRAM_MAP(tmmjprd_map)
754754   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", tmmjprd_state, tmmjprd_scanline, "lscreen", 0, 1)
755755
756   MCFG_EEPROM_93C46_ADD("eeprom")
756   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
757757
758758   MCFG_GFXDECODE(tmmjprd)
759759
trunk/src/mame/drivers/astrcorp.c
r24548r24549
380380
381381   PORT_START( "EEPROMIN" )
382382   PORT_BIT( 0xfff7, IP_ACTIVE_LOW,  IPT_UNUSED )
383   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
383   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
384384
385385   PORT_START( "EEPROMOUT" )
386   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
387   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
388   PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
386   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
387   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
388   PORT_BIT( 0x0004, IP_ACTIVE_HIGH,  IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
389389INPUT_PORTS_END
390390
391391static INPUT_PORTS_START( showhanc )
r24548r24549
409409
410410   PORT_START( "EEPROMIN" )
411411   PORT_BIT( 0xfff7, IP_ACTIVE_LOW,  IPT_UNUSED )
412   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
412   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
413413
414414   PORT_START( "EEPROMOUT" )
415   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
416   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
417   PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
415   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
416   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
417   PORT_BIT( 0x0004, IP_ACTIVE_HIGH,  IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
418418INPUT_PORTS_END
419419
420420static INPUT_PORTS_START( skilldrp )
r24548r24549
438438
439439   PORT_START( "EEPROMIN" )
440440   PORT_BIT( 0xfff7, IP_ACTIVE_LOW,  IPT_UNUSED )
441   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
441   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
442442
443443   PORT_START( "EEPROMOUT" )
444   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
445   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
446   PORT_BIT( 0x0004, IP_ACTIVE_LOW,  IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
444   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
445   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
446   PORT_BIT( 0x0004, IP_ACTIVE_HIGH,  IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
447447INPUT_PORTS_END
448448
449449/***************************************************************************
r24548r24549
480480   MCFG_CPU_VBLANK_INT_DRIVER("screen", astrocorp_state,  irq4_line_hold)
481481
482482   MCFG_NVRAM_ADD_0FILL("nvram")
483   MCFG_EEPROM_93C46_ADD("eeprom")
484   MCFG_SERIAL_EEPROM_DATA(showhand_default_eeprom, sizeof(showhand_default_eeprom))
483   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
484   MCFG_EEPROM_SERIAL_DATA(showhand_default_eeprom, sizeof(showhand_default_eeprom))
485485
486486   /* video hardware */
487487   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
529529   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", astrocorp_state, skilldrp_scanline, "screen", 0, 1)
530530
531531   MCFG_NVRAM_ADD_0FILL("nvram")
532   MCFG_EEPROM_93C46_ADD("eeprom")
532   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
533533
534534   MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
535535   MCFG_TICKET_DISPENSER_ADD("hopper", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW )
trunk/src/mame/drivers/pasha2.c
r24548r24549
419419   MCFG_CPU_IO_MAP(pasha2_io)
420420   MCFG_CPU_VBLANK_INT_DRIVER("screen", pasha2_state,  irq0_line_hold)
421421
422   MCFG_EEPROM_93C46_ADD("eeprom")
422   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
423423
424424   /* video hardware */
425425   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/gaelco3d.c
r24548r24549
290290      result |= m_serial->status_r(space, 0);
291291   }
292292
293   if (m_eeprom->read_bit())
293   if (m_eeprom->do_read())
294294      result ^= 0x0004;
295295   if (LOG)
296296      logerror("eeprom_data_r(%02X)\n", result);
r24548r24549
319319{
320320   if (ACCESSING_BITS_0_7)
321321   {
322      m_eeprom->write_bit(data & 0x01);
322      m_eeprom->di_write(data & 0x01);
323323   }
324324   else if (mem_mask != 0xffff)
325325      logerror("write mask: %08x data %08x\n", mem_mask, data);
r24548r24549
330330{
331331   if (ACCESSING_BITS_0_7)
332332   {
333      m_eeprom->set_clock_line((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
333      m_eeprom->clk_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
334334   }
335335}
336336
r24548r24549
339339{
340340   if (ACCESSING_BITS_0_7)
341341   {
342      m_eeprom->set_cs_line((data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
342      m_eeprom->cs_write((data & 0x01) ? ASSERT_LINE : CLEAR_LINE);
343343   }
344344}
345345
r24548r24549
992992   MCFG_CPU_DATA_MAP(adsp_data_map)
993993
994994
995   MCFG_EEPROM_93C66B_ADD("eeprom")
995   MCFG_EEPROM_SERIAL_93C66_ADD("eeprom")
996996
997997   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
998998
trunk/src/mame/drivers/39in1.c
r24548r24549
5050   PXA255_LCD_Regs m_lcd_regs;
5151
5252   dmadac_sound_device *m_dmadac[2];
53   required_device<serial_eeprom_device> m_eeprom;
53   required_device<eeprom_serial_93cxx_device> m_eeprom;
5454   UINT32 m_pxa255_lcd_palette[0x100];
5555   UINT8 m_pxa255_lcd_framebuffer[0x100000];
5656
r24548r24549
806806   {
807807      case PXA255_GPLR0:
808808         verboselog( machine(), 3, "pxa255_gpio_r: GPIO Pin-Level Register 0: %08x & %08x\n", gpio_regs->gplr0 | (1 << 1), mem_mask );
809         return gpio_regs->gplr0 | (1 << 1) | (m_eeprom->read_bit() << 5); // Must be on.  Probably a DIP switch.
809         return gpio_regs->gplr0 | (1 << 1) | (m_eeprom->do_read() << 5); // Must be on.  Probably a DIP switch.
810810      case PXA255_GPLR1:
811811         verboselog( machine(), 3, "pxa255_gpio_r: *Not Yet Implemented* GPIO Pin-Level Register 1: %08x & %08x\n", gpio_regs->gplr1, mem_mask );
812812         return 0xff9fffff;
r24548r24549
927927         gpio_regs->gpsr0 |= data & gpio_regs->gpdr0;
928928         if(data & 0x00000004)
929929         {
930            m_eeprom->set_cs_line(CLEAR_LINE);
930            m_eeprom->cs_write(ASSERT_LINE);
931931         }
932932         if(data & 0x00000008)
933933         {
934            m_eeprom->set_clock_line(ASSERT_LINE);
934            m_eeprom->clk_write(ASSERT_LINE);
935935         }
936936         if(data & 0x00000010)
937937         {
938            m_eeprom->write_bit(1);
938            m_eeprom->di_write(1);
939939         }
940940         break;
941941      case PXA255_GPSR1:
r24548r24549
951951         gpio_regs->gpsr0 &= ~(data & gpio_regs->gpdr0);
952952         if(data & 0x00000004)
953953         {
954            m_eeprom->set_cs_line(ASSERT_LINE);
954            m_eeprom->cs_write(ASSERT_LINE);
955955         }
956956         if(data & 0x00000008)
957957         {
958            m_eeprom->set_clock_line(CLEAR_LINE);
958            m_eeprom->clk_write(CLEAR_LINE);
959959         }
960960         if(data & 0x00000010)
961961         {
962            m_eeprom->write_bit(0);
962            m_eeprom->di_write(0);
963963         }
964964         break;
965965      case PXA255_GPCR1:
r24548r24549
15911591
15921592   MCFG_PALETTE_LENGTH(256)
15931593
1594   MCFG_EEPROM_93C66B_ADD("eeprom")
1594   MCFG_EEPROM_SERIAL_93C66_ADD("eeprom")
15951595
15961596   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
15971597
trunk/src/mame/drivers/gticlub.c
r24548r24549
262262   required_device<cpu_device> m_dsp;
263263   optional_device<cpu_device> m_dsp2;
264264   required_device<adc1038_device> m_adc1038;
265   required_device<serial_eeprom_device> m_eeprom;
265   required_device<eeprom_serial_93cxx_device> m_eeprom;
266266   UINT32 *m_sharc_dataram_0;
267267   UINT32 *m_sharc_dataram_1;
268268   DECLARE_WRITE32_MEMBER(paletteram32_w);
r24548r24549
359359
360360/******************************************************************/
361361
362/* 93C56 EEPROM */
363static const serial_eeprom_interface eeprom_intf =
364{
365   "*110",         /*  read command */
366   "*101",         /* write command */
367   "*111",         /* erase command */
368   "*10000xxxxxx", /* lock command */
369   "*10011xxxxxx", /* unlock command */
370   1,              /* enable_multi_read */
371   0               /* reset_delay */
372};
373
374362READ8_MEMBER(gticlub_state::sysreg_r)
375363{
376364   static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3" };
r24548r24549
392380         // a = ADC readout
393381         // e = EEPROM data out
394382
395         UINT32 eeprom_bit = (m_eeprom->read_bit() << 1);
383         UINT32 eeprom_bit = (m_eeprom->do_read() << 1);
396384         UINT32 adc_bit = (m_adc1038->do_read() << 2);
397385         return (eeprom_bit | adc_bit);
398386      }
r24548r24549
414402         break;
415403
416404      case 3:
417         m_eeprom->write_bit((data & 0x01) ? 1 : 0);
418         m_eeprom->set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
419         m_eeprom->set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
405         m_eeprom->di_write((data & 0x01) ? 1 : 0);
406         m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
407         m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
420408         break;
421409
422410      case 4:
r24548r24549
976964
977965   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
978966
979   MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, eeprom_intf)
967   MCFG_EEPROM_SERIAL_93C56_ADD("eeprom")
980968
981969   MCFG_MACHINE_START_OVERRIDE(gticlub_state,gticlub)
982970   MCFG_MACHINE_RESET_OVERRIDE(gticlub_state,gticlub)
r24548r24549
10831071
10841072   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
10851073
1086   MCFG_SERIAL_EEPROM_ADD("eeprom", 256, 16, eeprom_intf)
1074   MCFG_EEPROM_SERIAL_93C56_ADD("eeprom")
10871075
10881076   MCFG_MACHINE_START_OVERRIDE(gticlub_state,gticlub)
10891077   MCFG_MACHINE_RESET_OVERRIDE(gticlub_state,hangplt)
trunk/src/mame/drivers/hornet.c
r24548r24549
354354   optional_device<cpu_device> m_gn680;
355355   required_device<cpu_device> m_dsp;
356356   optional_device<cpu_device> m_dsp2;
357   required_device<serial_eeprom_device> m_eeprom;
357   required_device<eeprom_serial_93cxx_device> m_eeprom;
358358   optional_device<k037122_device> m_k037122_1;
359359   optional_device<k037122_device> m_k037122_2;
360360   required_device<adc12138_device> m_adc12138;
r24548r24549
509509             0x02 = ADDOR (ADC DOR)
510510             0x01 = ADDO (ADC DO)
511511         */
512         r = 0xf0 | (m_eeprom->read_bit() << 3);
512         r = 0xf0 | (m_eeprom->do_read() << 3);
513513         r |= m_adc12138->do_r(space, 0) | (m_adc12138->eoc_r(space, 0) << 2);
514514         break;
515515
r24548r24549
821821   PORT_DIPSETTING( 0x00, "15KHz" )
822822
823823   PORT_START( "EEPROMOUT" )
824   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
825   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
826   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
824   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
825   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
826   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
827827INPUT_PORTS_END
828828
829829static INPUT_PORTS_START( sscope )
r24548r24549
873873   PORT_DIPSETTING( 0x00, "15KHz" )
874874
875875   PORT_START( "EEPROMOUT" )
876   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
877   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
878   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
876   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
877   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
878   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
879879
880880   PORT_START("ANALOG1")       // Gun Yaw
881881   PORT_BIT( 0x7ff, 0x400, IPT_AD_STICK_X ) PORT_MINMAX(0x000, 0x7ff) PORT_SENSITIVITY(35) PORT_KEYDELTA(5)
r24548r24549
10081008   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
10091009
10101010
1011   MCFG_EEPROM_93C46_ADD("eeprom")
1011   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
10121012
10131013   MCFG_3DFX_VOODOO_1_ADD("voodoo0", STD_VOODOO_1_CLOCK, hornet_voodoo_intf)
10141014
r24548r24549
11361136static MACHINE_CONFIG_DERIVED( sscope2, hornet_2board_v2)
11371137
11381138   MCFG_DS2401_ADD("lan_serial_id")
1139   MCFG_EEPROM_93C46_ADD("lan_eeprom")
1139   MCFG_EEPROM_SERIAL_93C46_ADD("lan_eeprom")
11401140MACHINE_CONFIG_END
11411141
11421142
trunk/src/mame/drivers/limenko.c
r24548r24549
594594   PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE1 )
595595   PORT_SERVICE_NO_TOGGLE( 0x00200000, IP_ACTIVE_LOW )
596596   PORT_BIT( 0x00400000, IP_ACTIVE_HIGH, IPT_SPECIAL ) //security bit
597   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
597   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
598598   PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_START3 )
599599   PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_START4 )
600600   PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_COIN3 )
r24548r24549
607607   PORT_BIT( 0x4000ffff, IP_ACTIVE_LOW, IPT_UNUSED )
608608
609609   PORT_START( "EEPROMOUT" )
610   PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
611   PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
612   PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
610   PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
611   PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
612   PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
613613//  PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // 0x80000 -> video disabled?
614614INPUT_PORTS_END
615615
r24548r24549
643643   PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN2 )
644644   PORT_SERVICE_NO_TOGGLE( 0x00200000, IP_ACTIVE_LOW )
645645   PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_SPECIAL ) //security bit
646   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
646   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
647647   PORT_DIPNAME( 0x20000000, 0x00000000, "Sound Enable" )
648648   PORT_DIPSETTING(          0x20000000, DEF_STR( Off ) )
649649   PORT_DIPSETTING(          0x00000000, DEF_STR( On ) )
r24548r24549
652652   PORT_BIT( 0x5f00ffff, IP_ACTIVE_LOW, IPT_UNUSED )
653653
654654   PORT_START( "EEPROMOUT" )
655   PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
656   PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
657   PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
655   PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
656   PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
657   PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
658658//  PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // 0x80000 -> video disabled?
659659INPUT_PORTS_END
660660
r24548r24549
688688   PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, limenko_state,spriteram_bit_r, NULL) //changes spriteram location
689689   PORT_SERVICE_NO_TOGGLE( 0x00200000, IP_ACTIVE_LOW )
690690   PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_SPECIAL ) //security bit
691   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
691   PORT_BIT( 0x00800000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
692692   PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Demo_Sounds ) )
693693   PORT_DIPSETTING(          0x00000000, DEF_STR( Off ) )
694694   PORT_DIPSETTING(          0x20000000, DEF_STR( On ) )
r24548r24549
696696   PORT_BIT( 0x5f10ffff, IP_ACTIVE_LOW, IPT_UNUSED )
697697
698698   PORT_START( "EEPROMOUT" )
699   PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
700   PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
701   PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
699   PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
700   PORT_BIT( 0x00020000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
701   PORT_BIT( 0x00040000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
702702//  PORT_BIT( 0x00080000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // 0x80000 -> video disabled?
703703INPUT_PORTS_END
704704
r24548r24549
754754   MCFG_CPU_IO_MAP(limenko_io_map)
755755   MCFG_CPU_VBLANK_INT_DRIVER("screen", limenko_state,  irq0_line_hold)
756756
757   MCFG_EEPROM_93C46_ADD("eeprom")
757   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
758758
759759   /* video hardware */
760760   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
785785   MCFG_CPU_ADD("audiocpu", AT89C4051, 4000000)    /* 4 MHz */
786786   MCFG_CPU_IO_MAP(spotty_sound_io_map)
787787
788   MCFG_EEPROM_93C46_ADD("eeprom")
788   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
789789
790790   /* video hardware */
791791   MCFG_SCREEN_ADD("screen", RASTER)
trunk/src/mame/drivers/playmark.c
r24548r24549
6161
6262***************************************************************************/
6363
64static const serial_eeprom_interface eeprom_intf =
65{
66   "*110",         /*  read command */
67   "*101",         /* write command */
68   0,              /* erase command */
69   "*10000xxxx",   /* lock command */
70   "*10011xxxx",   /* unlock command */
71   0,              /* enable_multi_read */
72   5               /* reset_delay (otherwise wbeachvl will hang when saving settings) */
73};
74
7564WRITE16_MEMBER(playmark_state::wbeachvl_coin_eeprom_w)
7665{
7766   if (ACCESSING_BITS_0_7)
r24548r24549
8372      coin_counter_w(machine(), 3, data & 0x08);
8473
8574      /* bits 5-7 control EEPROM */
86      m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
87      m_eeprom->write_bit(data & 0x80);
88      m_eeprom->set_clock_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
75      m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
76      m_eeprom->di_write((data & 0x80) >> 7);
77      m_eeprom->clk_write((data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
8978   }
9079}
9180
r24548r24549
9584   {
9685      coin_counter_w(machine(), 0,data & 0x20);
9786
98      m_eeprom->set_cs_line((data & 1) ? CLEAR_LINE : ASSERT_LINE);
99      m_eeprom->write_bit(data & 4);
100      m_eeprom->set_clock_line((data & 2) ? ASSERT_LINE : CLEAR_LINE );
87      m_eeprom->cs_write((data & 1) ? ASSERT_LINE : CLEAR_LINE);
88      m_eeprom->di_write((data & 4) >> 2);
89      m_eeprom->clk_write((data & 2) ? ASSERT_LINE : CLEAR_LINE );
10190   }
10291}
10392
r24548r24549
548537   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE1 )
549538   PORT_SERVICE_NO_TOGGLE(0x20, IP_ACTIVE_LOW)
550539   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* ?? see code at 746a. sound status? */
551   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)   /* EEPROM data */
540   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)   /* EEPROM data */
552541
553542   PORT_START("P1")
554543   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
r24548r24549
714703   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
715704   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
716705   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
717   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)   /* EEPROM data */
706   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)   /* EEPROM data */
718707
719708   PORT_START("DSW1")
720709   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) )
r24548r24549
11261115   /* Program and Data Maps are internal to the MCU */
11271116//  MCFG_CPU_IO_MAP(playmark_sound_io_map)
11281117
1129   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1130   MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0)
1118   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
1119   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
11311120
11321121   MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark)
11331122   MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
r24548r24549
11971186   /* Program and Data Maps are internal to the MCU */
11981187   MCFG_CPU_IO_MAP(playmark_sound_io_map)
11991188
1200   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_intf)
1201   MCFG_SERIAL_EEPROM_DEFAULT_VALUE(0)
1189   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
1190   MCFG_EEPROM_SERIAL_DEFAULT_VALUE(0)
12021191
12031192   MCFG_MACHINE_START_OVERRIDE(playmark_state,playmark)
12041193   MCFG_MACHINE_RESET_OVERRIDE(playmark_state,playmark)
trunk/src/mame/drivers/cbasebal.c
r24548r24549
8585
8686/*************************************
8787 *
88 *  EEPROM
89 *
90 *************************************/
91
92static const serial_eeprom_interface cbasebal_eeprom_intf =
93{
94   "0110", /*  read command */
95   "0101", /* write command */
96   "0111"  /* erase command */
97};
98
99
100/*************************************
101 *
10288 *  Address maps
10389 *
10490 *************************************/
r24548r24549
164150   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
165151   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
166152   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")       /* ? */
167   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
153   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
168154
169155   PORT_START( "IO_01" )
170   PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
156   PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
171157
172158   PORT_START( "IO_02" )
173   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
159   PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
174160
175161   PORT_START( "IO_03" )
176   PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
162   PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
177163INPUT_PORTS_END
178164
179165
r24548r24549
272258   MCFG_CPU_IO_MAP(cbasebal_portmap)
273259   MCFG_CPU_VBLANK_INT_DRIVER("screen", cbasebal_state,  irq0_line_hold)   /* ??? */
274260
261   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
275262
276   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, cbasebal_eeprom_intf)
277
278263   /* video hardware */
279264   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
280265
trunk/src/mame/drivers/konamigq.c
r24548r24549
296296   MCFG_MACHINE_RESET_OVERRIDE(konamigq_state, konamigq )
297297
298298   MCFG_DEVICE_ADD("mb89371", MB89371, 0)
299   MCFG_EEPROM_93C46_ADD("eeprom")
300   MCFG_SERIAL_EEPROM_DATA(konamigq_def_eeprom, 128)
299   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
300   MCFG_EEPROM_SERIAL_DATA(konamigq_def_eeprom, 128)
301301
302302   MCFG_SCSIBUS_ADD("scsi")
303303   MCFG_SCSIDEV_ADD("scsi:disk", SCSIHD, SCSI_ID_0)
r24548r24549
395395   PORT_DIPSETTING(    0x00, "Independent" )
396396   PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_UNKNOWN )
397397   PORT_BIT( 0x00000080, IP_ACTIVE_LOW, IPT_UNKNOWN )
398   PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
398   PORT_BIT( 0x00010000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
399399
400400   PORT_START( "EEPROMOUT" )
401   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
402   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
403   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
401   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
402   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
403   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
404404INPUT_PORTS_END
405405
406406ROM_START( cryptklr )
trunk/src/mame/drivers/deco32.c
r24548r24549
368368   switch (offset) {
369369   case 0: return 0xffff0000 | ioport("IN0")->read();
370370   case 1: return 0xffff0000 | ioport("IN1")->read(); //check top bits??
371   case 2: return 0xfffffffe | m_eeprom->read_bit();
371   case 2: return 0xfffffffe | m_eeprom->do_read();
372372   }
373373
374374   return 0xffffffff;
r24548r24549
377377WRITE32_MEMBER(deco32_state::fghthist_eeprom_w)
378378{
379379   if (ACCESSING_BITS_0_7) {
380      m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
381      m_eeprom->write_bit(data & 0x10);
382      m_eeprom->set_cs_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
380      m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
381      m_eeprom->di_write((data & 0x10) >> 4);
382      m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
383383
384384      deco32_pri_w(space,0,data&0x1,0xffffffff); /* Bit 0 - layer priority toggle */
385385   }
r24548r24549
429429
430430READ32_MEMBER(deco32_state::dragngun_eeprom_r)
431431{
432   return 0xfffffffe | m_eeprom->read_bit();
432   return 0xfffffffe | m_eeprom->do_read();
433433}
434434
435435WRITE32_MEMBER(deco32_state::dragngun_eeprom_w)
436436{
437437   if (ACCESSING_BITS_0_7) {
438      m_eeprom->set_clock_line((data & 0x2) ? ASSERT_LINE : CLEAR_LINE);
439      m_eeprom->write_bit(data & 0x1);
440      m_eeprom->set_cs_line((data & 0x4) ? CLEAR_LINE : ASSERT_LINE);
438      m_eeprom->clk_write((data & 0x2) ? ASSERT_LINE : CLEAR_LINE);
439      m_eeprom->di_write(data & 0x1);
440      m_eeprom->cs_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE);
441441      return;
442442   }
443443   logerror("%s:Write control 1 %08x %08x\n",machine().describe_context(),offset,data);
r24548r24549
581581
582582UINT16 deco32_state::port_b_nslasher(int unused)
583583{
584   return (m_eeprom->read_bit());
584   return (m_eeprom->do_read());
585585}
586586
587587
r24548r24549
613613{
614614   if (ACCESSING_BITS_0_7)
615615   {
616      m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
617      m_eeprom->write_bit(data & 0x10);
618      m_eeprom->set_cs_line((data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
616      m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
617      m_eeprom->di_write((data & 0x10) >> 4);
618      m_eeprom->cs_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
619619
620620      deco32_pri_w(space,0,data&0x3,0xffffffff); /* Bit 0 - layer priority toggle, Bit 1 - BG2/3 Joint mode (8bpp) */
621621   }
r24548r24549
16691669   m_oki2->set_bank_base(((data >> 1)& 1) * 0x40000);
16701670}
16711671
1672static const serial_eeprom_interface eeprom_interface_tattass =
1673{
1674};
1675
16761672/**********************************************************************************/
16771673
16781674MACHINE_RESET_MEMBER(deco32_state,deco32)
r24548r24549
17991795
18001796UINT16 deco32_state::port_b_fghthist(int unused)
18011797{
1802   return machine().device<serial_eeprom_device>(":eeprom")->read_bit();
1798   return machine().device<eeprom_serial_93cxx_device>(":eeprom")->do_read();
18031799}
18041800
18051801UINT16 deco32_state::port_c_fghthist(int unused)
r24548r24549
18171813   MCFG_CPU_ADD("audiocpu", H6280, 32220000/8)
18181814   MCFG_CPU_PROGRAM_MAP(sound_map)
18191815
1820   MCFG_EEPROM_93C46_ADD("eeprom")
1816   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
18211817
18221818
18231819   MCFG_SCREEN_ADD("screen", RASTER)
r24548r24549
18731869   MCFG_CPU_ADD("audiocpu", H6280, 32220000/8)
18741870   MCFG_CPU_PROGRAM_MAP(sound_map)
18751871
1876   MCFG_EEPROM_93C46_ADD("eeprom")
1872   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
18771873
18781874   MCFG_SCREEN_ADD("screen", RASTER)
18791875   MCFG_SCREEN_REFRESH_RATE(60)
r24548r24549
19871983   MCFG_CPU_PROGRAM_MAP(sound_map)
19881984
19891985   MCFG_MACHINE_RESET_OVERRIDE(deco32_state,deco32)
1990   MCFG_EEPROM_93C46_ADD("eeprom")
1986   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
19911987
19921988   MCFG_TIMER_DRIVER_ADD("int_timer", deco32_state, interrupt_gen)
19931989
r24548r24549
20692065   MCFG_QUANTUM_TIME(attotime::from_hz(6000))  /* to improve main<->audio comms */
20702066
20712067   MCFG_MACHINE_RESET_OVERRIDE(deco32_state,deco32)
2072   MCFG_EEPROM_93C46_ADD("eeprom")
2068   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
20732069
20742070   MCFG_TIMER_DRIVER_ADD("int_timer", deco32_state, interrupt_gen)
20752071
r24548r24549
21592155   MCFG_CPU_PROGRAM_MAP(tattass_map)
21602156   MCFG_CPU_VBLANK_INT_DRIVER("screen", deco32_state,  deco32_vbl_interrupt)
21612157
2162   MCFG_SERIAL_EEPROM_ADD("eeprom", 1024, 8, eeprom_interface_tattass)
2158   MCFG_EEPROM_SERIAL_93C76_8BIT_ADD("eeprom")
21632159
21642160   MCFG_SCREEN_ADD("screen", RASTER)
21652161   MCFG_SCREEN_REFRESH_RATE(60)
r24548r24549
22042200
22052201   MCFG_QUANTUM_TIME(attotime::from_hz(6000))  /* to improve main<->audio comms */
22062202
2207   MCFG_EEPROM_93C46_ADD("eeprom")
2203   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
22082204
22092205   MCFG_SCREEN_ADD("screen", RASTER)
22102206   MCFG_SCREEN_REFRESH_RATE(60)
trunk/src/mame/drivers/toaplan2.c
r24548r24549
946946}
947947
948948
949static const serial_eeprom_interface bbakraid_93C66_intf =
950{
951   // Pin 6 of the 93C66 is connected to Gnd!
952   // So it's configured for 512 bytes
953
954   "*110",     // read         110 aaaaaaaaa
955   "*101",     // write        101 aaaaaaaaa dddddddd
956   "*111",     // erase        111 aaaaaaaaa
957   "*10000xxxxxxx",// lock         100x 00xxxx
958   "*10011xxxxxxx",// unlock       100x 11xxxx
959//  "*10001xxxx",   // write all    1 00 01xxxx dddddddd
960//  "*10010xxxx"    // erase all    1 00 10xxxx
961};
962
963
964949READ16_MEMBER(toaplan2_state::bbakraid_eeprom_r)
965950{
966951   // Bit 0x01 returns the status of BUSAK from the Z80.
r24548r24549
969954   // ROM code. Failure to return the correct status incurrs a Sound Error.
970955
971956   int data;
972   data  = ((m_eeprom->read_bit() & 0x01) << 4);
957   data  = ((m_eeprom->do_read() & 0x01) << 4);
973958   data |= ((m_z80_busreq >> 4) & 0x01);   // Loop BUSRQ to BUSAK
974959
975960   return data;
r24548r24549
20852070   PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // Unknown/Unused
20862071
20872072   PORT_START("EEPROM")
2088   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
2089   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
2090   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
2091   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
2073   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
2074   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
2075   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
2076   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
20922077INPUT_PORTS_END
20932078
20942079
r24548r24549
27642749   PORT_DIPSETTING(        0x8000, DEF_STR( On ) )
27652750
27662751   PORT_START( "EEPROMOUT" )
2767   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
2768   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
2769   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
2752   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
2753   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
2754   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
27702755INPUT_PORTS_END
27712756
27722757
r24548r24549
33313316
33323317   MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2)
33333318
3334   MCFG_EEPROM_93C46_ADD("eeprom")
3319   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
33353320
33363321   /* video hardware */
33373322   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
r24548r24549
37253710   MCFG_MACHINE_START_OVERRIDE(toaplan2_state,toaplan2)
37263711   MCFG_MACHINE_RESET_OVERRIDE(toaplan2_state,toaplan2)
37273712
3728   MCFG_SERIAL_EEPROM_ADD("eeprom", 512, 8, bbakraid_93C66_intf)
3713   MCFG_EEPROM_SERIAL_93C66_8BIT_ADD("eeprom")
37293714
37303715   /* video hardware */
37313716   MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
trunk/src/mame/drivers/centiped.c
r24548r24549
831831
832832READ8_MEMBER(centiped_state::multiped_eeprom_r)
833833{
834   return m_eeprom->read_bit() ? 0x80 : 0;
834   return m_eeprom->do_read() ? 0x80 : 0;
835835}
836836
837837WRITE8_MEMBER(centiped_state::multiped_eeprom_w)
r24548r24549
843843
844844   // a1 low: latch bit
845845   if (~offset & 2)
846      m_eeprom->write_bit((data & 0x80) ? 1 : 0);
846      m_eeprom->di_write((data & 0x80) ? 1 : 0);
847847
848848   // a2 low: write latch or select next bit to read
849849   if (~offset & 4)
850      m_eeprom->set_clock_line((~data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
850      m_eeprom->clk_write((~data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
851851
852852   // both high: reset
853853   else if (offset & 2)
854      m_eeprom->set_cs_line((data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
854      m_eeprom->cs_write((data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
855855}
856856
857857WRITE8_MEMBER(centiped_state::multiped_prgbank_w)
r24548r24549
18591859   MCFG_CPU_PROGRAM_MAP(multiped_map)
18601860
18611861   MCFG_DEVICE_REMOVE("earom")
1862   MCFG_EEPROM_93C46_8BIT_ADD("eeprom")
1862   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
18631863MACHINE_CONFIG_END
18641864
18651865
trunk/src/mame/drivers/lordgun.c
r24548r24549
183183         lordgun_update_gun(i);
184184
185185   // latch the bit
186   m_eeprom->write_bit(data & 0x40);
186   m_eeprom->di_write((data & 0x40) >> 6);
187187
188188   // reset line asserted: reset.
189   m_eeprom->set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE );
189   m_eeprom->cs_write((data & 0x10) ? ASSERT_LINE : CLEAR_LINE );
190190
191191   // clock line asserted: write latch or select next bit to read
192   m_eeprom->set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE );
192   m_eeprom->clk_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE );
193193
194194   m_whitescreen = data & 0x80;
195195
r24548r24549
211211   coin_counter_w(machine(), 1, data & 0x10);
212212
213213   // latch the bit
214   m_eeprom->write_bit(data & 0x80);
214   m_eeprom->di_write((data & 0x80) >> 7);
215215
216216   // reset line asserted: reset.
217   m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE );
217   m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE );
218218
219219   // clock line asserted: write latch or select next bit to read
220   m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE );
220   m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE );
221221}
222222
223223
r24548r24549
451451   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
452452   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
453453   PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
454   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
454   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
455455
456456   PORT_START("START1")
457457   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1   )
r24548r24549
572572   PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW3:8" ) /* Listed as "Unused" */
573573
574574   PORT_START("SERVICE")
575   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
575   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
576576   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
577577   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN  )
578578   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN  )
r24548r24549
677677   MCFG_I8255A_ADD( "ppi8255_0", lordgun_ppi8255_0_intf )
678678   MCFG_I8255A_ADD( "ppi8255_1", lordgun_ppi8255_1_intf )
679679
680   MCFG_EEPROM_93C46_ADD("eeprom")
680   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
681681
682682   MCFG_SCREEN_ADD("screen", RASTER)
683683   MCFG_SCREEN_REFRESH_RATE(60)
r24548r24549
713713   MCFG_I8255A_ADD( "ppi8255_0", aliencha_ppi8255_0_intf )
714714   MCFG_I8255A_ADD( "ppi8255_1", aliencha_ppi8255_1_intf )
715715
716   MCFG_EEPROM_93C46_ADD("eeprom")
716   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
717717
718718   MCFG_SCREEN_ADD("screen", RASTER)
719719   MCFG_SCREEN_REFRESH_RATE(60)
trunk/src/mame/drivers/cave.c
r24548r24549
297297      coin_counter_w(machine(), 0, data & 0x1000);
298298
299299      // latch the bit
300      m_eeprom->write_bit(data & 0x0800);
300      m_eeprom->di_write((data & 0x0800) >> 11);
301301
302302      // reset line asserted: reset.
303      m_eeprom->set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE);
303      m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
304304
305305      // clock line asserted: write latch or select next bit to read
306      m_eeprom->set_clock_line((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
306      m_eeprom->clk_write((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
307307   }
308308}
309309
r24548r24549
318318   if (ACCESSING_BITS_8_15)  // even address
319319   {
320320      // latch the bit
321      m_eeprom->write_bit(data & 0x0800);
321      m_eeprom->di_write((data & 0x0800) >> 11);
322322
323323      // reset line asserted: reset.
324      m_eeprom->set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE);
324      m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
325325
326326      // clock line asserted: write latch or select next bit to read
327      m_eeprom->set_clock_line((data & 0x0400) ? CLEAR_LINE: ASSERT_LINE);
327      m_eeprom->clk_write((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
328328   }
329329}
330330
r24548r24549
341341      coin_counter_w(machine(), 0,  data & 0x0001);
342342
343343      // latch the bit
344      m_eeprom->write_bit(data & 0x80);
344      m_eeprom->di_write((data & 0x80) >> 7);
345345
346346      // reset line asserted: reset.
347      m_eeprom->set_cs_line((data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
347      m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
348348
349349      // clock line asserted: write latch or select next bit to read
350      m_eeprom->set_clock_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
350      m_eeprom->clk_write((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
351351   }
352352}
353353
r24548r24549
376376      if (~data & 0x0100)
377377      {
378378         // latch the bit
379         m_eeprom->write_bit(data & 0x0800);
379         m_eeprom->di_write((data & 0x0800) >> 11);
380380
381381         // reset line asserted: reset.
382         m_eeprom->set_cs_line((data & 0x0200) ? CLEAR_LINE : ASSERT_LINE);
382         m_eeprom->cs_write((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
383383
384384         // clock line asserted: write latch or select next bit to read
385         m_eeprom->set_clock_line((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
385         m_eeprom->clk_write((data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
386386      }
387387   }
388388}
389389
390static const serial_eeprom_interface eeprom_interface_93C46_pacslot =
391{
392   "*110",         // read         1 10 aaaaaa
393   "*101",         // write        1 01 aaaaaa dddddddddddddddd
394   "*111",         // erase        1 11 aaaaaa
395   "*10000xxxx",   // lock         1 00 00xxxx
396   "*10011xxxx",   // unlock       1 00 11xxxx
397   1,              // enable_multi_read (needed by pacslot)
398   1               // reset_delay (otherwise pacslot will not recognize the eeprom)
399//  "*10001xxxx"    // write all    1 00 01xxxx dddddddddddddddd
400//  "*10010xxxx"    // erase all    1 00 10xxxx
401};
402
403
404390/***************************************************************************
405391
406392
r24548r24549
673659      m_hopper = data & 0x0100;   // ???
674660
675661      // latch the bit
676      m_eeprom->write_bit(data & 0x4000);
662      m_eeprom->di_write((data & 0x4000) >> 14);
677663
678664      // reset line asserted: reset.
679      m_eeprom->set_cs_line((data & 0x1000) ? CLEAR_LINE : ASSERT_LINE);
665      m_eeprom->cs_write((data & 0x1000) ? ASSERT_LINE : CLEAR_LINE);
680666
681667      // clock line asserted: write latch or select next bit to read
682      m_eeprom->set_clock_line((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE);
668      m_eeprom->clk_write((data & 0x2000) ? ASSERT_LINE : CLEAR_LINE);
683669   }
684670}
685671
r24548r24549
787773
788774READ16_MEMBER(cave_state::pwrinst2_eeprom_r)
789775{
790   return ~8 + ((m_eeprom->read_bit() & 1) ? 8 : 0);
776   return ~8 + ((m_eeprom->do_read() & 1) ? 8 : 0);
791777}
792778
793779INLINE void vctrl_w(address_space &space, offs_t offset, UINT16 data, UINT16 mem_mask, int GFX)
r24548r24549
890876   if (ACCESSING_BITS_0_7)  // odd address
891877   {
892878      // latch the bit
893      m_eeprom->write_bit(data & 0x0020);
879      m_eeprom->di_write((data & 0x0020) >> 5);
894880
895881      // reset line asserted: reset.
896      m_eeprom->set_cs_line((data & 0x0008) ? CLEAR_LINE : ASSERT_LINE);
882      m_eeprom->cs_write((data & 0x0008) ? ASSERT_LINE : CLEAR_LINE);
897883
898884      // clock line asserted: write latch or select next bit to read
899      m_eeprom->set_clock_line((data & 0x0010) ? ASSERT_LINE : CLEAR_LINE);
885      m_eeprom->clk_write((data & 0x0010) ? ASSERT_LINE : CLEAR_LINE);
900886   }
901887}
902888
r24548r24549
12781264   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6)
12791265   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1 )
12801266   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
1281   PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1267   PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
12821268   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
12831269   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
12841270   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
14311417   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
14321418   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
14331419   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1434   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1420   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
14351421   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
14361422   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
14371423   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
14751461   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
14761462   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
14771463   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
1478   PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1464   PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
14791465   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
14801466   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
14811467   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
r24548r24549
14871473   PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW )
14881474   PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN )
14891475   PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1490   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1476   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
14911477   PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_OTHER ) PORT_NAME( DEF_STR( Yes ) ) PORT_CODE(KEYCODE_Y)    // suru ("do")
14921478   PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_GAMBLE_PAYOUT )
14931479   PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_BUTTON1 ) PORT_NAME( "1 Bet" )
r24548r24549
15121498   PORT_SERVICE( 0x01, IP_ACTIVE_LOW )
15131499   PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_COIN2 ) // credits
15141500   PORT_BIT( 0x04, IP_ACTIVE_LOW,  IPT_UNKNOWN )
1515   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1501   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
15161502   PORT_BIT( 0x10, IP_ACTIVE_LOW,  IPT_OTHER ) PORT_NAME( "Pac-Man" ) PORT_CODE(KEYCODE_Y)
15171503   PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_GAMBLE_PAYOUT )
15181504   PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_BUTTON1 ) PORT_NAME( "Bet" )
r24548r24549
18191805
18201806   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
18211807   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
1822   MCFG_EEPROM_93C46_ADD("eeprom")
1808   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
18231809
18241810   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
18251811
r24548r24549
18611847
18621848   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
18631849   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
1864   MCFG_EEPROM_93C46_ADD("eeprom")
1850   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
18651851
18661852   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
18671853
r24548r24549
19071893
19081894   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
19091895   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
1910   MCFG_EEPROM_93C46_ADD("eeprom")
1896   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
19111897
19121898   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
19131899
r24548r24549
19531939
19541940   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
19551941   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
1956   MCFG_EEPROM_93C46_ADD("eeprom")
1942   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
19571943
19581944   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
19591945
r24548r24549
20342020
20352021   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
20362022   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
2037   MCFG_EEPROM_93C46_ADD("eeprom")
2023   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
20382024
20392025   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
20402026
r24548r24549
20782064
20792065   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
20802066   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
2081   MCFG_EEPROM_93C46_ADD("eeprom")
2067   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
20822068
20832069   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
20842070
r24548r24549
21312117
21322118   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
21332119   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
2134   MCFG_EEPROM_93C46_8BIT_ADD("eeprom")
2120   MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom")
21352121
21362122   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
21372123
r24548r24549
21852171
21862172   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
21872173   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
2188   MCFG_EEPROM_93C46_ADD("eeprom")
2174   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
21892175
21902176   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
21912177
r24548r24549
22442230
22452231   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
22462232   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)    /* start with the watchdog armed */
2247   MCFG_EEPROM_93C46_ADD("eeprom")
2233   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
22482234
22492235   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
22502236
r24548r24549
22992285
23002286   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
23012287   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
2302   MCFG_SERIAL_EEPROM_ADD("eeprom", 64, 16, eeprom_interface_93C46_pacslot)
2288   
2289   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
2290   MCFG_EEPROM_SERIAL_ENABLE_STREAMING()
23032291
23042292   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
23052293
r24548r24549
23552343
23562344   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
23572345   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
2358   MCFG_EEPROM_93C46_ADD("eeprom")
2346   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
23592347
23602348   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
23612349
r24548r24549
24192407
24202408   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
24212409   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
2422   MCFG_EEPROM_93C46_ADD("eeprom")
2410   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
24232411
24242412   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
24252413
r24548r24549
24732461
24742462   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
24752463   MCFG_MACHINE_RESET_OVERRIDE(cave_state,cave)
2476   MCFG_EEPROM_93C46_ADD("eeprom")
24772464
2465   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
2466   MCFG_EEPROM_SERIAL_ENABLE_STREAMING()
2467
24782468   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
24792469
24802470   /* video hardware */
r24548r24549
25142504   MCFG_CPU_VBLANK_INT_DRIVER("screen", cave_state,  cave_interrupt)
25152505
25162506   MCFG_MACHINE_START_OVERRIDE(cave_state,cave)
2517   MCFG_EEPROM_93C46_ADD("eeprom")
2507   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
25182508
25192509   MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, cave_vblank_start)
25202510
trunk/src/mame/drivers/taitojc.c
r24548r24549
10741074   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
10751075
10761076   PORT_START("COINS")
1077   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, read_bit)
1077   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, do_read)
10781078   PORT_DIPNAME( 0x02, 0x02, "Dev Skip RAM Test" ) // skips mainram test on page 1 of POST
10791079   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
10801080   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r24548r24549
11181118   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
11191119
11201120   PORT_START("EEPROMOUT")
1121   PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, write_bit)
1122   PORT_BIT( 0x08000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_clock_line)
1123   PORT_BIT( 0x10000000, IP_ACTIVE_LOW,  IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", serial_eeprom_device, set_cs_line)
1121   PORT_BIT( 0x04000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write)
1122   PORT_BIT( 0x08000000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write)
1123   PORT_BIT( 0x10000000, IP_ACTIVE_HIGH,  IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write)
11241124INPUT_PORTS_END
11251125
11261126// Mascon must always be in a defined state, Densha de Go 2 in particular returns black screen if the Mascon input is undefined
r24548r24549
12731273
12741274   MCFG_QUANTUM_TIME(attotime::from_hz(6000))
12751275
1276   MCFG_EEPROM_93C46_ADD("eeprom")
1276   MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
12771277
12781278   MCFG_TC0640FIO_ADD("tc0640fio", taitojc_io_intf)
12791279

Previous 199869 Revisions Next


© 1997-2024 The MAME Team