Previous 199869 Revisions Next

r33777 Tuesday 9th December, 2014 at 20:23:06 UTC by hap
added auto power-off
[src/mess/drivers]cnsector.c comp4.c starwbc.c stopthie.c ticalc1x.c

trunk/src/mess/drivers/cnsector.c
r242288r242289
195195
196196void cnsector_state::machine_start()
197197{
198   // zerofill
198199   memset(m_leds_state, 0, sizeof(m_leds_state));
199200   memset(m_leds_cache, 0, sizeof(m_leds_cache));
200201   memset(m_leds_decay, 0, sizeof(m_leds_decay));
202
201203   m_o = 0;
202204   
205   // register for savestates
203206   save_item(NAME(m_leds_state));
204207   save_item(NAME(m_leds_cache));
205208   save_item(NAME(m_leds_decay));
209
206210   save_item(NAME(m_o));
207211}
208212
trunk/src/mess/drivers/comp4.c
r242288r242289
168168
169169void comp4_state::machine_start()
170170{
171   // zerofill
171172   m_leds_state = 0;
172173   memset(m_leds_decay, 0, sizeof(m_leds_decay));
174
173175   m_o = 0;
174176   
177   // register for savestates
175178   save_item(NAME(m_leds_state));
176179   save_item(NAME(m_leds_decay));
180
177181   save_item(NAME(m_o));
178182}
179183
trunk/src/mess/drivers/starwbc.c
r242288r242289
230230
231231void starwbc_state::machine_start()
232232{
233   // zerofill
233234   memset(m_leds_state, 0, sizeof(m_leds_state));
234235   memset(m_leds_cache, 0, sizeof(m_leds_cache));
235236   memset(m_leds_decay, 0, sizeof(m_leds_decay));
237
236238   m_r = 0;
237239   m_o = 0;
238240   
241   // register for savestates
239242   save_item(NAME(m_leds_state));
240243   save_item(NAME(m_leds_cache));
241244   save_item(NAME(m_leds_decay));
245
242246   save_item(NAME(m_r));
243247   save_item(NAME(m_o));
244248}
trunk/src/mess/drivers/stopthie.c
r242288r242289
1111
1212
1313  TODO:
14  - ON/OFF button callbacks
1514  - MCU clock is unknown
1615  - stopthiep: unable to start a game (may be intentional?)
1716
r242288r242289
4241   required_device<speaker_sound_device> m_speaker;
4342
4443   UINT16 m_o;
44   bool m_power;
4545
4646   UINT16 m_leds_state[0x10];
4747   UINT16 m_leds_cache[0x10];
r242288r242289
5151   DECLARE_WRITE16_MEMBER(write_o);
5252   DECLARE_WRITE16_MEMBER(write_r);
5353
54   DECLARE_INPUT_CHANGED_MEMBER(power_button);
55   DECLARE_WRITE_LINE_MEMBER(auto_power_off);
56
5457   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
5558   void leds_update();
5659
60   virtual void machine_reset();
5761   virtual void machine_start();
5862};
5963
r242288r242289
8892            m_leds_decay[di] = LEDS_DECAY_TIME;
8993         
9094         // determine active state
91         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
95         int ds = (m_power && m_leds_decay[di] != 0) ? 1 : 0;
9296         active_state[i] |= (ds << j);
9397      }
9498   }
r242288r242289
164168
165169***************************************************************************/
166170
171INPUT_CHANGED_MEMBER(stopthief_state::power_button)
172{
173   m_power = (bool)(FPTR)param;
174   m_maincpu->set_input_line(INPUT_LINE_RESET, m_power ? CLEAR_LINE : ASSERT_LINE);
175}
176
167177/* physical button layout and labels is like this:
168178
169179    [1] [2] [OFF]
r242288r242289
190200
191201   // note: even though power buttons are on the matrix, they are not CPU-controlled
192202   PORT_START("IN.2") // Vss!
193   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("On")
203   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_NAME("On") PORT_CHANGED_MEMBER(DEVICE_SELF, stopthief_state, power_button, (void *)true)
194204   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_NAME("Tip")
195205   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_NAME("Arrest")
196206   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_NAME("Clue")
197   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off")
207   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Off") PORT_CHANGED_MEMBER(DEVICE_SELF, stopthief_state, power_button, (void *)false)
198208INPUT_PORTS_END
199209
200210
r242288r242289
205215
206216***************************************************************************/
207217
218WRITE_LINE_MEMBER(stopthief_state::auto_power_off)
219{
220   // TMS0980 auto power-off opcode
221   if (state)
222   {
223      m_power = false;
224      m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
225   }
226}
227
228
229void stopthief_state::machine_reset()
230{
231   m_power = true;
232}
233
208234void stopthief_state::machine_start()
209235{
236   // zerofill
210237   memset(m_leds_state, 0, sizeof(m_leds_state));
211238   memset(m_leds_cache, 0, sizeof(m_leds_cache));
212239   memset(m_leds_decay, 0, sizeof(m_leds_decay));
240
213241   m_o = 0;
242   m_power = false;
214243
244   // register for savestates
215245   save_item(NAME(m_leds_state));
216246   save_item(NAME(m_leds_cache));
217247   save_item(NAME(m_leds_decay));
248
218249   save_item(NAME(m_o));
250   save_item(NAME(m_power));
219251}
220252
221253
r242288r242289
226258   MCFG_TMS1XXX_READ_K_CB(READ8(stopthief_state, read_k))
227259   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(stopthief_state, write_o))
228260   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(stopthief_state, write_r))
261   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(stopthief_state, auto_power_off))
229262
230263   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", stopthief_state, leds_decay_tick, attotime::from_msec(10))
231264   
trunk/src/mess/drivers/ticalc1x.c
r242288r242289
88
99 
1010  TODO:
11  - ON/OFF button callbacks, and support OFF callback from the 0980
1211  - MCU clocks are unknown
1312
1413***************************************************************************/
r242288r242289
3635
3736   UINT16 m_r;
3837   UINT16 m_o;
38   bool m_power;
3939
4040   UINT16 m_leds_state[0x10];
4141   UINT16 m_leds_cache[0x10];
r242288r242289
5858   DECLARE_WRITE16_MEMBER(ti30_write_o);
5959   DECLARE_WRITE16_MEMBER(ti30_write_r);
6060
61   DECLARE_INPUT_CHANGED_MEMBER(power_button);
62   DECLARE_WRITE_LINE_MEMBER(auto_power_off);
63
6164   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
6265   void leds_update();
6366
67   virtual void machine_reset();
6468   virtual void machine_start();
6569};
6670
r242288r242289
9599            m_leds_decay[di] = LEDS_DECAY_TIME;
96100         
97101         // determine active state
98         int ds = (m_leds_decay[di] != 0) ? 1 : 0;
102         int ds = (m_power && m_leds_decay[di] != 0) ? 1 : 0;
99103         active_state[i] |= (ds << j);
100104      }
101105   }
r242288r242289
290294
291295***************************************************************************/
292296
297INPUT_CHANGED_MEMBER(ticalc1x_state::power_button)
298{
299   m_power = (bool)(FPTR)param;
300   m_maincpu->set_input_line(INPUT_LINE_RESET, m_power ? CLEAR_LINE : ASSERT_LINE);
301}
302
293303static INPUT_PORTS_START( tisr16 )
294304   PORT_START("IN.0") // R0
295305   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
r242288r242289
483493
484494   // note: even though power buttons are on the matrix, they are not CPU-controlled
485495   PORT_START("IN.8") // Vss!
486   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C")
496   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
487497   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_NAME("1/x")
488498   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_NAME(UTF8_SQUAREROOT"x")
489499   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x"UTF8_POW_2)
490   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF")
500   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
491501INPUT_PORTS_END
492502
493503
r242288r242289
546556
547557   // note: even though power buttons are on the matrix, they are not CPU-controlled
548558   PORT_START("IN.8") // Vss!
549   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_PGUP) PORT_NAME("C/ON")
559   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_PGUP) PORT_NAME("C/ON") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
550560   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_NAME("DEC")
551561   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_NAME("OCT")
552562   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_NAME("HEX")
553   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF")
563   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
554564INPUT_PORTS_END
555565
556566
r242288r242289
610620
611621   // note: even though power buttons are on the matrix, they are not CPU-controlled
612622   PORT_START("IN.8") // Vss!
613   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C")
623   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGUP) PORT_CODE(KEYCODE_DEL) PORT_NAME("ON/C") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)true)
614624   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_NAME("2nd")
615625   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_NAME("x"UTF8_POW_2"  "UTF8_SQUAREROOT"x")
616626   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_NAME("ln(x)  e"UTF8_POW_X)
617   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF")
627   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PGDN) PORT_NAME("OFF") PORT_CHANGED_MEMBER(DEVICE_SELF, ticalc1x_state, power_button, (void *)false)
618628INPUT_PORTS_END
619629
620630
r242288r242289
625635
626636***************************************************************************/
627637
638WRITE_LINE_MEMBER(ticalc1x_state::auto_power_off)
639{
640   // TMS0980 auto power-off opcode
641   if (state)
642   {
643      m_power = false;
644      m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
645   }
646}
647
648
649void ticalc1x_state::machine_reset()
650{
651   m_power = true;
652}
653
628654void ticalc1x_state::machine_start()
629655{
656   // zerofill
630657   memset(m_leds_state, 0, sizeof(m_leds_state));
631658   memset(m_leds_cache, 0, sizeof(m_leds_cache));
632659   memset(m_leds_decay, 0, sizeof(m_leds_decay));
660
633661   m_r = 0;
634662   m_o = 0;
663   m_power = false;
635664
665   // register for savestates
636666   save_item(NAME(m_leds_state));
637667   save_item(NAME(m_leds_cache));
638668   save_item(NAME(m_leds_decay));
669
639670   save_item(NAME(m_r));
640671   save_item(NAME(m_o));
672   save_item(NAME(m_power));
641673}
642674
643675
r242288r242289
693725   MCFG_TMS1XXX_READ_K_CB(READ8(ticalc1x_state, ti30_read_k))
694726   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(ticalc1x_state, ti30_write_o))
695727   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(ticalc1x_state, ti30_write_r))
728   MCFG_TMS1XXX_POWER_OFF_CB(WRITELINE(ticalc1x_state, auto_power_off))
696729
697730   MCFG_DEFAULT_LAYOUT(layout_ti30)
698731MACHINE_CONFIG_END


Previous 199869 Revisions Next


© 1997-2024 The MAME Team