コード例 #1
0
ファイル: isbc8010.cpp プロジェクト: SailorSat/cabmame
DEVICE_INPUT_DEFAULTS_END

void isbc8010_state::isbc8010(machine_config &config)
{
	/* basic machine hardware */
	I8080A(config, m_maincpu, XTAL(18'432'000)/9);
	m_maincpu->set_addrmap(AS_PROGRAM, &isbc8010_state::isbc8010_mem);
	m_maincpu->set_addrmap(AS_IO, &isbc8010_state::isbc8010_io);

	I8251(config, m_usart, 0);
	m_usart->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
	m_usart->dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
	m_usart->rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts));

	I8255A(config, m_ppi_0);
	I8255A(config, m_ppi_1);

	RS232_PORT(config, m_rs232, default_rs232_devices, "terminal");
	m_rs232->rxd_handler().set(m_usart, FUNC(i8251_device::write_rxd));
	m_rs232->dsr_handler().set(m_usart, FUNC(i8251_device::write_dsr));
	m_rs232->cts_handler().set(m_usart, FUNC(i8251_device::write_cts));
	m_rs232->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal));

	clock_device &usart_clock(CLOCK(config, "usart_clock", XTAL(18'432'000)/60));
	usart_clock.signal_handler().set(FUNC(isbc8010_state::usart_clock_tick));

	/* video hardware */
	// 96364 crt controller

//  screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
//  screen.set_refresh_hz(60);
	/* Video is blanked for 70 out of 262 scanlines per refresh cycle.
	   Each scanline is composed of 65 character times, 40 of which
	   are visible, and each character time is 7 dot times; a dot time
	   is 2 cycles of the fundamental 14.31818 MHz oscillator.  The
	   total blanking time is about 4450 microseconds. */
//  screen.set_vblank_time(ATTOSECONDS_IN_USEC((int) (70 * 65 * 7 * 2 / 14.31818)));
	/* It would be nice if we could implement some sort of display
	   overscan here. */
//  screen.set_size(40 * 7, 24 * 8);
//  screen.set_visarea(0, 40 * 7 - 1, 0, 24 * 8 - 1);
//  screen.set_screen_update(FUNC(sdk80_state::screen_update));
//  screen.set_palette("palette");

//  GFXDECODE(config, "gfxdecode", "palette", gfx_sdk80);

//  PALETTE(config, "palette", palette_device::MONOCHROME);

	// Video board UART
//  ay31015_device &hd6402(AY31015(config, "hd6402", 0));
//  MCFG_AY31015_TX_CLOCK(( XTAL(16'000'000) / 16 ) / 256)
//  MCFG_AY31015_RX_CLOCK(( XTAL(16'000'000) / 16 ) / 256)
//  hd6402.read_si_callback().set(FUNC(sdk80_state::nascom1_hd6402_si));
//  hd6402.write_so_callback().set(FUNC(sdk80_state::nascom1_hd6402_so));

//	clock_device &uart_clock(CLOCK(config, "uart_clock", (XTAL(16'000'000) / 16) / 256));
//	uart_clock.signal_handler().set("hd6402", FUNC(ay31015_device::write_tcp));
//	uart_clock.signal_handler().append("hd6402", FUNC(ay31015_device::write_rcp));

	/* Devices */
//  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);
}