Previous 199869 Revisions Next

r18571 Wednesday 17th October, 2012 at 06:57:18 UTC by Miodrag Milanović
changed 7474 to use devcb2 (no whatsnew)
[src/emu/machine]7474.c 7474.h
[src/mame/audio]scramble.c
[src/mame/drivers]carpolo.c dambustr.c galaxold.c scobra.c scramble.c
[src/mame/includes]carpolo.h galaxold.h scramble.h
[src/mame/machine]carpolo.c galaxold.c

trunk/src/mame/includes/scramble.h
r18570r18571
5555   DECLARE_MACHINE_RESET(explorer);
5656   DECLARE_WRITE8_MEMBER(scramble_protection_w);
5757   DECLARE_READ8_MEMBER(scramble_protection_r);
58   DECLARE_WRITE_LINE_MEMBER(scramble_sh_7474_q_callback);
5859};
5960
6061
r18570r18571
7576/*----------- defined in audio/scramble.c -----------*/
7677
7778void scramble_sh_init(running_machine &machine);
78WRITE_LINE_DEVICE_HANDLER( scramble_sh_7474_q_callback );
7979
8080
8181DECLARE_READ8_DEVICE_HANDLER( scramble_portB_r );
trunk/src/mame/includes/galaxold.h
r18570r18571
183183   TIMER_CALLBACK_MEMBER(stars_blink_callback);
184184   TIMER_CALLBACK_MEMBER(stars_scroll_callback);
185185   TIMER_DEVICE_CALLBACK_MEMBER(galaxold_interrupt_timer);
186   DECLARE_WRITE_LINE_MEMBER(galaxold_7474_9m_2_q_callback);
187   DECLARE_WRITE_LINE_MEMBER(galaxold_7474_9m_1_callback);
188
189
186190};
187191
188192/*----------- defined in video/galaxold.c -----------*/
189193void galaxold_init_stars(running_machine &machine, int colors_offset);
190194void galaxold_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect);
191195
192/*----------- defined in machine/galaxold.c -----------*/
193
194WRITE_LINE_DEVICE_HANDLER( galaxold_7474_9m_2_q_callback );
195WRITE_LINE_DEVICE_HANDLER( galaxold_7474_9m_1_callback );
196
197196#define galaxold_coin_counter_0_w galaxold_coin_counter_w
198197
199198#endif
trunk/src/mame/includes/carpolo.h
r18570r18571
7878   DECLARE_READ8_MEMBER(pia_0_port_b_r);
7979   DECLARE_READ8_MEMBER(pia_1_port_a_r);
8080   DECLARE_READ8_MEMBER(pia_1_port_b_r);
81   DECLARE_WRITE_LINE_MEMBER(carpolo_7474_2s_1_q_cb);
82   DECLARE_WRITE_LINE_MEMBER(carpolo_7474_2s_2_q_cb);
83   DECLARE_WRITE_LINE_MEMBER(carpolo_7474_2u_1_q_cb);
84   DECLARE_WRITE_LINE_MEMBER(carpolo_7474_2u_2_q_cb);
85   
8186};
8287
8388
r18570r18571
8792extern const pia6821_interface carpolo_pia1_intf;
8893
8994void carpolo_74148_3s_cb(device_t *device);
90
91WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2s_1_q_cb );
92WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2s_2_q_cb );
93WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2u_1_q_cb );
94WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2u_2_q_cb );
95
9695void carpolo_generate_car_car_interrupt(running_machine &machine, int car1, int car2);
9796void carpolo_generate_ball_screen_interrupt(running_machine &machine, UINT8 cause);
9897void carpolo_generate_car_goal_interrupt(running_machine &machine, int car, int right_goal);
trunk/src/mame/drivers/scramble.c
r18570r18571
13261326   MCFG_CPU_PROGRAM_MAP(scramble_sound_map)
13271327   MCFG_CPU_IO_MAP(scramble_sound_io_map)
13281328
1329   MCFG_7474_ADD("7474_9m_1", "7474_9m_1", galaxold_7474_9m_1_callback, NULL)
1330   MCFG_7474_ADD("7474_9m_2", "7474_9m_1", NULL, galaxold_7474_9m_2_q_callback)
1329   MCFG_7474_ADD("7474_9m_1", WRITELINE(scramble_state,galaxold_7474_9m_1_callback), NOOP)
1330   MCFG_7474_ADD("7474_9m_2", NOOP, WRITELINE(scramble_state,galaxold_7474_9m_2_q_callback))
13311331
1332   MCFG_7474_ADD("konami_7474", "konami_7474", NULL, scramble_sh_7474_q_callback)
1332   MCFG_7474_ADD("konami_7474", NOOP, WRITELINE(scramble_state,scramble_sh_7474_q_callback))
13331333
13341334   MCFG_TIMER_DRIVER_ADD("int_timer", scramble_state, galaxold_interrupt_timer)
13351335
r18570r18571
15581558   MCFG_CPU_ADD("maincpu", Z80, 18432000/6)   /* 3.072 MHz */
15591559   MCFG_CPU_PROGRAM_MAP(ad2083_map)
15601560
1561   MCFG_7474_ADD("konami_7474", "konami_7474", NULL, scramble_sh_7474_q_callback)
1562   MCFG_7474_ADD("7474_9m_1", "7474_9m_1", galaxold_7474_9m_1_callback, NULL)
1563   MCFG_7474_ADD("7474_9m_2", "7474_9m_1", NULL, galaxold_7474_9m_2_q_callback)
1561   MCFG_7474_ADD("konami_7474", NOOP, WRITELINE(scramble_state,scramble_sh_7474_q_callback))
1562   MCFG_7474_ADD("7474_9m_1", WRITELINE(scramble_state,galaxold_7474_9m_1_callback), NOOP)
1563   MCFG_7474_ADD("7474_9m_2", NOOP, WRITELINE(scramble_state,galaxold_7474_9m_2_q_callback))
15641564
15651565   MCFG_TIMER_DRIVER_ADD("int_timer", scramble_state, galaxold_interrupt_timer)
15661566
trunk/src/mame/drivers/dambustr.c
r18570r18571
251251
252252   MCFG_MACHINE_RESET_OVERRIDE(dambustr_state,galaxold)
253253
254   MCFG_7474_ADD("7474_9m_1", "7474_9m_1", galaxold_7474_9m_1_callback, NULL)
255   MCFG_7474_ADD("7474_9m_2", "7474_9m_1", NULL, galaxold_7474_9m_2_q_callback)
254   MCFG_7474_ADD("7474_9m_1", WRITELINE(dambustr_state,galaxold_7474_9m_1_callback), NOOP)
255   MCFG_7474_ADD("7474_9m_2", NOOP, WRITELINE(dambustr_state,galaxold_7474_9m_2_q_callback))
256256
257257   MCFG_TIMER_DRIVER_ADD("int_timer", dambustr_state, galaxold_interrupt_timer)
258258
trunk/src/mame/drivers/carpolo.c
r18570r18571
251251   MCFG_PIA6821_ADD("pia0", carpolo_pia0_intf)
252252   MCFG_PIA6821_ADD("pia1", carpolo_pia1_intf)
253253
254   MCFG_7474_ADD("7474_2s_1", "74148_3s", NULL, carpolo_7474_2s_1_q_cb)
255   MCFG_7474_ADD("7474_2s_2", "74148_3s", NULL, carpolo_7474_2s_2_q_cb)
256   MCFG_7474_ADD("7474_2u_1", "74148_3s", NULL, carpolo_7474_2u_1_q_cb)
257   MCFG_7474_ADD("7474_2u_2", "74148_3s", NULL, carpolo_7474_2u_2_q_cb)
258   MCFG_7474_ADD("7474_1f_1", NULL, NULL, NULL)
259   MCFG_7474_ADD("7474_1f_2", NULL, NULL, NULL)
260   MCFG_7474_ADD("7474_1d_1", NULL, NULL, NULL)
261   MCFG_7474_ADD("7474_1d_2", NULL, NULL, NULL)
262   MCFG_7474_ADD("7474_1c_1", NULL, NULL, NULL)
263   MCFG_7474_ADD("7474_1c_2", NULL, NULL, NULL)
264   MCFG_7474_ADD("7474_1a_1", NULL, NULL, NULL)
265   MCFG_7474_ADD("7474_1a_2", NULL, NULL, NULL)
254   MCFG_7474_ADD("7474_2s_1", NOOP, WRITELINE(carpolo_state, carpolo_7474_2s_1_q_cb))
255   MCFG_7474_ADD("7474_2s_2", NOOP, WRITELINE(carpolo_state, carpolo_7474_2s_2_q_cb))
256   MCFG_7474_ADD("7474_2u_1", NOOP, WRITELINE(carpolo_state, carpolo_7474_2u_1_q_cb))
257   MCFG_7474_ADD("7474_2u_2", NOOP, WRITELINE(carpolo_state, carpolo_7474_2u_2_q_cb))
258   MCFG_7474_ADD("7474_1f_1", NOOP, NOOP)
259   MCFG_7474_ADD("7474_1f_2", NOOP, NOOP)
260   MCFG_7474_ADD("7474_1d_1", NOOP, NOOP)
261   MCFG_7474_ADD("7474_1d_2", NOOP, NOOP)
262   MCFG_7474_ADD("7474_1c_1", NOOP, NOOP)
263   MCFG_7474_ADD("7474_1c_2", NOOP, NOOP)
264   MCFG_7474_ADD("7474_1a_1", NOOP, NOOP)
265   MCFG_7474_ADD("7474_1a_2", NOOP, NOOP)
266266
267267   MCFG_74148_ADD("74148_3s", carpolo_ttl74148_intf)
268268   MCFG_74153_ADD("74153_1k", carpolo_ttl74153_intf)
trunk/src/mame/drivers/galaxold.c
r18570r18571
21762176
21772177   MCFG_MACHINE_RESET_OVERRIDE(galaxold_state,galaxold)
21782178
2179   MCFG_7474_ADD("7474_9m_1", "7474_9m_1", galaxold_7474_9m_1_callback, NULL)
2180   MCFG_7474_ADD("7474_9m_2", "7474_9m_1", NULL, galaxold_7474_9m_2_q_callback)
2179   MCFG_7474_ADD("7474_9m_1", WRITELINE(galaxold_state,galaxold_7474_9m_1_callback), NOOP)
2180   MCFG_7474_ADD("7474_9m_2", NOOP, WRITELINE(galaxold_state,galaxold_7474_9m_2_q_callback))
21812181
21822182   MCFG_TIMER_DRIVER_ADD("int_timer", galaxold_state, galaxold_interrupt_timer)
21832183
trunk/src/mame/drivers/scobra.c
r18570r18571
735735   MCFG_CPU_PROGRAM_MAP(scobra_sound_map)
736736   MCFG_CPU_IO_MAP(scobra_sound_io_map)
737737
738   MCFG_7474_ADD("konami_7474", "konami_7474", NULL, scramble_sh_7474_q_callback)
738   MCFG_7474_ADD("konami_7474", NOOP, WRITELINE(scobra_state,scramble_sh_7474_q_callback))
739739
740740   MCFG_MACHINE_RESET_OVERRIDE(scobra_state,scramble)
741741
742742   MCFG_I8255A_ADD( "ppi8255_0", scramble_ppi_0_intf )
743743   MCFG_I8255A_ADD( "ppi8255_1", scramble_ppi_1_intf )
744744
745   MCFG_7474_ADD("7474_9m_1", "7474_9m_1", galaxold_7474_9m_1_callback, NULL)
746   MCFG_7474_ADD("7474_9m_2", "7474_9m_1", NULL, galaxold_7474_9m_2_q_callback)
745   MCFG_7474_ADD("7474_9m_1", WRITELINE(scobra_state,galaxold_7474_9m_1_callback), NOOP)
746   MCFG_7474_ADD("7474_9m_2", NOOP, WRITELINE(scobra_state,galaxold_7474_9m_2_q_callback))
747747
748748   MCFG_TIMER_DRIVER_ADD("int_timer", scobra_state, galaxold_interrupt_timer)
749749
r18570r18571
857857   MCFG_CPU_PROGRAM_MAP(hustler_sound_map)
858858   MCFG_CPU_IO_MAP(hustler_sound_io_map)
859859
860   MCFG_7474_ADD("konami_7474", "konami_7474", NULL, scramble_sh_7474_q_callback)
860   MCFG_7474_ADD("konami_7474", NOOP, WRITELINE(scobra_state,scramble_sh_7474_q_callback))
861861
862862   MCFG_MACHINE_RESET_OVERRIDE(scobra_state,scramble)
863863
864   MCFG_7474_ADD("7474_9m_1", "7474_9m_1", galaxold_7474_9m_1_callback, NULL)
865   MCFG_7474_ADD("7474_9m_2", "7474_9m_1", NULL, galaxold_7474_9m_2_q_callback)
864   MCFG_7474_ADD("7474_9m_1", WRITELINE(scobra_state,galaxold_7474_9m_1_callback), NOOP)
865   MCFG_7474_ADD("7474_9m_2", NOOP, WRITELINE(scobra_state,galaxold_7474_9m_2_q_callback))
866866
867867   MCFG_TIMER_DRIVER_ADD("int_timer", scobra_state, galaxold_interrupt_timer)
868868
trunk/src/mame/audio/scramble.c
r18570r18571
110110   return 0xff;
111111}
112112
113WRITE_LINE_DEVICE_HANDLER( scramble_sh_7474_q_callback )
113WRITE_LINE_MEMBER(scramble_state::scramble_sh_7474_q_callback)
114114{
115115   /* the Q bar is connected to the Z80's INT line.  But since INT is complemented, */
116116   /* we need to complement Q bar */
117   if (device->machine().device("audiocpu"))
118      device->machine().device("audiocpu")->execute().set_input_line(0, !state ? ASSERT_LINE : CLEAR_LINE);
117   if (machine().device("audiocpu"))
118      machine().device("audiocpu")->execute().set_input_line(0, !state ? ASSERT_LINE : CLEAR_LINE);
119119}
120120
121121WRITE8_MEMBER(scramble_state::hotshock_sh_irqtrigger_w)
trunk/src/mame/machine/galaxold.c
r18570r18571
2828}
2929
3030/* FIXME: remove trampoline */
31WRITE_LINE_DEVICE_HANDLER( galaxold_7474_9m_2_q_callback )
31WRITE_LINE_MEMBER(galaxold_state::galaxold_7474_9m_2_q_callback)
3232{
3333   /* Q bar clocks the other flip-flop,
3434       Q is VBLANK (not visible to the CPU) */
35   downcast<ttl7474_device *>(device)->clock_w(state);
35   downcast<ttl7474_device *>(machine().device("7474_9m_1"))->clock_w(state);
3636}
3737
38WRITE_LINE_DEVICE_HANDLER( galaxold_7474_9m_1_callback )
38WRITE_LINE_MEMBER(galaxold_state::galaxold_7474_9m_1_callback)
3939{
40   galaxold_state *drvstate = device->machine().driver_data<galaxold_state>();
4140   /* Q goes to the NMI line */
42   device->machine().device("maincpu")->execute().set_input_line(drvstate->m_irq_line, state ? CLEAR_LINE : ASSERT_LINE);
41   machine().device("maincpu")->execute().set_input_line(m_irq_line, state ? CLEAR_LINE : ASSERT_LINE);
4342}
4443
4544WRITE8_MEMBER(galaxold_state::galaxold_nmi_enable_w)
trunk/src/mame/machine/carpolo.c
r18570r18571
6565
6666
6767/* the outputs of the flip-flops are connected to the priority encoder */
68WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2s_1_q_cb )
68WRITE_LINE_MEMBER(carpolo_state::carpolo_7474_2s_1_q_cb)
6969{
70   device_t *device = machine().device("74148_3s");
7071   ttl74148_input_line_w(device, COIN1_PRIORITY_LINE, state);
7172   ttl74148_update(device);
7273}
7374
74WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2s_2_q_cb )
75WRITE_LINE_MEMBER(carpolo_state::carpolo_7474_2s_2_q_cb)
7576{
77   device_t *device = machine().device("74148_3s");
7678   ttl74148_input_line_w(device, COIN2_PRIORITY_LINE, state);
7779   ttl74148_update(device);
7880}
7981
80WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2u_1_q_cb )
82WRITE_LINE_MEMBER(carpolo_state::carpolo_7474_2u_1_q_cb)
8183{
84   device_t *device = machine().device("74148_3s");
8285   ttl74148_input_line_w(device, COIN3_PRIORITY_LINE, state);
8386   ttl74148_update(device);
8487}
8588
86WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2u_2_q_cb )
89WRITE_LINE_MEMBER(carpolo_state::carpolo_7474_2u_2_q_cb)
8790{
91   device_t *device = machine().device("74148_3s");
8892   ttl74148_input_line_w(device, COIN4_PRIORITY_LINE, state);
8993   ttl74148_update(device);
9094}
trunk/src/emu/machine/7474.c
r18570r18571
5454//-------------------------------------------------
5555
5656ttl7474_device::ttl7474_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
57    : device_t(mconfig, MACHINE_TTL7474, "7474", tag, owner, clock)
57    : device_t(mconfig, MACHINE_TTL7474, "7474", tag, owner, clock),
58     m_output_func(*this),
59     m_comp_output_func(*this)
5860{
59   memset(&m_output_cb, 0, sizeof(m_output_cb));
60   memset(&m_comp_output_cb, 0, sizeof(m_comp_output_cb));
6161    init();
6262}
6363
64
6564//-------------------------------------------------
66//  static_set_target_tag - configuration helper
67//  to set the target tag
68//-------------------------------------------------
69
70void ttl7474_device::static_set_target_tag(device_t &device, const char *tag)
71{
72   ttl7474_device &ttl7474 = downcast<ttl7474_device &>(device);
73   ttl7474.m_output_cb.tag = tag;
74   ttl7474.m_comp_output_cb.tag = tag;
75}
76
77
78//-------------------------------------------------
79//  static_set_output_cb - configuration helper
80//  to set the output callback
81//-------------------------------------------------
82
83void ttl7474_device::static_set_output_cb(device_t &device, write_line_device_func callback)
84{
85   ttl7474_device &ttl7474 = downcast<ttl7474_device &>(device);
86   if (callback != NULL)
87   {
88      ttl7474.m_output_cb.type = DEVCB_TYPE_DEVICE;
89      ttl7474.m_output_cb.index = 0;
90      ttl7474.m_output_cb.writeline = callback;
91   }
92   else
93      ttl7474.m_output_cb.type = DEVCB_TYPE_NULL;
94}
95
96
97//-------------------------------------------------
98//  static_set_comp_output_cb - configuration
99//  helper to set the comp. output callback
100//-------------------------------------------------
101
102void ttl7474_device::static_set_comp_output_cb(device_t &device, write_line_device_func callback)
103{
104   ttl7474_device &ttl7474 = downcast<ttl7474_device &>(device);
105   if (callback != NULL)
106   {
107      ttl7474.m_comp_output_cb.type = DEVCB_TYPE_DEVICE;
108      ttl7474.m_comp_output_cb.index = 0;
109      ttl7474.m_comp_output_cb.writeline = callback;
110   }
111   else
112      ttl7474.m_comp_output_cb.type = DEVCB_TYPE_NULL;
113}
114
115
116//-------------------------------------------------
11765//  device_start - device-specific startup
11866//-------------------------------------------------
11967
r18570r18571
12977    save_item(NAME(m_last_output));
13078    save_item(NAME(m_last_output_comp));
13179
132   m_output_func.resolve(m_output_cb, *this);
133   m_comp_output_func.resolve(m_comp_output_cb, *this);
80   m_output_func.resolve_safe();
81   m_comp_output_func.resolve_safe();
13482}
13583
13684
trunk/src/emu/machine/7474.h
r18570r18571
5050//  INTERFACE CONFIGURATION MACROS
5151//**************************************************************************
5252
53#define MCFG_7474_ADD(_tag, _target_tag, _output_cb, _comp_output_cb) \
53#define MCFG_7474_ADD(_tag, _output_cb, _comp_output_cb) \
5454    MCFG_DEVICE_ADD(_tag, MACHINE_TTL7474, 0) \
55    MCFG_7474_TARGET_TAG(_target_tag) \
5655    MCFG_7474_OUTPUT_CB(_output_cb) \
5756    MCFG_7474_COMP_OUTPUT_CB(_comp_output_cb)
5857
59#define MCFG_7474_REPLACE(_tag, _target_tag, _output_cb, _comp_output_cb) \
58#define MCFG_7474_REPLACE(_tag, _output_cb, _comp_output_cb) \
6059    MCFG_DEVICE_REPLACE(_tag, TTL7474, 0) \
61    MCFG_7474_TARGET_TAG(_target_tag) \
6260    MCFG_7474_OUTPUT_CB(_output_cb) \
6361    MCFG_7474_COMP_OUTPUT_CB(_comp_output_cb)
6462
65#define MCFG_7474_TARGET_TAG(_target_tag) \
66   ttl7474_device::static_set_target_tag(*device, _target_tag); \
63#define MCFG_7474_OUTPUT_CB(_devcb) \
64   devcb = &ttl7474_device::set_output_cb(*device, DEVCB2_##_devcb); \
6765
68#define MCFG_7474_OUTPUT_CB(_cb) \
69   ttl7474_device::static_set_output_cb(*device, _cb); \
66#define MCFG_7474_COMP_OUTPUT_CB(_devcb) \
67   devcb = &ttl7474_device::set_comp_output_cb(*device, DEVCB2_##_devcb); \
7068
71#define MCFG_7474_COMP_OUTPUT_CB(_cb) \
72   ttl7474_device::static_set_comp_output_cb(*device, _cb); \
7369
7470
75
7671//**************************************************************************
7772//  TYPE DEFINITIONS
7873//**************************************************************************
r18570r18571
8580    // construction/destruction
8681    ttl7474_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
8782
88   // inline configuration helpers
89   static void static_set_target_tag(device_t &device, const char *tag);
90   static void static_set_output_cb(device_t &device, write_line_device_func callback);
91   static void static_set_comp_output_cb(device_t &device, write_line_device_func callback);
83   // static configuration helpers
84   template<class _Object> static devcb2_base &set_output_cb(device_t &device, _Object object) { return downcast<ttl7474_device &>(device).m_output_func.set_callback(object); }
85   template<class _Object> static devcb2_base &set_comp_output_cb(device_t &device, _Object object) { return downcast<ttl7474_device &>(device).m_comp_output_func.set_callback(object); }
9286
9387   // public interfaces
9488    DECLARE_WRITE_LINE_MEMBER( clear_w );
r18570r18571
10498    virtual void device_reset();
10599    virtual void device_post_load() { }
106100    virtual void device_clock_changed() { }
107
108    // configuration state
109    devcb_write_line m_output_cb;
110    devcb_write_line m_comp_output_cb;
111
112101private:
113102    // callbacks
114    devcb_resolved_write_line m_output_func;
115    devcb_resolved_write_line m_comp_output_func;
103    devcb2_write_line m_output_func;
104    devcb2_write_line m_comp_output_func;
116105
117106    // inputs
118107    UINT8 m_clear;              // pin 1/13

Previous 199869 Revisions Next


© 1997-2024 The MAME Team