Previous 199869 Revisions Next

r32077 Friday 12th September, 2014 at 07:18:04 UTC by Fabio Priuli
reduced tagmap lookups in atari400, maxaflex and bartop52. nw.
[src/mame/drivers]bartop52.c maxaflex.c
[src/mame/includes]atari.h
[src/mame/machine]atari.c
[src/mess/drivers]atari400.c

trunk/src/mess/drivers/atari400.c
r32076r32077
244244public:
245245   a400_state(const machine_config &mconfig, device_type type, const char *tag)
246246      : atari_common_state(mconfig, type, tag),
247      m_maincpu(*this, "maincpu"),
248247      m_ram(*this, RAM_TAG),
249248      m_pia(*this, "pia"),
249      m_dac(*this, "dac"),
250250      m_region_maincpu(*this, "maincpu"),
251251      m_0000(*this, "0000"),
252252      m_8000(*this, "8000"),
r32076r32077
266266
267267   DECLARE_WRITE8_MEMBER(a600xl_pia_pb_w);
268268   DECLARE_WRITE8_MEMBER(a800xl_pia_pb_w);
269   
270   DECLARE_READ8_MEMBER(atari_pia_pa_r);
271   DECLARE_READ8_MEMBER(atari_pia_pb_r);
272269
273270   DECLARE_READ8_MEMBER(read_d5xx);   // at least one cart type can enable/disable roms when reading
274271   DECLARE_WRITE8_MEMBER(disable_cart);
r32076r32077
291288   TIMER_DEVICE_CALLBACK_MEMBER(a5200_interrupt);
292289   
293290protected:
294   required_device<cpu_device> m_maincpu;
291   //required_device<cpu_device> m_maincpu;   // maincpu is already contained in atari_common_state
295292   required_device<ram_device> m_ram;
296293   required_device<pia6821_device> m_pia;
294   optional_device<dac_device> m_dac;
297295   required_memory_region m_region_maincpu;
298296   optional_memory_bank m_0000;
299297   optional_memory_bank m_8000;
r32076r32077
718716- "Atari" is mapped to 'F3'                         */
719717
720718static INPUT_PORTS_START( atari_keyboard )
721   PORT_START("keyboard_0")
719   PORT_START("keyboard.0")
722720   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
723721   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
724722   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
r32076r32077
728726   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('+') PORT_CHAR('\\')
729727   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('*') PORT_CHAR('^')
730728
731   PORT_START("keyboard_1")
729   PORT_START("keyboard.1")
732730   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
733731   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) // None!
734732   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
r32076r32077
738736   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('-') PORT_CHAR('_')
739737   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('=') PORT_CHAR('|')
740738
741   PORT_START("keyboard_2")
739   PORT_START("keyboard.2")
742740   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
743741   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
744742   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
r32076r32077
748746   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
749747   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
750748
751   PORT_START("keyboard_3")
749   PORT_START("keyboard.3")
752750   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
753751   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
754752   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
r32076r32077
758756   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
759757   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
760758
761   PORT_START("keyboard_4")
759   PORT_START("keyboard.4")
762760   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('[')
763761   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
764762   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR(']')
r32076r32077
768766   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
769767   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Atari") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(F3))
770768
771   PORT_START("keyboard_5")
769   PORT_START("keyboard.5")
772770   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
773771   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
774772   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
r32076r32077
778776   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
779777   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
780778
781   PORT_START("keyboard_6")
779   PORT_START("keyboard.6")
782780   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
783781   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
784782   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
r32076r32077
788786   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("<  Clear") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('<') PORT_CHAR(UCHAR_MAMEKEY(F2))
789787   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(">  Insert") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('>') PORT_CHAR(UCHAR_MAMEKEY(INSERT))
790788
791   PORT_START("keyboard_7")
789   PORT_START("keyboard.7")
792790   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
793791   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
794792   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
r32076r32077
865863   PORT_BIT(0x40, 0x40, IPT_BUTTON2) PORT_PLAYER(3)
866864   PORT_BIT(0x80, 0x80, IPT_BUTTON2) PORT_PLAYER(4)
867865
868   PORT_START("keypad_0")
866   PORT_START("keypad.0")
869867   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("(Break)") PORT_CODE(KEYCODE_PAUSE)    // is this correct?
870868   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[#]") PORT_CODE(KEYCODE_ENTER_PAD)
871869   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[0]") PORT_CODE(KEYCODE_0_PAD)
872870   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[*]") PORT_CODE(KEYCODE_PLUS_PAD)
873871   PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
874872
875   PORT_START("keypad_1")
873   PORT_START("keypad.1")
876874   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F3)
877875   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[9]") PORT_CODE(KEYCODE_9_PAD)
878876   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[8]") PORT_CODE(KEYCODE_8_PAD)
879877   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[7]") PORT_CODE(KEYCODE_7_PAD)
880878   PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
881879
882   PORT_START("keypad_2")
880   PORT_START("keypad.2")
883881   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(DEF_STR(Pause)) PORT_CODE(KEYCODE_F2)
884882   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[6]") PORT_CODE(KEYCODE_6_PAD)
885883   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[5]") PORT_CODE(KEYCODE_5_PAD)
886884   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[4]") PORT_CODE(KEYCODE_4_PAD)
887885   PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
888886
889   PORT_START("keypad_3")
887   PORT_START("keypad.3")
890888   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_START)    PORT_NAME("Start")
891889   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[3]") PORT_CODE(KEYCODE_3_PAD)
892890   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[2]") PORT_CODE(KEYCODE_2_PAD)
r32076r32077
20062004
20072005WRITE8_MEMBER(a400_state::gtia_cb)
20082006{
2009   dac_device *dac = machine().device<dac_device>("dac");
20102007   if (data & 0x08)
2011      dac->write_unsigned8((UINT8)-120);
2008      m_dac->write_unsigned8((UINT8)-120);
20122009   else
2013      dac->write_unsigned8(+120);
2010      m_dac->write_unsigned8(+120);
20142011}
20152012
20162013/**************************************************************
r32076r32077
20332030   }
20342031}
20352032
2036READ8_MEMBER(a400_state::atari_pia_pa_r)
2037{
2038   return ioport("djoy_0_1")->read_safe(0);
2039}
2040
2041READ8_MEMBER(a400_state::atari_pia_pb_r)
2042{
2043   return ioport("djoy_2_3")->read_safe(0);
2044}
2045
20462033/**************************************************************
20472034 *
20482035 * Machine drivers
trunk/src/mame/drivers/maxaflex.c
r32076r32077
2727public:
2828   maxaflex_state(const machine_config &mconfig, device_type type, const char *tag)
2929      : atari_common_state(mconfig, type, tag),
30      m_maincpu(*this, "maincpu"),
3130      m_mcu(*this, "mcu"),
32      m_speaker(*this, "speaker") { }
31      m_speaker(*this, "speaker"),
32      m_region_maincpu(*this, "maincpu"),
33      m_dsw(*this, "dsw"),
34      m_coin(*this, "coin"),
35      m_console(*this, "console"),
36      m_joy01(*this, "djoy_0_1"),
37      m_joy23(*this, "djoy_2_3")
38   { }
3339
3440   UINT8 m_portA_in;
3541   UINT8 m_portA_out;
r32076r32077
6773   TIMER_DEVICE_CALLBACK_MEMBER(mcu_timer_proc);
6874   int atari_input_disabled();
6975   virtual void machine_reset();
70   required_device<cpu_device> m_maincpu;
76   //required_device<cpu_device> m_maincpu;   // maincpu is already contained in atari_common_state
7177   required_device<cpu_device> m_mcu;
7278   required_device<speaker_sound_device> m_speaker;
79   required_memory_region m_region_maincpu;
80   required_ioport m_dsw;
81   required_ioport m_coin;
82   required_ioport m_console;
83   required_ioport m_joy01;
84   required_ioport m_joy23;
7385};
7486
7587
r32076r32077
7991   if (new_mmu & 0x80)
8092   {
8193      logerror("%s MMU SELFTEST RAM\n", machine().system().name);
82      machine().device("maincpu")->memory().space(AS_PROGRAM).nop_readwrite(0x5000, 0x57ff);
94      m_maincpu->space(AS_PROGRAM).nop_readwrite(0x5000, 0x57ff);
8395   }
8496   else
8597   {
8698      logerror("%s MMU SELFTEST ROM\n", machine().system().name);
87      machine().device("maincpu")->memory().space(AS_PROGRAM).install_read_bank(0x5000, 0x57ff, "bank2");
88      machine().device("maincpu")->memory().space(AS_PROGRAM).unmap_write(0x5000, 0x57ff);
89      machine().root_device().membank("bank2")->set_base(machine().root_device().memregion("maincpu")->base() + 0xd000);
99      m_maincpu->space(AS_PROGRAM).install_read_bank(0x5000, 0x57ff, "bank2");
100      m_maincpu->space(AS_PROGRAM).unmap_write(0x5000, 0x57ff);
101      machine().root_device().membank("bank2")->set_base(m_region_maincpu->base() + 0xd000);
90102   }
91103}
92104
r32076r32077
107119
108120READ8_MEMBER(maxaflex_state::mcu_portA_r)
109121{
110   m_portA_in = ioport("dsw")->read() | (ioport("coin")->read() << 4) | (ioport("console")->read() << 5);
122   m_portA_in = m_dsw->read() | (m_coin->read() << 4) | (m_console->read() << 5);
111123   return (m_portA_in & ~m_ddrA) | (m_portA_out & m_ddrA);
112124}
113125
r32076r32077
376388
377389READ8_MEMBER(maxaflex_state::pia_pa_r)
378390{
379   return atari_input_disabled() ? 0xff : ioport("djoy_0_1")->read_safe(0);
391   return atari_input_disabled() ? 0xff : m_joy01->read_safe(0);
380392}
381393
382394READ8_MEMBER(maxaflex_state::pia_pb_r)
383395{
384   return atari_input_disabled() ? 0xff : ioport("djoy_2_3")->read_safe(0);
396   return atari_input_disabled() ? 0xff : m_joy23->read_safe(0);
385397}
386398
387399
trunk/src/mame/drivers/bartop52.c
r32076r32077
2727{
2828public:
2929   bartop52_state(const machine_config &mconfig, device_type type, const char *tag)
30      : atari_common_state(mconfig, type, tag),
31      m_maincpu(*this, "maincpu") { }
30      : atari_common_state(mconfig, type, tag)
31      { }
3232
3333   TIMER_DEVICE_CALLBACK_MEMBER( bartop_interrupt );
3434
3535   virtual void machine_reset();
36   required_device<cpu_device> m_maincpu;
36   //required_device<cpu_device> m_maincpu;   // maincpu is already contained in atari_common_state
3737};
3838
3939
r32076r32077
6060   PORT_BIT(0x40, 0x40, IPT_UNUSED)
6161   PORT_BIT(0x80, 0x80, IPT_UNUSED)
6262
63   PORT_START("keypad_0")
63   PORT_START("keypad.0")
6464   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("(Break)") PORT_CODE(KEYCODE_PAUSE)    // is this correct?
6565   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Wind-Up") PORT_CODE(KEYCODE_ENTER_PAD)
6666   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("[0]") PORT_CODE(KEYCODE_0_PAD)
6767   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("No Wind-Up") PORT_CODE(KEYCODE_PLUS_PAD)
6868   PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
6969
70   PORT_START("keypad_1")
70   PORT_START("keypad.1")
7171   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Reset") PORT_CODE(KEYCODE_F3)
7272   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Fast Ball Low") PORT_CODE(KEYCODE_9_PAD)
7373   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Change-Up Low") PORT_CODE(KEYCODE_8_PAD)
7474   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Curve Low") PORT_CODE(KEYCODE_7_PAD)
7575   PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
7676
77   PORT_START("keypad_2")
77   PORT_START("keypad.2")
7878   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME(DEF_STR(Pause)) PORT_CODE(KEYCODE_F2)
7979   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Fast Ball Med.") PORT_CODE(KEYCODE_6_PAD)
8080   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Change-Up Med.") PORT_CODE(KEYCODE_5_PAD)
8181   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Curve Med") PORT_CODE(KEYCODE_4_PAD)
8282   PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_UNUSED)
8383
84   PORT_START("keypad_3")
84   PORT_START("keypad.3")
8585   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_START)    PORT_NAME("Start")
8686   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Fast Ball High") PORT_CODE(KEYCODE_3_PAD)
8787   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Change-Up High") PORT_CODE(KEYCODE_2_PAD)
trunk/src/mame/machine/atari.c
r32076r32077
4545         logerror("atari interrupt_cb TIMR1\n");
4646   }
4747
48   machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE);
48   m_maincpu->set_input_line(0, HOLD_LINE);
4949}
5050
5151
r32076r32077
8989POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a800_keyboard)
9090{
9191   int ipt;
92   static const char *const tag[] = {
93      "keyboard_0", "keyboard_1", "keyboard_2", "keyboard_3",
94      "keyboard_4", "keyboard_5", "keyboard_6", "keyboard_7"
95   };
9692   UINT8 ret = 0x00;
9793
9894   /* decode special */
r32076r32077
10096   {
10197   case pokey_device::POK_KEY_BREAK:
10298      /* special case ... */
103      ret |= ((machine().root_device().ioport(tag[0])->read_safe(0) & 0x08) ? 0x02 : 0x00);
99      ret |= ((m_keyboard[0]->read_safe(0) & 0x08) ? 0x02 : 0x00);
104100      break;
105101   case pokey_device::POK_KEY_CTRL:
106102      /* CTRL */
107      ret |= ((machine().root_device().ioport("fake")->read_safe(0) & 0x02) ? 0x02 : 0x00);
103      ret |= ((m_fake->read_safe(0) & 0x02) ? 0x02 : 0x00);
108104      break;
109105   case pokey_device::POK_KEY_SHIFT:
110106      /* SHIFT */
111      ret |= ((machine().root_device().ioport("fake")->read_safe(0) & 0x01) ? 0x02 : 0x00);
107      ret |= ((m_fake->read_safe(0) & 0x01) ? 0x02 : 0x00);
112108      break;
113109   }
114110
r32076r32077
117113      return ret;
118114
119115   /* decode regular key */
120   ipt = machine().root_device().ioport(tag[k543210 >> 3])->read_safe(0);
116   ipt = m_keyboard[k543210 >> 3]->read_safe(0);
121117
122118   if (ipt & (1 << (k543210 & 0x07)))
123119      ret |= 0x01;
r32076r32077
157153POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a5200_keypads)
158154{
159155   int ipt;
160   static const char *const tag[] = { "keypad_0", "keypad_1", "keypad_2", "keypad_3" };
161156   UINT8 ret = 0x00;
162157
163158   /* decode special */
r32076r32077
165160   {
166161   case pokey_device::POK_KEY_BREAK:
167162      /* special case ... */
168      ret |= ((machine().root_device().ioport(tag[0])->read_safe(0) & 0x01) ? 0x02 : 0x00);
163      ret |= ((m_keypad[0]->read_safe(0) & 0x01) ? 0x02 : 0x00);
169164      break;
170165   case pokey_device::POK_KEY_CTRL:
171166      break;
172167   case pokey_device::POK_KEY_SHIFT:
173168      // button 2 from joypads
174      ipt = machine().root_device().ioport("djoy_b")->read() & (0x10 << ((k543210 >> 3) & 0x03));
169      ipt = m_djoy_b->read() & (0x10 << ((k543210 >> 3) & 0x03));
175170      ret |= !ipt ? 0x02 : 0;
176171      break;
177172   }
r32076r32077
187182   if (k543210 == 0)
188183      return ret;
189184
190   ipt = machine().root_device().ioport(tag[k543210 >> 2])->read_safe(0);
185   ipt = m_keypad[k543210 >> 2]->read_safe(0);
191186
192187   if (ipt & (1 << (k543210 & 0x03)))
193188      ret |= 0x01;
trunk/src/mame/includes/atari.h
r32076r32077
2323public:
2424   atari_common_state(const machine_config &mconfig, device_type type, const char *tag)
2525      : driver_device(mconfig, type, tag),
26      m_maincpu(*this, "maincpu"),
2627      m_gtia(*this, "gtia"),
27      m_antic(*this, "antic")
28      m_antic(*this, "antic"),
29      m_keyboard(*this, "keyboard"),
30      m_keypad(*this, "keypad"),
31      m_djoy_b(*this, "djoy_b"),
32      m_fake(*this, "fake")
2833      { }
2934
3035   virtual void video_start();
r32076r32077
3641   POKEY_KEYBOARD_CB_MEMBER(a800_keyboard);
3742
3843protected:
44   required_device<cpu_device> m_maincpu;
3945   required_device<gtia_device> m_gtia;
4046   required_device<antic_device> m_antic;
47   optional_ioport_array<8> m_keyboard;
48   optional_ioport_array<4> m_keypad;
49   optional_ioport m_djoy_b;
50   optional_ioport m_fake;
4151};
4252
4353#endif /* ATARI_H */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team