i8279: De-MCFG, nw

This commit is contained in:
mooglyguy 2018-09-04 04:49:13 +02:00
parent da09a76aac
commit 3d37224601
15 changed files with 88 additions and 129 deletions

View File

@ -35,53 +35,12 @@
#pragma once
/***************************************************************************
DEVICE CONFIGURATION MACROS
***************************************************************************/
#define MCFG_I8279_OUT_IRQ_CB(_devcb) \
downcast<i8279_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_I8279_OUT_SL_CB(_devcb) \
downcast<i8279_device &>(*device).set_out_sl_callback(DEVCB_##_devcb);
#define MCFG_I8279_OUT_DISP_CB(_devcb) \
downcast<i8279_device &>(*device).set_out_disp_callback(DEVCB_##_devcb);
#define MCFG_I8279_OUT_BD_CB(_devcb) \
downcast<i8279_device &>(*device).set_out_bd_callback(DEVCB_##_devcb);
#define MCFG_I8279_IN_RL_CB(_devcb) \
downcast<i8279_device &>(*device).set_in_rl_callback(DEVCB_##_devcb);
#define MCFG_I8279_IN_SHIFT_CB(_devcb) \
downcast<i8279_device &>(*device).set_in_shift_callback(DEVCB_##_devcb);
#define MCFG_I8279_IN_CTRL_CB(_devcb) \
downcast<i8279_device &>(*device).set_in_ctrl_callback(DEVCB_##_devcb);
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
// ======================> i8279_device
class i8279_device : public device_t
{
public:
// construction/destruction
i8279_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_sl_callback(Object &&cb) { return m_out_sl_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_disp_callback(Object &&cb) { return m_out_disp_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_bd_callback(Object &&cb) { return m_out_bd_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_in_rl_callback(Object &&cb) { return m_in_rl_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_in_shift_callback(Object &&cb) { return m_in_shift_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_in_ctrl_callback(Object &&cb) { return m_in_ctrl_cb.set_callback(std::forward<Object>(cb)); }
auto out_irq_callback() { return m_out_irq_cb.bind(); }
auto out_sl_callback() { return m_out_sl_cb.bind(); }
auto out_disp_callback() { return m_out_disp_cb.bind(); }

View File

@ -107,13 +107,13 @@ MACHINE_CONFIG_START(ax80_state::ax80)
MCFG_DEVICE_ADD(PPI0_TAG, I8255A, 0)
MCFG_DEVICE_ADD(PPI1_TAG, I8255A, 0)
MCFG_DEVICE_ADD("kdc", I8279, 6554800 / 8) // Keyboard/Display Controller
//MCFG_I8279_OUT_IRQ_CB(INPUTLINE("maincpu", UPD7810_INTF1)) // irq
//MCFG_I8279_OUT_SL_CB(WRITE8(*this, ax80_state, scanlines_w)) // scan SL lines
//MCFG_I8279_OUT_DISP_CB(WRITE8(*this, ax80_state, digit_w)) // display A&B
//MCFG_I8279_IN_RL_CB(READ8(*this, ax80_state, kbd_r)) // kbd RL lines
//MCFG_I8279_IN_SHIFT_CB(VCC) // not connected
//MCFG_I8279_IN_CTRL_CB(VCC) // not connected
I8279(config, "kdc", 6554800 / 8); // Keyboard/Display Controller
//kdc.out_irq_calback().set_inputline("maincpu", UPD7810_INTF1); // irq
//kdc.out_sl_callback().set(FUNC(ax80_state::scanlines_w)); // scan SL lines
//kdc.out_disp_callback().set(FUNC(ax80_state::digit_w)); // display A&B
//kdc.in_rl_callback().set(FUNC(ax80_state::kbd_r)) // kbd RL lines
//kdc.in_shift_callback().set_constant(1); // not connected
//kdc.in_ctrl_callback().set_constant(1); // not connected
MACHINE_CONFIG_END
static INPUT_PORTS_START( ax80 )

View File

@ -380,11 +380,11 @@ MACHINE_CONFIG_START(i7000_state::i7000)
MCFG_PIT8253_OUT2_HANDLER(WRITELINE("speaker", speaker_sound_device, level_w))
/* Keyboard interface */
MCFG_DEVICE_ADD("i8279", I8279, 4000000) /* guessed value. TODO: verify on PCB */
MCFG_I8279_OUT_SL_CB(WRITE8(*this, i7000_state, i7000_scanlines_w)) // scan SL lines
MCFG_I8279_IN_RL_CB(READ8(*this, i7000_state, i7000_kbd_r)) // kbd RL lines
MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // TODO: Shift key
MCFG_I8279_IN_CTRL_CB(CONSTANT(1)) // TODO: Ctrl key
i8279_device &kbdc(I8279(config, "i8279", 4000000)); /* guessed value. TODO: verify on PCB */
kbdc.out_sl_callback().set(FUNC(i7000_state::i7000_scanlines_w)); // scan SL lines
kbdc.in_rl_callback().set(FUNC(i7000_state::i7000_kbd_r)); // kbd RL lines
kbdc.in_shift_callback().set_constant(1); // TODO: Shift key
kbdc.in_ctrl_callback().set_constant(1); // TODO: Ctrl key
/* Cartridge slot */
MCFG_GENERIC_CARTSLOT_ADD("cardslot", generic_romram_plain_slot, "i7000_card")

View File

@ -385,11 +385,11 @@ MACHINE_CONFIG_START(icecold_state::icecold)
pia2.irqa_handler().set_inputline("maincpu", M6809_IRQ_LINE);
pia2.irqb_handler().set_inputline("maincpu", M6809_IRQ_LINE);
MCFG_DEVICE_ADD("i8279", I8279, XTAL(6'000'000)/4)
MCFG_I8279_OUT_IRQ_CB(WRITELINE("pia0", pia6821_device, cb1_w)) // irq
MCFG_I8279_OUT_SL_CB(WRITE8(*this, icecold_state, scanlines_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, icecold_state, digit_w)) // display A&B
MCFG_I8279_IN_RL_CB(READ8(*this, icecold_state, kbd_r)) // kbd RL lines
i8279_device &kbdc(I8279(config, "i8279", XTAL(6'000'000)/4));
kbdc.out_irq_callback().set("pia0", FUNC(pia6821_device::cb1_w)); // irq
kbdc.out_sl_callback().set(FUNC(icecold_state::scanlines_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(icecold_state::digit_w)); // display A&B
kbdc.in_rl_callback().set(FUNC(icecold_state::kbd_r)); // kbd RL lines
// 30Hz signal from CH-C of ay0
MCFG_TIMER_DRIVER_ADD_PERIODIC("sint_timer", icecold_state, icecold_sint_timer, attotime::from_hz(30))

View File

@ -225,13 +225,13 @@ MACHINE_CONFIG_START(isbc8010_state::isbc8010)
// MCFG_AY51013_WRITE_SO_CB(WRITE8(*this, sdk80_state, nascom1_hd6402_so))
/* Devices */
// MCFG_DEVICE_ADD("i8279", I8279, 3100000) // based on divider
// MCFG_I8279_OUT_IRQ_CB(INPUTLINE("maincpu", I8085_RST55_LINE)) // irq
// MCFG_I8279_OUT_SL_CB(WRITE8(*this, sdk80_state, scanlines_w)) // scan SL lines
// MCFG_I8279_OUT_DISP_CB(WRITE8(*this, sdk80_state, digit_w)) // display A&B
// MCFG_I8279_IN_RL_CB(READ8(*this, sdk80_state, kbd_r)) // kbd RL lines
// MCFG_I8279_IN_SHIFT_CB(VCC) // Shift key
// MCFG_I8279_IN_CTRL_CB(VCC)
// i8279_device &kbdc(I8279(config, "i8279", 3100000)); // based on divider
// kbdc.out_irq_callback().set_inputline("maincpu", I8085_RST55_LINE); // irq
// kbdc.out_sl_callback().set(FUNC(sdk80_state::scanlines_w)); // scan SL lines
// kbdc.out_disp_callback().set(FUNC(sdk80_state::digit_w)); // display A&B
// kbdc.in_rl_callback().set(FUNC(sdk80_state::kbd_r)); // kbd RL lines
// kbdc.in_shift_callback().set_constant(1); // Shift key
// kbdc.in_ctrl_callback().set_constant(1);
MACHINE_CONFIG_END

View File

@ -194,10 +194,10 @@ MACHINE_CONFIG_START(marywu_state::marywu)
//TODO: figure out what each bit is mapped to in the 80c31 ports P1 and P3
/* Keyboard & display interface */
MCFG_DEVICE_ADD("i8279", I8279, XTAL(10'738'635)) /* should it be perhaps a fraction of the XTAL clock ? */
MCFG_I8279_OUT_SL_CB(WRITE8(*this, marywu_state, multiplex_7seg_w)) // select block of 7seg modules by multiplexing the SL scan lines
MCFG_I8279_IN_RL_CB(READ8(*this, marywu_state, keyboard_r)) // keyboard Return Lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, marywu_state, display_7seg_data_w))
i8279_device &kbdc(I8279(config, "i8279", XTAL(10'738'635))); // should it be perhaps a fraction of the XTAL clock ?
kbdc.out_sl_callback().set(FUNC(marywu_state::multiplex_7seg_w)); // select block of 7seg modules by multiplexing the SL scan lines
kbdc.in_rl_callback().set(FUNC(marywu_state::keyboard_r)); // keyboard Return Lines
kbdc.out_disp_callback().set(FUNC(marywu_state::display_7seg_data_w));
/* Video */
config.set_default_layout(layout_marywu);

View File

@ -811,16 +811,16 @@ MACHINE_CONFIG_START(maygay1b_state::maygay_m1)
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq?
MCFG_DEVICE_ADD("i8279", I8279, M1_MASTER_CLOCK/4) // unknown clock
MCFG_I8279_OUT_SL_CB(WRITE8(*this, maygay1b_state, scanlines_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, maygay1b_state, lamp_data_w)) // display A&B
MCFG_I8279_IN_RL_CB(READ8(*this, maygay1b_state, kbd_r)) // kbd RL lines
i8279_device &kbdc(I8279(config, "i8279", M1_MASTER_CLOCK/4)); // unknown clock
kbdc.out_sl_callback().set(FUNC(maygay1b_state::scanlines_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(maygay1b_state::lamp_data_w)); // display A&B
kbdc.in_rl_callback().set(FUNC(maygay1b_state::kbd_r)); // kbd RL lines
#ifndef USE_MCU
// on M1B there is a 2nd i8279, on M1 / M1A a 8051 handles this task!
MCFG_DEVICE_ADD("i8279_2", I8279, M1_MASTER_CLOCK/4) // unknown clock
MCFG_I8279_OUT_SL_CB(WRITE8(*this, maygay1b_state, scanlines_2_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, maygay1b_state, lamp_data_2_w)) // display A&B
i8279_device &kbdc2(I8279(config, "i8279_2", M1_MASTER_CLOCK/4)); // unknown clock
kbdc2.out_sl_callback().set(FUNC(maygay1b_state::scanlines_2_w)); // scan SL lines
kbdc2.out_disp_callback().set(FUNC(maygay1b_state::lamp_data_2_w)); // display A&B
#endif
MCFG_DEVICE_ADD("reel0", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4)

View File

@ -914,10 +914,10 @@ MACHINE_CONFIG_START(maygayv1_state::maygayv1)
MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, maygayv1_state, duart_irq_handler))
MCFG_MC68681_A_TX_CALLBACK(WRITELINE(*this, maygayv1_state, duart_txa))
MCFG_DEVICE_ADD("i8279", I8279, MASTER_CLOCK/4) // unknown clock
MCFG_I8279_OUT_SL_CB(WRITE8(*this, maygayv1_state, strobe_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, maygayv1_state, lamp_data_w)) // display A&B
MCFG_I8279_IN_RL_CB(READ8(*this, maygayv1_state, kbd_r)) // kbd RL lines
i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4)); // unknown clock
kbdc.out_sl_callback().set(FUNC(maygayv1_state::strobe_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(maygayv1_state::lamp_data_w)); // display A&B
kbdc.in_rl_callback().set(FUNC(maygayv1_state::kbd_r)); // kbd RL lines
SPEAKER(config, "mono").front_center();

View File

@ -519,12 +519,12 @@ MACHINE_CONFIG_START(mmd1_state::mmd2)
config.set_default_layout(layout_mmd2);
/* Devices */
MCFG_DEVICE_ADD("i8279", I8279, 400000) // based on divider
MCFG_I8279_OUT_SL_CB(WRITE8(*this, mmd1_state, mmd2_scanlines_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, mmd1_state, mmd2_digit_w)) // display A&B
MCFG_I8279_IN_RL_CB(READ8(*this, mmd1_state, mmd2_kbd_r)) // kbd RL lines
MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // Shift key
MCFG_I8279_IN_CTRL_CB(CONSTANT(1))
i8279_device &kbdc(I8279(config, "i8279", 400000)); // based on divider
kbdc.out_sl_callback().set(FUNC(mmd1_state::mmd2_scanlines_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(mmd1_state::mmd2_digit_w)); // display A&B
kbdc.in_rl_callback().set(FUNC(mmd1_state::mmd2_kbd_r)); // kbd RL lines
kbdc.in_shift_callback().set_constant(1); // Shift key
kbdc.in_ctrl_callback().set_constant(1);
MACHINE_CONFIG_END

View File

@ -625,12 +625,12 @@ MACHINE_CONFIG_START(peyper_state::peyper)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "ayvol", 1.0)
/* Devices */
MCFG_DEVICE_ADD("i8279", I8279, 2500000)
MCFG_I8279_OUT_SL_CB(WRITE8(*this, peyper_state, col_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, peyper_state, disp_w)) // display A&B
MCFG_I8279_IN_RL_CB(READ8(*this, peyper_state, sw_r)) // kbd RL lines
MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // Shift key
MCFG_I8279_IN_CTRL_CB(CONSTANT(1))
i8279_device &kbdc(I8279(config, "i8279", 2500000));
kbdc.out_sl_callback().set(FUNC(peyper_state::col_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(peyper_state::disp_w)); // display A&B
kbdc.in_rl_callback().set(FUNC(peyper_state::sw_r)); // kbd RL lines
kbdc.in_shift_callback().set_constant(1); // Shift key
kbdc.in_ctrl_callback().set_constant(1);
MACHINE_CONFIG_END
// Not allowed to set up an array all at once, so we have this mess

View File

@ -458,8 +458,8 @@ MACHINE_CONFIG_START(pg685_state::pg675)
// rs232 port
// keyboard
MCFG_DEVICE_ADD("kbdc", I8279, XTAL(12'288'000) / 6) // divider guessed
MCFG_I8279_OUT_IRQ_CB(WRITELINE("mainpic", pic8259_device, ir0_w))
i8279_device &kbdc(I8279(config, "kbdc", XTAL(12'288'000) / 6)); // divider guessed
kbdc.out_irq_callback().set("mainpic", FUNC(pic8259_device::ir0_w));
// printer
@ -508,8 +508,8 @@ MACHINE_CONFIG_START(pg685_state::pg685)
// rs232 port
// keyboard
MCFG_DEVICE_ADD("kbdc", I8279, XTAL(12'288'000) / 6) // divider guessed
MCFG_I8279_OUT_IRQ_CB(WRITELINE("mainpic", pic8259_device, ir0_w))
i8279_device &kbdc(I8279(config, "kbdc", XTAL(12'288'000) / 6)); // divider guessed
kbdc.out_irq_callback().set("mainpic", FUNC(pic8259_device::ir0_w));
// printer
@ -559,8 +559,8 @@ MACHINE_CONFIG_START(pg685_state::pg685oua12)
// rs232 port
// keyboard
MCFG_DEVICE_ADD("kbdc", I8279, 12288000 / 6) // wrong
MCFG_I8279_OUT_IRQ_CB(WRITELINE("mainpic", pic8259_device, ir0_w))
i8279_device &kbdc(I8279(config, "kbdc", 12288000 / 6)); // wrong
kbdc.out_irq_callback().set("mainpic", FUNC(pic8259_device::ir0_w));
// printer

View File

@ -167,13 +167,13 @@ MACHINE_CONFIG_START(sdk85_state::sdk85)
config.set_default_layout(layout_sdk85);
/* Devices */
MCFG_DEVICE_ADD("kdc", I8279, 6.144_MHz_XTAL / 2) // Keyboard/Display Controller (A13)
MCFG_I8279_OUT_IRQ_CB(INPUTLINE("maincpu", I8085_RST55_LINE)) // irq
MCFG_I8279_OUT_SL_CB(WRITE8(*this, sdk85_state, scanlines_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, sdk85_state, digit_w)) // display A&B
MCFG_I8279_IN_RL_CB(READ8(*this, sdk85_state, kbd_r)) // kbd RL lines
MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // Shift key
MCFG_I8279_IN_CTRL_CB(CONSTANT(1))
i8279_device &kdc(I8279(config, "kdc", 6.144_MHz_XTAL / 2)); // Keyboard/Display Controller (A13)
kdc.out_irq_callback().set_inputline("maincpu", I8085_RST55_LINE); // irq
kdc.out_sl_callback().set(FUNC(sdk85_state::scanlines_w)); // scan SL lines
kdc.out_disp_callback().set(FUNC(sdk85_state::digit_w)); // display A&B
kdc.in_rl_callback().set(FUNC(sdk85_state::kbd_r)); // kbd RL lines
kdc.in_shift_callback().set_constant(1); // Shift key
kdc.in_ctrl_callback().set_constant(1);
MACHINE_CONFIG_END
/* ROM definition */

View File

@ -170,12 +170,12 @@ MACHINE_CONFIG_START(sdk86_state::sdk86)
usart_clock.signal_handler().set(I8251_TAG, FUNC(i8251_device::write_txc));
usart_clock.signal_handler().append(I8251_TAG, FUNC(i8251_device::write_rxc));
MCFG_DEVICE_ADD("i8279", I8279, 2500000) // based on divider
MCFG_I8279_OUT_SL_CB(WRITE8(*this, sdk86_state, scanlines_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, sdk86_state, digit_w)) // display A&B
MCFG_I8279_IN_RL_CB(READ8(*this, sdk86_state, kbd_r)) // kbd RL lines
MCFG_I8279_IN_SHIFT_CB(CONSTANT(0)) // Shift key
MCFG_I8279_IN_CTRL_CB(CONSTANT(0))
i8279_device &kbdc(I8279(config, "i8279", 2500000)); // based on divider
kbdc.out_sl_callback().set(FUNC(sdk86_state::scanlines_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(sdk86_state::digit_w)); // display A&B
kbdc.in_rl_callback().set(FUNC(sdk86_state::kbd_r)); // kbd RL lines
kbdc.in_shift_callback().set_constant(0); // Shift key
kbdc.in_ctrl_callback().set_constant(0);
MCFG_DEVICE_ADD("port1", I8255A, 0)
MCFG_DEVICE_ADD("port2", I8255A, 0)

View File

@ -242,12 +242,12 @@ MACHINE_CONFIG_START(selz80_state::selz80)
MCFG_RS232_DSR_HANDLER(WRITELINE("uart", i8251_device, write_dsr))
MCFG_RS232_CTS_HANDLER(WRITELINE("uart", i8251_device, write_cts))
MCFG_DEVICE_ADD("i8279", I8279, 5000000 / 2) // based on divider
MCFG_I8279_OUT_SL_CB(WRITE8(*this, selz80_state, scanlines_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, selz80_state, digit_w)) // display A&B
MCFG_I8279_IN_RL_CB(READ8(*this, selz80_state, kbd_r)) // kbd RL lines
MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // Shift key
MCFG_I8279_IN_CTRL_CB(CONSTANT(1))
i8279_device &kbdc(I8279(config, "i8279", 5000000 / 2)); // based on divider
kbdc.out_sl_callback().set(FUNC(selz80_state::scanlines_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(selz80_state::digit_w)); // display A&B
kbdc.in_rl_callback().set(FUNC(selz80_state::kbd_r)); // kbd RL lines
kbdc.in_shift_callback().set_constant(1); // Shift key
kbdc.in_ctrl_callback().set_constant(1);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(selz80_state::dagz80)

View File

@ -870,10 +870,10 @@ MACHINE_CONFIG_START(turbo_state::turbo)
m_i8255_3->in_pb_callback().set_ioport("DSW2");
m_i8255_3->out_pc_callback().set(FUNC(turbo_state::turbo_ppi3c_w));
MCFG_DEVICE_ADD("i8279", I8279, MASTER_CLOCK/4) // unknown clock
MCFG_I8279_OUT_SL_CB(WRITE8(*this, turbo_state, scanlines_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, turbo_state, digit_w)) // display A&B
MCFG_I8279_IN_RL_CB(IOPORT("DSW1")) // kbd RL lines
i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4)); // unknown clock
kbdc.out_sl_callback().set(FUNC(turbo_state::scanlines_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(turbo_state::digit_w)); // display A&B
kbdc.in_rl_callback().set_ioport("DSW1"); // kbd RL lines
ls259_device &outlatch(LS259(config, "outlatch")); // IC125 - outputs passed through CN5
outlatch.q_out_cb<0>().set(FUNC(turbo_state::coin_meter_1_w));
@ -915,10 +915,10 @@ MACHINE_CONFIG_START(turbo_state::subroc3d)
m_i8255_1->out_pb_callback().set(FUNC(turbo_state::subroc3d_sound_b_w));
m_i8255_1->out_pc_callback().set(FUNC(turbo_state::subroc3d_sound_c_w));
MCFG_DEVICE_ADD("i8279", I8279, MASTER_CLOCK/4) // unknown clock
MCFG_I8279_OUT_SL_CB(WRITE8(*this, turbo_state, scanlines_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, turbo_state, digit_w)) // display A&B
MCFG_I8279_IN_RL_CB(IOPORT("DSW1")) // kbd RL lines
i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4)); // unknown clock
kbdc.out_sl_callback().set(FUNC(turbo_state::scanlines_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(turbo_state::digit_w)); // display A&B
kbdc.in_rl_callback().set_ioport("DSW1"); // kbd RL lines
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_turbo)
@ -963,10 +963,10 @@ MACHINE_CONFIG_START(turbo_state::buckrog)
m_i8255_1->out_pb_callback().set(FUNC(turbo_state::buckrog_sound_b_w));
m_i8255_1->out_pc_callback().set(FUNC(turbo_state::buckrog_ppi1c_w));
MCFG_DEVICE_ADD("i8279", I8279, MASTER_CLOCK/4) // unknown clock
MCFG_I8279_OUT_SL_CB(WRITE8(*this, turbo_state, scanlines_w)) // scan SL lines
MCFG_I8279_OUT_DISP_CB(WRITE8(*this, turbo_state, digit_w)) // display A&B
MCFG_I8279_IN_RL_CB(IOPORT("DSW1")) // kbd RL lines
i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4)); // unknown clock
kbdc.out_sl_callback().set(FUNC(turbo_state::scanlines_w)); // scan SL lines
kbdc.out_disp_callback().set(FUNC(turbo_state::digit_w)); // display A&B
kbdc.in_rl_callback().set_ioport("DSW1"); // kbd RL lines
/* video hardware */
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_turbo)