trunk/src/mame/includes/galaxold.h
| r18570 | r18571 | |
| 183 | 183 | TIMER_CALLBACK_MEMBER(stars_blink_callback); |
| 184 | 184 | TIMER_CALLBACK_MEMBER(stars_scroll_callback); |
| 185 | 185 | 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 | |
| 186 | 190 | }; |
| 187 | 191 | |
| 188 | 192 | /*----------- defined in video/galaxold.c -----------*/ |
| 189 | 193 | void galaxold_init_stars(running_machine &machine, int colors_offset); |
| 190 | 194 | void galaxold_draw_stars(running_machine &machine, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 191 | 195 | |
| 192 | | /*----------- defined in machine/galaxold.c -----------*/ |
| 193 | | |
| 194 | | WRITE_LINE_DEVICE_HANDLER( galaxold_7474_9m_2_q_callback ); |
| 195 | | WRITE_LINE_DEVICE_HANDLER( galaxold_7474_9m_1_callback ); |
| 196 | | |
| 197 | 196 | #define galaxold_coin_counter_0_w galaxold_coin_counter_w |
| 198 | 197 | |
| 199 | 198 | #endif |
trunk/src/mame/includes/carpolo.h
| r18570 | r18571 | |
| 78 | 78 | DECLARE_READ8_MEMBER(pia_0_port_b_r); |
| 79 | 79 | DECLARE_READ8_MEMBER(pia_1_port_a_r); |
| 80 | 80 | 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 | |
| 81 | 86 | }; |
| 82 | 87 | |
| 83 | 88 | |
| r18570 | r18571 | |
| 87 | 92 | extern const pia6821_interface carpolo_pia1_intf; |
| 88 | 93 | |
| 89 | 94 | void carpolo_74148_3s_cb(device_t *device); |
| 90 | | |
| 91 | | WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2s_1_q_cb ); |
| 92 | | WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2s_2_q_cb ); |
| 93 | | WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2u_1_q_cb ); |
| 94 | | WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2u_2_q_cb ); |
| 95 | | |
| 96 | 95 | void carpolo_generate_car_car_interrupt(running_machine &machine, int car1, int car2); |
| 97 | 96 | void carpolo_generate_ball_screen_interrupt(running_machine &machine, UINT8 cause); |
| 98 | 97 | void carpolo_generate_car_goal_interrupt(running_machine &machine, int car, int right_goal); |
trunk/src/mame/drivers/scramble.c
| r18570 | r18571 | |
| 1326 | 1326 | MCFG_CPU_PROGRAM_MAP(scramble_sound_map) |
| 1327 | 1327 | MCFG_CPU_IO_MAP(scramble_sound_io_map) |
| 1328 | 1328 | |
| 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)) |
| 1331 | 1331 | |
| 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)) |
| 1333 | 1333 | |
| 1334 | 1334 | MCFG_TIMER_DRIVER_ADD("int_timer", scramble_state, galaxold_interrupt_timer) |
| 1335 | 1335 | |
| r18570 | r18571 | |
| 1558 | 1558 | MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ |
| 1559 | 1559 | MCFG_CPU_PROGRAM_MAP(ad2083_map) |
| 1560 | 1560 | |
| 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)) |
| 1564 | 1564 | |
| 1565 | 1565 | MCFG_TIMER_DRIVER_ADD("int_timer", scramble_state, galaxold_interrupt_timer) |
| 1566 | 1566 | |
trunk/src/mame/drivers/dambustr.c
| r18570 | r18571 | |
| 251 | 251 | |
| 252 | 252 | MCFG_MACHINE_RESET_OVERRIDE(dambustr_state,galaxold) |
| 253 | 253 | |
| 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)) |
| 256 | 256 | |
| 257 | 257 | MCFG_TIMER_DRIVER_ADD("int_timer", dambustr_state, galaxold_interrupt_timer) |
| 258 | 258 | |
trunk/src/mame/drivers/carpolo.c
| r18570 | r18571 | |
| 251 | 251 | MCFG_PIA6821_ADD("pia0", carpolo_pia0_intf) |
| 252 | 252 | MCFG_PIA6821_ADD("pia1", carpolo_pia1_intf) |
| 253 | 253 | |
| 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) |
| 266 | 266 | |
| 267 | 267 | MCFG_74148_ADD("74148_3s", carpolo_ttl74148_intf) |
| 268 | 268 | MCFG_74153_ADD("74153_1k", carpolo_ttl74153_intf) |
trunk/src/mame/drivers/galaxold.c
| r18570 | r18571 | |
| 2176 | 2176 | |
| 2177 | 2177 | MCFG_MACHINE_RESET_OVERRIDE(galaxold_state,galaxold) |
| 2178 | 2178 | |
| 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)) |
| 2181 | 2181 | |
| 2182 | 2182 | MCFG_TIMER_DRIVER_ADD("int_timer", galaxold_state, galaxold_interrupt_timer) |
| 2183 | 2183 | |
trunk/src/mame/drivers/scobra.c
| r18570 | r18571 | |
| 735 | 735 | MCFG_CPU_PROGRAM_MAP(scobra_sound_map) |
| 736 | 736 | MCFG_CPU_IO_MAP(scobra_sound_io_map) |
| 737 | 737 | |
| 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)) |
| 739 | 739 | |
| 740 | 740 | MCFG_MACHINE_RESET_OVERRIDE(scobra_state,scramble) |
| 741 | 741 | |
| 742 | 742 | MCFG_I8255A_ADD( "ppi8255_0", scramble_ppi_0_intf ) |
| 743 | 743 | MCFG_I8255A_ADD( "ppi8255_1", scramble_ppi_1_intf ) |
| 744 | 744 | |
| 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)) |
| 747 | 747 | |
| 748 | 748 | MCFG_TIMER_DRIVER_ADD("int_timer", scobra_state, galaxold_interrupt_timer) |
| 749 | 749 | |
| r18570 | r18571 | |
| 857 | 857 | MCFG_CPU_PROGRAM_MAP(hustler_sound_map) |
| 858 | 858 | MCFG_CPU_IO_MAP(hustler_sound_io_map) |
| 859 | 859 | |
| 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)) |
| 861 | 861 | |
| 862 | 862 | MCFG_MACHINE_RESET_OVERRIDE(scobra_state,scramble) |
| 863 | 863 | |
| 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)) |
| 866 | 866 | |
| 867 | 867 | MCFG_TIMER_DRIVER_ADD("int_timer", scobra_state, galaxold_interrupt_timer) |
| 868 | 868 | |
trunk/src/mame/machine/galaxold.c
| r18570 | r18571 | |
| 28 | 28 | } |
| 29 | 29 | |
| 30 | 30 | /* FIXME: remove trampoline */ |
| 31 | | WRITE_LINE_DEVICE_HANDLER( galaxold_7474_9m_2_q_callback ) |
| 31 | WRITE_LINE_MEMBER(galaxold_state::galaxold_7474_9m_2_q_callback) |
| 32 | 32 | { |
| 33 | 33 | /* Q bar clocks the other flip-flop, |
| 34 | 34 | 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); |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | | WRITE_LINE_DEVICE_HANDLER( galaxold_7474_9m_1_callback ) |
| 38 | WRITE_LINE_MEMBER(galaxold_state::galaxold_7474_9m_1_callback) |
| 39 | 39 | { |
| 40 | | galaxold_state *drvstate = device->machine().driver_data<galaxold_state>(); |
| 41 | 40 | /* 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); |
| 43 | 42 | } |
| 44 | 43 | |
| 45 | 44 | WRITE8_MEMBER(galaxold_state::galaxold_nmi_enable_w) |
trunk/src/mame/machine/carpolo.c
| r18570 | r18571 | |
| 65 | 65 | |
| 66 | 66 | |
| 67 | 67 | /* the outputs of the flip-flops are connected to the priority encoder */ |
| 68 | | WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2s_1_q_cb ) |
| 68 | WRITE_LINE_MEMBER(carpolo_state::carpolo_7474_2s_1_q_cb) |
| 69 | 69 | { |
| 70 | device_t *device = machine().device("74148_3s"); |
| 70 | 71 | ttl74148_input_line_w(device, COIN1_PRIORITY_LINE, state); |
| 71 | 72 | ttl74148_update(device); |
| 72 | 73 | } |
| 73 | 74 | |
| 74 | | WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2s_2_q_cb ) |
| 75 | WRITE_LINE_MEMBER(carpolo_state::carpolo_7474_2s_2_q_cb) |
| 75 | 76 | { |
| 77 | device_t *device = machine().device("74148_3s"); |
| 76 | 78 | ttl74148_input_line_w(device, COIN2_PRIORITY_LINE, state); |
| 77 | 79 | ttl74148_update(device); |
| 78 | 80 | } |
| 79 | 81 | |
| 80 | | WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2u_1_q_cb ) |
| 82 | WRITE_LINE_MEMBER(carpolo_state::carpolo_7474_2u_1_q_cb) |
| 81 | 83 | { |
| 84 | device_t *device = machine().device("74148_3s"); |
| 82 | 85 | ttl74148_input_line_w(device, COIN3_PRIORITY_LINE, state); |
| 83 | 86 | ttl74148_update(device); |
| 84 | 87 | } |
| 85 | 88 | |
| 86 | | WRITE_LINE_DEVICE_HANDLER( carpolo_7474_2u_2_q_cb ) |
| 89 | WRITE_LINE_MEMBER(carpolo_state::carpolo_7474_2u_2_q_cb) |
| 87 | 90 | { |
| 91 | device_t *device = machine().device("74148_3s"); |
| 88 | 92 | ttl74148_input_line_w(device, COIN4_PRIORITY_LINE, state); |
| 89 | 93 | ttl74148_update(device); |
| 90 | 94 | } |
trunk/src/emu/machine/7474.c
| r18570 | r18571 | |
| 54 | 54 | //------------------------------------------------- |
| 55 | 55 | |
| 56 | 56 | ttl7474_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) |
| 58 | 60 | { |
| 59 | | memset(&m_output_cb, 0, sizeof(m_output_cb)); |
| 60 | | memset(&m_comp_output_cb, 0, sizeof(m_comp_output_cb)); |
| 61 | 61 | init(); |
| 62 | 62 | } |
| 63 | 63 | |
| 64 | | |
| 65 | 64 | //------------------------------------------------- |
| 66 | | // static_set_target_tag - configuration helper |
| 67 | | // to set the target tag |
| 68 | | //------------------------------------------------- |
| 69 | | |
| 70 | | void 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 | | |
| 83 | | void 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 | | |
| 102 | | void 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 | | //------------------------------------------------- |
| 117 | 65 | // device_start - device-specific startup |
| 118 | 66 | //------------------------------------------------- |
| 119 | 67 | |
| r18570 | r18571 | |
| 129 | 77 | save_item(NAME(m_last_output)); |
| 130 | 78 | save_item(NAME(m_last_output_comp)); |
| 131 | 79 | |
| 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(); |
| 134 | 82 | } |
| 135 | 83 | |
| 136 | 84 | |
trunk/src/emu/machine/7474.h
| r18570 | r18571 | |
| 50 | 50 | // INTERFACE CONFIGURATION MACROS |
| 51 | 51 | //************************************************************************** |
| 52 | 52 | |
| 53 | | #define MCFG_7474_ADD(_tag, _target_tag, _output_cb, _comp_output_cb) \ |
| 53 | #define MCFG_7474_ADD(_tag, _output_cb, _comp_output_cb) \ |
| 54 | 54 | MCFG_DEVICE_ADD(_tag, MACHINE_TTL7474, 0) \ |
| 55 | | MCFG_7474_TARGET_TAG(_target_tag) \ |
| 56 | 55 | MCFG_7474_OUTPUT_CB(_output_cb) \ |
| 57 | 56 | MCFG_7474_COMP_OUTPUT_CB(_comp_output_cb) |
| 58 | 57 | |
| 59 | | #define MCFG_7474_REPLACE(_tag, _target_tag, _output_cb, _comp_output_cb) \ |
| 58 | #define MCFG_7474_REPLACE(_tag, _output_cb, _comp_output_cb) \ |
| 60 | 59 | MCFG_DEVICE_REPLACE(_tag, TTL7474, 0) \ |
| 61 | | MCFG_7474_TARGET_TAG(_target_tag) \ |
| 62 | 60 | MCFG_7474_OUTPUT_CB(_output_cb) \ |
| 63 | 61 | MCFG_7474_COMP_OUTPUT_CB(_comp_output_cb) |
| 64 | 62 | |
| 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); \ |
| 67 | 65 | |
| 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); \ |
| 70 | 68 | |
| 71 | | #define MCFG_7474_COMP_OUTPUT_CB(_cb) \ |
| 72 | | ttl7474_device::static_set_comp_output_cb(*device, _cb); \ |
| 73 | 69 | |
| 74 | 70 | |
| 75 | | |
| 76 | 71 | //************************************************************************** |
| 77 | 72 | // TYPE DEFINITIONS |
| 78 | 73 | //************************************************************************** |
| r18570 | r18571 | |
| 85 | 80 | // construction/destruction |
| 86 | 81 | ttl7474_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 87 | 82 | |
| 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); } |
| 92 | 86 | |
| 93 | 87 | // public interfaces |
| 94 | 88 | DECLARE_WRITE_LINE_MEMBER( clear_w ); |
| r18570 | r18571 | |
| 104 | 98 | virtual void device_reset(); |
| 105 | 99 | virtual void device_post_load() { } |
| 106 | 100 | 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 | | |
| 112 | 101 | private: |
| 113 | 102 | // 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; |
| 116 | 105 | |
| 117 | 106 | // inputs |
| 118 | 107 | UINT8 m_clear; // pin 1/13 |