Previous 199869 Revisions Next

r20511 Saturday 26th January, 2013 at 20:42:25 UTC by Wilbert Pol
(MESS) mephisto.c: Tagmap cleanups (nw)
[src/mess/drivers]mephisto.c

trunk/src/mess/drivers/mephisto.c
r20510r20511
7272{
7373public:
7474   mephisto_state(const machine_config &mconfig, device_type type, const char *tag)
75      : mboard_state(mconfig, type, tag),
76   m_maincpu(*this, "maincpu"),
77   m_beep(*this, BEEPER_TAG)
75      : mboard_state(mconfig, type, tag)
76      , m_maincpu(*this, "maincpu")
77      , m_beep(*this, BEEPER_TAG)
78      , m_key1_0(*this, "KEY1_0")
79      , m_key1_1(*this, "KEY1_1")
80      , m_key1_2(*this, "KEY1_2")
81      , m_key1_3(*this, "KEY1_3")
82      , m_key1_4(*this, "KEY1_4")
83      , m_key1_5(*this, "KEY1_5")
84      , m_key1_6(*this, "KEY1_6")
85      , m_key1_7(*this, "KEY1_7")
86      , m_key2_0(*this, "KEY2_0")
87      , m_key2_1(*this, "KEY2_1")
88      , m_key2_2(*this, "KEY2_2")
89      , m_key2_3(*this, "KEY2_3")
90      , m_key2_4(*this, "KEY2_4")
91      , m_key2_5(*this, "KEY2_5")
92      , m_key2_6(*this, "KEY2_6")
93      , m_key2_7(*this, "KEY2_7")
7894   { }
7995
8096   required_device<m65c02_device> m_maincpu;
r20510r20511
96112   TIMER_DEVICE_CALLBACK_MEMBER(update_nmi);
97113   TIMER_DEVICE_CALLBACK_MEMBER(update_nmi_r5);
98114   TIMER_DEVICE_CALLBACK_MEMBER(update_irq);
115
116protected:
117   required_ioport m_key1_0;
118   required_ioport m_key1_1;
119   required_ioport m_key1_2;
120   required_ioport m_key1_3;
121   required_ioport m_key1_4;
122   required_ioport m_key1_5;
123   required_ioport m_key1_6;
124   required_ioport m_key1_7;
125   required_ioport m_key2_0;
126   required_ioport m_key2_1;
127   required_ioport m_key2_2;
128   required_ioport m_key2_3;
129   required_ioport m_key2_4;
130   required_ioport m_key2_5;
131   required_ioport m_key2_6;
132   required_ioport m_key2_7;
99133};
100134
101135
r20510r20511
115149
116150READ8_MEMBER( mephisto_state::read_keys )
117151{
118   UINT8 data;
119   static const char *const keynames[2][8] =
120         {
121            { "KEY1_0", "KEY1_1", "KEY1_2", "KEY1_3", "KEY1_4", "KEY1_5", "KEY1_6", "KEY1_7" },
122            { "KEY2_0", "KEY2_1", "KEY2_2", "KEY2_3", "KEY2_4", "KEY2_5", "KEY2_6", "KEY2_7" }
123         };
152   UINT8 data = 0;
124153
125154   if (((m_led_status & 0x80) == 0x00))
126      data=ioport(keynames[0][offset])->read();
155   {
156      switch ( offset )
157      {
158         case 0: data = m_key1_0->read(); break;
159         case 1: data = m_key1_1->read(); break;
160         case 2: data = m_key1_2->read(); break;
161         case 3: data = m_key1_3->read(); break;
162         case 4: data = m_key1_4->read(); break;
163         case 5: data = m_key1_5->read(); break;
164         case 6: data = m_key1_6->read(); break;
165         case 7: data = m_key1_7->read(); break;
166      }
167   }
127168   else
128      data=ioport(keynames[1][offset])->read();
169   {
170      switch ( offset )
171      {
172         case 0: data = m_key2_0->read(); break;
173         case 1: data = m_key2_1->read(); break;
174         case 2: data = m_key2_2->read(); break;
175         case 3: data = m_key2_3->read(); break;
176         case 4: data = m_key2_4->read(); break;
177         case 5: data = m_key2_5->read(); break;
178         case 6: data = m_key2_6->read(); break;
179         case 7: data = m_key2_7->read(); break;
180      }
181   }
129182
130   logerror("Keyboard Port = %s Data = %d\n  ", ((m_led_status & 0x80) == 0x00) ? keynames[0][offset] : keynames[1][offset], data);
183   logerror("Keyboard Port = %d-%d Data = %d\n  ", ((m_led_status & 0x80) == 0x00) ? 0 : 1, offset, data);
131184   return data | 0x7f;
132185}
133186
r20510r20511
338391   if (m_allowNMI)
339392   {
340393      m_allowNMI = 0;
341      machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI,PULSE_LINE);
394      m_maincpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE);
342395   }
343396   beep_set_state(m_beep, m_led_status&64?1:0);
344397}
345398
346399TIMER_DEVICE_CALLBACK_MEMBER(mephisto_state::update_nmi_r5)
347400{
348   machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI,PULSE_LINE);
401   m_maincpu->set_input_line(INPUT_LINE_NMI,PULSE_LINE);
349402   beep_set_state(m_beep, m_led_status&64?1:0);
350403}
351404
352405TIMER_DEVICE_CALLBACK_MEMBER(mephisto_state::update_irq)//only mm2
353406{
354407   // That will not work
355   machine().device("maincpu")->execute().set_input_line(M65C02_IRQ_LINE, ASSERT_LINE);
356   machine().device("maincpu")->execute().set_input_line(M65C02_IRQ_LINE, CLEAR_LINE);
408   m_maincpu->set_input_line(M65C02_IRQ_LINE, ASSERT_LINE);
409   m_maincpu->set_input_line(M65C02_IRQ_LINE, CLEAR_LINE);
357410
358411   beep_set_state(m_beep, m_led_status&64?1:0);
359412}

Previous 199869 Revisions Next


© 1997-2024 The MAME Team