Previous 199869 Revisions Next

r20294 Thursday 17th January, 2013 at 02:46:03 UTC by R. Belmont
(MESS) ESQ-1: Converted to n68681, hooked up MIDI I/O, mapped more front panel buttons [R. Belmont]
[src/mess/drivers]esq1.c

trunk/src/mess/drivers/esq1.c
r20293r20294
114114#include "emu.h"
115115#include "cpu/m6809/m6809.h"
116116#include "sound/es5503.h"
117#include "machine/68681.h"
117#include "machine/n68681.h"
118118#include "machine/wd_fdc.h"
119119
120#include "machine/esqvfd.h"
120#include "machine/esqpanel.h"
121#include "machine/serial.h"
122#include "machine/midiinport.h"
123#include "machine/midioutport.h"
121124
122125#define WD1772_TAG      "wd1772"
123126
124127// QWERTYU = a few keys
125128// top row 1-0 = the soft keys above and below the display (patch select)
126#define KEYBOARD_HACK   (1)
127129
128130class esq1_state : public driver_device
129131{
r20293r20294
133135      m_maincpu(*this, "maincpu"),
134136      m_duart(*this, "duart"),
135137      m_fdc(*this, WD1772_TAG),
136      m_vfd(*this, "vfd")
138      m_panel(*this, "panel"),
139      m_mdout(*this, "mdout")
137140   { }
138141
139142   required_device<cpu_device> m_maincpu;
140   required_device<duart68681_device> m_duart;
143   required_device<duartn68681_device> m_duart;
141144   optional_device<wd1772_t> m_fdc;
142   optional_device<esq2x40_t> m_vfd;
145   optional_device<esqpanel2x40_device> m_panel;
146   optional_device<serial_port_device> m_mdout;
143147
144148   DECLARE_READ8_MEMBER(wd1772_r);
145149   DECLARE_WRITE8_MEMBER(wd1772_w);
r20293r20294
147151   DECLARE_WRITE8_MEMBER(seqdosram_w);
148152   DECLARE_WRITE8_MEMBER(mapper_w);
149153
154   DECLARE_WRITE_LINE_MEMBER(duart_irq_handler);
155   DECLARE_WRITE_LINE_MEMBER(duart_tx_a);
156   DECLARE_WRITE_LINE_MEMBER(duart_tx_b);
157   DECLARE_READ8_MEMBER(duart_input);
158   DECLARE_WRITE8_MEMBER(duart_output);
159
150160   int m_mapper_state;
151161   int m_seq_bank;
152162   UINT8 m_seqram[0x10000];
153163   UINT8 m_dosram[0x2000];
154164   virtual void machine_reset();
155165   DECLARE_INPUT_CHANGED_MEMBER(key_stroke);
166
167   void send_through_panel(UINT8 data);
156168};
157169
158170
r20293r20294
219231   AM_RANGE(0x0000, 0x1fff) AM_RAM                 // OSRAM
220232   AM_RANGE(0x4000, 0x5fff) AM_RAM                 // SEQRAM
221233   AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("es5503", es5503_device, read, write)
222   AM_RANGE(0x6400, 0x640f) AM_DEVREADWRITE_LEGACY("duart", duart68681_r, duart68681_w)
234   AM_RANGE(0x6400, 0x640f) AM_DEVREADWRITE("duart", duartn68681_device, read, write)
223235   AM_RANGE(0x6800, 0x68ff) AM_NOP
224236
225237   AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("osbank")
r20293r20294
231243   AM_RANGE(0x4000, 0x5fff) AM_RAM                 // SEQRAM
232244//  AM_RANGE(0x4000, 0x5fff) AM_READWRITE(seqdosram_r, seqdosram_w)
233245   AM_RANGE(0x6000, 0x63ff) AM_DEVREADWRITE("es5503", es5503_device, read, write)
234   AM_RANGE(0x6400, 0x640f) AM_DEVREADWRITE_LEGACY("duart", duart68681_r, duart68681_w)
246   AM_RANGE(0x6400, 0x640f) AM_DEVREADWRITE("duart", duartn68681_device, read, write)
235247   AM_RANGE(0x6c00, 0x6dff) AM_WRITE(mapper_w)
236248   AM_RANGE(0x6e00, 0x6fff) AM_READWRITE(wd1772_r, wd1772_w)
237249   AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("osbank")
r20293r20294
253265// OP5 = metronome hi
254266// OP6/7 = tape out
255267
256static void duart_irq_handler(device_t *device, int state, UINT8 vector)
268WRITE_LINE_MEMBER(esq1_state::duart_irq_handler)
257269{
258   device->machine().device("maincpu")->execute().set_input_line(0, state);
270   m_maincpu->set_input_line(0, state);
259271};
260272
261static UINT8 duart_input(device_t *device)
273READ8_MEMBER(esq1_state::duart_input)
262274{
263275   return 0;
264276}
265277
266static void duart_output(device_t *device, UINT8 data)
278WRITE8_MEMBER(esq1_state::duart_output)
267279{
268280   int bank = ((data >> 1) & 0x7);
269   esq1_state *state = device->machine().driver_data<esq1_state>();
270281//  printf("DP [%02x]: %d mlo %d mhi %d tape %d\n", data, data&1, (data>>4)&1, (data>>5)&1, (data>>6)&3);
271282//  printf("[%02x] bank %d => offset %x (PC=%x)\n", data, bank, bank * 0x1000, device->machine().firstcpu->safe_pc());
272   state->membank("osbank")->set_base(state->memregion("osrom")->base() + (bank * 0x1000) );
283   membank("osbank")->set_base(memregion("osrom")->base() + (bank * 0x1000) );
273284
274   state->m_seq_bank = (data & 0x8) ? 0x8000 : 0x0000;
275   state->m_seq_bank += ((data>>1) & 3) * 0x2000;
285   m_seq_bank = (data & 0x8) ? 0x8000 : 0x0000;
286   m_seq_bank += ((data>>1) & 3) * 0x2000;
276287//    printf("seqram_bank = %x\n", state->m_seq_bank);
277288}
278289
279static void duart_tx(device_t *device, int channel, UINT8 data)
290// MIDI send
291WRITE_LINE_MEMBER(esq1_state::duart_tx_a)
280292{
281   esq1_state *state = device->machine().driver_data<esq1_state>();
293   m_mdout->tx(state);
294}
282295
283   if (channel == 1)
284   {
285      #if 0
286      if ((data >= 0x20) && (data < 0x80))
287      {
288         printf("%c", data);
289      }
290      else
291      {
292         printf("[%02x]", data);
293      }
294      #endif
295      state->m_vfd->write_char(data);
296   }
296WRITE_LINE_MEMBER(esq1_state::duart_tx_b)
297{
298   m_panel->rx_w(state);
297299}
298300
299#if KEYBOARD_HACK
301void esq1_state::send_through_panel(UINT8 data)
302{
303   m_panel->xmit_char(data);
304}
305
300306INPUT_CHANGED_MEMBER(esq1_state::key_stroke)
301307{
302308   if (oldval == 0 && newval == 1)
303309   {
304      duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param);
305      if ((UINT8)(FPTR)param >= 0x90)
306      {
307         duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x00);
308      }
309      else
310      {
311         duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x01);
312      }
310      send_through_panel((UINT8)(FPTR)param);
311      send_through_panel((UINT8)(FPTR)0x00);
313312   }
314313   else if (oldval == 1 && newval == 0)
315314   {
316      duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)param&0x7f);
317      if ((UINT8)(FPTR)param >= 0x90)
318      {
319         duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x00);
320      }
321      else
322      {
323         duart68681_rx_data(m_duart, 1, (UINT8)(FPTR)0x01);
324      }
315      send_through_panel((UINT8)(FPTR)param&0x7f);
316      send_through_panel((UINT8)(FPTR)0x00);
325317   }
326318}
327#endif
328319
329static const duart68681_config duart_config =
320static SLOT_INTERFACE_START(midiin_slot)
321   SLOT_INTERFACE("midiin", MIDIIN_PORT)
322SLOT_INTERFACE_END
323
324static const serial_port_interface midiin_intf =
330325{
331   duart_irq_handler,
332   duart_tx,
333   duart_input,
334   duart_output,
326   DEVCB_DEVICE_LINE_MEMBER("duart", duartn68681_device, rx_a_w)   // route MIDI Tx send directly to 68681 channel A Rx
327};
335328
329static SLOT_INTERFACE_START(midiout_slot)
330   SLOT_INTERFACE("midiout", MIDIOUT_PORT)
331SLOT_INTERFACE_END
332
333static const serial_port_interface midiout_intf =
334{
335   DEVCB_NULL   // midi out ports don't transmit inward
336};
337
338static const duartn68681_config duart_config =
339{
340   DEVCB_DRIVER_LINE_MEMBER(esq1_state, duart_irq_handler),
341   DEVCB_DRIVER_LINE_MEMBER(esq1_state, duart_tx_a),
342   DEVCB_DRIVER_LINE_MEMBER(esq1_state, duart_tx_b),
343   DEVCB_DRIVER_MEMBER(esq1_state, duart_input),
344   DEVCB_DRIVER_MEMBER(esq1_state, duart_output),
345
336346   500000, 500000, // IP3, IP4
337347   1000000, 1000000, // IP5, IP6
338348};
339349
350static const esqpanel_interface esqpanel_config =
351{
352   DEVCB_DEVICE_LINE_MEMBER("duart", duartn68681_device, rx_b_w)
353};
354
340355static MACHINE_CONFIG_START( esq1, esq1_state )
341356   MCFG_CPU_ADD("maincpu", M6809E, 4000000)    // how fast is it?
342357   MCFG_CPU_PROGRAM_MAP(esq1_map)
343358
359   MCFG_DUARTN68681_ADD("duart", 4000000, duart_config)
360   MCFG_ESQPANEL2x40_ADD("panel", esqpanel_config)
361   MCFG_SERIAL_PORT_ADD("mdin", midiin_intf, midiin_slot, "midiin", NULL)
362   MCFG_SERIAL_PORT_ADD("mdout", midiout_intf, midiout_slot, "midiout", NULL)
344363
345   MCFG_DUART68681_ADD("duart", 4000000, duart_config)
346
347   MCFG_ESQ2x40_ADD("vfd")
348
349364   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
350365   MCFG_ES5503_ADD("es5503", 7000000, 8, esq1_doc_irq, esq1_adc_read)
351366   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
r20293r20294
366381MACHINE_CONFIG_END
367382
368383static INPUT_PORTS_START( esq1 )
369   #if KEYBOARD_HACK
370384   PORT_START("KEY0")
371   PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)             PORT_CHAR('a') PORT_CHAR('A') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x80)
372   PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)             PORT_CHAR('s') PORT_CHAR('S') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x81)
373   PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)             PORT_CHAR('d') PORT_CHAR('D') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x82)
374   PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F)             PORT_CHAR('f') PORT_CHAR('F') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x83)
375   PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G)             PORT_CHAR('g') PORT_CHAR('G') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x84)
376   PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H)             PORT_CHAR('h') PORT_CHAR('H') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x85)
377   PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J)             PORT_CHAR('j') PORT_CHAR('J') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x86)
378   PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K)             PORT_CHAR('k') PORT_CHAR('K') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x87)
379   PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L)             PORT_CHAR('l') PORT_CHAR('L') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x88)
380   PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)             PORT_CHAR('q') PORT_CHAR('Q') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x89)
381   PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)             PORT_CHAR('w') PORT_CHAR('W') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8a)
382   PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)             PORT_CHAR('e') PORT_CHAR('E') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8b)
383   PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)             PORT_CHAR('r') PORT_CHAR('R') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8c)
384   PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T)             PORT_CHAR('t') PORT_CHAR('T') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8d)
385   PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y)             PORT_CHAR('y') PORT_CHAR('Y') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8e)
386   PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U)             PORT_CHAR('u') PORT_CHAR('U') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8f)
385   PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x84) PORT_NAME("SEQ")
386   PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x85) PORT_NAME("CART A")
387   PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x86) PORT_NAME("CART B")
388   PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x87) PORT_NAME("INT")
389   PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x88) PORT_NAME("1 / SEQ 1")
390   PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x89) PORT_NAME("2 / SEQ 2")
391   PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8a) PORT_NAME("3 / SEQ 3")
392   PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8b) PORT_NAME("4 / SONG")
393   PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('Z') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8c) PORT_NAME("COMPARE")
394   PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8e) PORT_NAME("DATA DOWN")
395   PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8d) PORT_NAME("DATA UP")
396   PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR('\r') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x8f) PORT_NAME("WRITE")
387397
388398   PORT_START("KEY1")
389   PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)             PORT_CHAR('1') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x90)
390   PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)             PORT_CHAR('2') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x91)
391   PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)             PORT_CHAR('3') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x92)
392   PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4)             PORT_CHAR('4') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x93)
393   PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5)             PORT_CHAR('5') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x99)
394   PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6)             PORT_CHAR('6') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x94)
395   PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7)             PORT_CHAR('7') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x95)
396   PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)             PORT_CHAR('8') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x96)
397   PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)             PORT_CHAR('9') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x97)
398   PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0)             PORT_CHAR('0') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x98)
399   #endif
399   PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x90) PORT_NAME("UPPER 1")
400   PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x91) PORT_NAME("UPPER 2")
401   PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x92) PORT_NAME("UPPER 3")
402   PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x93) PORT_NAME("UPPER 4")
403   PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x99) PORT_NAME("UPPER 5")
404   PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x94) PORT_NAME("LOWER 1")
405   PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x95) PORT_NAME("LOWER 2")
406   PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x96) PORT_NAME("LOWER 3")
407   PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x97) PORT_NAME("LOWER 4")
408   PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHANGED_MEMBER(DEVICE_SELF, esq1_state, key_stroke, 0x98) PORT_NAME("LOWER 5")
409
410
400411INPUT_PORTS_END
401412
402413ROM_START( esq1 )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team