void cm1800_state::cm1800(machine_config &config) { /* basic machine hardware */ I8080(config, m_maincpu, XTAL(2'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &cm1800_state::mem_map); m_maincpu->set_addrmap(AS_IO, &cm1800_state::io_map); /* video hardware */ AY51013(config, m_uart); // exact uart type is unknown m_uart->read_si_callback().set("rs232", FUNC(rs232_port_device::rxd_r)); m_uart->write_so_callback().set("rs232", FUNC(rs232_port_device::write_txd)); m_uart->set_auto_rdav(true); clock_device &uart_clock(CLOCK(config, "uart_clock", 153600)); uart_clock.signal_handler().set(m_uart, FUNC(ay31015_device::write_tcp)); uart_clock.signal_handler().append(m_uart, FUNC(ay31015_device::write_rcp)); RS232_PORT(config, "rs232", default_rs232_devices, "terminal"); }
void altair_state::altair(machine_config &config) { /* basic machine hardware */ I8080(config, m_maincpu, 2_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &altair_state::mem_map); m_maincpu->set_addrmap(AS_IO, &altair_state::io_map); /* video hardware */ acia6850_device &acia(ACIA6850(config, "acia", 0)); acia.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); acia.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set("acia", FUNC(acia6850_device::write_rxd)); rs232.dcd_handler().set("acia", FUNC(acia6850_device::write_dcd)); rs232.cts_handler().set("acia", FUNC(acia6850_device::write_cts)); clock_device &uart_clock(CLOCK(config, "uart_clock", 153600)); // TODO: this is set using jumpers S3/S2/S1/S0 uart_clock.signal_handler().set("acia", FUNC(acia6850_device::write_txc)); uart_clock.signal_handler().append("acia", FUNC(acia6850_device::write_rxc)); /* quickload */ QUICKLOAD(config, "quickload", 0).set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(altair_state, altair), this), "bin", 0); }
/* Setup any dynamic params in the uart desc */ int __init cpm_uart_init_portdesc(void) { cpm8xx_t *cpmp = (cpm8xx_t *)immr_map(im_cpm); pr_debug("CPM uart[-]:init portdesc\n"); /* Check if we have called this yet. This may happen if early kgdb breakpoint is on */ if(cpm_uart_nr) return 0; cpm_uart_nr = 0; #ifdef CONFIG_SERIAL_CPM_SMC1 cpm_uart_ports[UART_SMC1].smcp = &cpmp->cp_smc[0]; /* * Is SMC1 being relocated? */ # ifdef CONFIG_I2C_SPI_SMC1_UCODE_PATCH cpm_uart_ports[UART_SMC1].smcup = (smc_uart_t *) & cpmp->cp_dparam[0x3C0]; # else cpm_uart_ports[UART_SMC1].smcup = (smc_uart_t *) & cpmp->cp_dparam[PROFF_SMC1]; # endif cpm_uart_ports[UART_SMC1].port.mapbase = (unsigned long)&cpmp->cp_smc[0]; cpm_uart_ports[UART_SMC1].smcp->smc_smcm |= (SMCM_RX | SMCM_TX); cpm_uart_ports[UART_SMC1].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); cpm_uart_ports[UART_SMC1].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SMC1; #endif #ifdef CONFIG_SERIAL_CPM_SMC2 cpm_uart_ports[UART_SMC2].smcp = &cpmp->cp_smc[1]; cpm_uart_ports[UART_SMC2].smcup = (smc_uart_t *) & cpmp->cp_dparam[PROFF_SMC2]; cpm_uart_ports[UART_SMC2].port.mapbase = (unsigned long)&cpmp->cp_smc[1]; cpm_uart_ports[UART_SMC2].smcp->smc_smcm |= (SMCM_RX | SMCM_TX); cpm_uart_ports[UART_SMC2].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); cpm_uart_ports[UART_SMC2].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SMC2; #endif #ifdef CONFIG_SERIAL_CPM_SCC1 cpm_uart_ports[UART_SCC1].sccp = &cpmp->cp_scc[0]; cpm_uart_ports[UART_SCC1].sccup = (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC1]; cpm_uart_ports[UART_SCC1].port.mapbase = (unsigned long)&cpmp->cp_scc[0]; cpm_uart_ports[UART_SCC1].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC1].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC1].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC1; #endif #ifdef CONFIG_SERIAL_CPM_SCC2 cpm_uart_ports[UART_SCC2].sccp = &cpmp->cp_scc[1]; cpm_uart_ports[UART_SCC2].sccup = (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC2]; cpm_uart_ports[UART_SCC2].port.mapbase = (unsigned long)&cpmp->cp_scc[1]; cpm_uart_ports[UART_SCC2].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC2].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC2].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC2; #endif #ifdef CONFIG_SERIAL_CPM_SCC3 cpm_uart_ports[UART_SCC3].sccp = &cpmp->cp_scc[2]; cpm_uart_ports[UART_SCC3].sccup = (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC3]; cpm_uart_ports[UART_SCC3].port.mapbase = (unsigned long)&cpmp->cp_scc[2]; cpm_uart_ports[UART_SCC3].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC3].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC3].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC3; #endif #ifdef CONFIG_SERIAL_CPM_SCC4 cpm_uart_ports[UART_SCC4].sccp = &cpmp->cp_scc[3]; cpm_uart_ports[UART_SCC4].sccup = (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC4]; cpm_uart_ports[UART_SCC4].port.mapbase = (unsigned long)&cpmp->cp_scc[3]; cpm_uart_ports[UART_SCC4].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC4].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC4].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC4; #endif return 0; }
/* Setup any dynamic params in the uart desc */ int cpm_uart_init_portdesc(void) { #if defined(CONFIG_SERIAL_CPM_SMC1) || defined(CONFIG_SERIAL_CPM_SMC2) u16 *addr; #endif pr_debug("CPM uart[-]:init portdesc\n"); cpm_uart_nr = 0; #ifdef CONFIG_SERIAL_CPM_SMC1 cpm_uart_ports[UART_SMC1].smcp = (smc_t *) cpm2_map(im_smc[0]); cpm_uart_ports[UART_SMC1].port.mapbase = (unsigned long)cpm_uart_ports[UART_SMC1].smcp; cpm_uart_ports[UART_SMC1].smcup = (smc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SMC1], PROFF_SMC_SIZE); addr = (u16 *)cpm2_map_size(im_dprambase[PROFF_SMC1_BASE], 2); *addr = PROFF_SMC1; cpm2_unmap(addr); cpm_uart_ports[UART_SMC1].smcp->smc_smcm |= (SMCM_RX | SMCM_TX); cpm_uart_ports[UART_SMC1].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); cpm_uart_ports[UART_SMC1].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SMC1; #endif #ifdef CONFIG_SERIAL_CPM_SMC2 cpm_uart_ports[UART_SMC2].smcp = (smc_t *) cpm2_map(im_smc[1]); cpm_uart_ports[UART_SMC2].port.mapbase = (unsigned long)cpm_uart_ports[UART_SMC2].smcp; cpm_uart_ports[UART_SMC2].smcup = (smc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SMC2], PROFF_SMC_SIZE); addr = (u16 *)cpm2_map_size(im_dprambase[PROFF_SMC2_BASE], 2); *addr = PROFF_SMC2; cpm2_unmap(addr); cpm_uart_ports[UART_SMC2].smcp->smc_smcm |= (SMCM_RX | SMCM_TX); cpm_uart_ports[UART_SMC2].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); cpm_uart_ports[UART_SMC2].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SMC2; #endif #ifdef CONFIG_SERIAL_CPM_SCC1 cpm_uart_ports[UART_SCC1].sccp = (scc_t *) cpm2_map(im_scc[0]); cpm_uart_ports[UART_SCC1].port.mapbase = (unsigned long)cpm_uart_ports[UART_SCC1].sccp; cpm_uart_ports[UART_SCC1].sccup = (scc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SCC1], PROFF_SCC_SIZE); cpm_uart_ports[UART_SCC1].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC1].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC1].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC1; #endif #ifdef CONFIG_SERIAL_CPM_SCC2 cpm_uart_ports[UART_SCC2].sccp = (scc_t *) cpm2_map(im_scc[1]); cpm_uart_ports[UART_SCC2].port.mapbase = (unsigned long)cpm_uart_ports[UART_SCC2].sccp; cpm_uart_ports[UART_SCC2].sccup = (scc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SCC2], PROFF_SCC_SIZE); cpm_uart_ports[UART_SCC2].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC2].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC2].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC2; #endif #ifdef CONFIG_SERIAL_CPM_SCC3 cpm_uart_ports[UART_SCC3].sccp = (scc_t *) cpm2_map(im_scc[2]); cpm_uart_ports[UART_SCC3].port.mapbase = (unsigned long)cpm_uart_ports[UART_SCC3].sccp; cpm_uart_ports[UART_SCC3].sccup = (scc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SCC3], PROFF_SCC_SIZE); cpm_uart_ports[UART_SCC3].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC3].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC3].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC3; #endif #ifdef CONFIG_SERIAL_CPM_SCC4 cpm_uart_ports[UART_SCC4].sccp = (scc_t *) cpm2_map(im_scc[3]); cpm_uart_ports[UART_SCC4].port.mapbase = (unsigned long)cpm_uart_ports[UART_SCC4].sccp; cpm_uart_ports[UART_SCC4].sccup = (scc_uart_t *) cpm2_map_size(im_dprambase[PROFF_SCC4], PROFF_SCC_SIZE); cpm_uart_ports[UART_SCC4].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC4].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC4].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC4; #endif return 0; }
/* Setup any dynamic params in the uart desc */ int cpm_uart_init_portdesc(void) { pr_debug("CPM uart[-]:init portdesc\n"); cpm_uart_nr = 0; #ifdef CONFIG_SERIAL_CPM_SMC1 cpm_uart_ports[UART_SMC1].smcp = &cpmp->cp_smc[0]; /* * Is SMC1 being relocated? */ # ifdef CONFIG_I2C_SPI_SMC1_UCODE_PATCH cpm_uart_ports[UART_SMC1].smcup = (smc_uart_t *) & cpmp->cp_dparam[0x3C0]; # else cpm_uart_ports[UART_SMC1].smcup = (smc_uart_t *) & cpmp->cp_dparam[PROFF_SMC1]; # endif cpm_uart_ports[UART_SMC1].port.mapbase = (unsigned long)&cpmp->cp_smc[0]; cpm_uart_ports[UART_SMC1].smcp->smc_smcm |= (SMCM_RX | SMCM_TX); cpm_uart_ports[UART_SMC1].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); cpm_uart_ports[UART_SMC1].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SMC1; #endif #ifdef CONFIG_SERIAL_CPM_SMC2 cpm_uart_ports[UART_SMC2].smcp = &cpmp->cp_smc[1]; cpm_uart_ports[UART_SMC2].smcup = (smc_uart_t *) & cpmp->cp_dparam[PROFF_SMC2]; cpm_uart_ports[UART_SMC2].port.mapbase = (unsigned long)&cpmp->cp_smc[1]; cpm_uart_ports[UART_SMC2].smcp->smc_smcm |= (SMCM_RX | SMCM_TX); cpm_uart_ports[UART_SMC2].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); cpm_uart_ports[UART_SMC2].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SMC2; #endif #ifdef CONFIG_SERIAL_CPM_SCC1 cpm_uart_ports[UART_SCC1].sccp = &cpmp->cp_scc[0]; cpm_uart_ports[UART_SCC1].sccup = (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC1]; cpm_uart_ports[UART_SCC1].port.mapbase = (unsigned long)&cpmp->cp_scc[0]; cpm_uart_ports[UART_SCC1].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC1].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC1].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC1; #endif #ifdef CONFIG_SERIAL_CPM_SCC2 cpm_uart_ports[UART_SCC2].sccp = &cpmp->cp_scc[1]; cpm_uart_ports[UART_SCC2].sccup = (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC2]; cpm_uart_ports[UART_SCC2].port.mapbase = (unsigned long)&cpmp->cp_scc[1]; cpm_uart_ports[UART_SCC2].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC2].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC2].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC2; #endif #ifdef CONFIG_SERIAL_CPM_SCC3 cpm_uart_ports[UART_SCC3].sccp = &cpmp->cp_scc[2]; cpm_uart_ports[UART_SCC3].sccup = (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC3]; cpm_uart_ports[UART_SCC3].port.mapbase = (unsigned long)&cpmp->cp_scc[2]; cpm_uart_ports[UART_SCC3].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC3].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC3].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC3; #endif #ifdef CONFIG_SERIAL_CPM_SCC4 cpm_uart_ports[UART_SCC4].sccp = &cpmp->cp_scc[3]; cpm_uart_ports[UART_SCC4].sccup = (scc_uart_t *) & cpmp->cp_dparam[PROFF_SCC4]; cpm_uart_ports[UART_SCC4].port.mapbase = (unsigned long)&cpmp->cp_scc[3]; cpm_uart_ports[UART_SCC4].sccp->scc_sccm &= ~(UART_SCCM_TX | UART_SCCM_RX); cpm_uart_ports[UART_SCC4].sccp->scc_gsmrl &= ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); cpm_uart_ports[UART_SCC4].port.uartclk = uart_clock(); cpm_uart_port_map[cpm_uart_nr++] = UART_SCC4; #endif return 0; }