From fe1178a819565aaa691adf1880ba5eb6b5f64545 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 8 Oct 2019 20:12:53 -0400 Subject: [PATCH] swtpc8212: Split into separate driver (nw) --- scripts/target/mame/mess.lua | 1 + src/emu/xtal.cpp | 1 + src/mame/drivers/swtpc8212.cpp | 124 +++++++++++++++++++++++++++++++++ src/mame/drivers/terminal.cpp | 11 --- src/mame/mame.lst | 4 +- src/mame/mess.flt | 1 + 6 files changed, 130 insertions(+), 12 deletions(-) create mode 100644 src/mame/drivers/swtpc8212.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index e9aa05c8078..6a2af2aa2c3 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3389,6 +3389,7 @@ files { MAME_DIR .. "src/mame/drivers/swtpc09.cpp", MAME_DIR .. "src/mame/includes/swtpc09.h", MAME_DIR .. "src/mame/machine/swtpc09.cpp", + MAME_DIR .. "src/mame/drivers/swtpc8212.cpp", } createMESSProjects(_target, _subtarget, "synertek") diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp index 172b032fe4d..36acebccb34 100644 --- a/src/emu/xtal.cpp +++ b/src/emu/xtal.cpp @@ -243,6 +243,7 @@ const double XTAL::known_xtals[] = { 16'934'400, /* 16.9344_MHz_XTAL Usually used to drive 90's Yamaha OPL/FM chips (44100 * 384) */ 17'010'000, /* 17.01_MHz_XTAL Epic 14E */ 17'064'000, /* 17.064_MHz_XTAL Memorex 1377 */ + 17'074'800, /* 17.0748_MHz_XTAL SWTPC 8212 */ 17'350'000, /* 17.35_MHz_XTAL ITT Courier 1700 */ 17'360'000, /* 17.36_MHz_XTAL OMTI Series 10 SCSI controller */ 17'430'000, /* 17.43_MHz_XTAL Videx Videoterm */ diff --git a/src/mame/drivers/swtpc8212.cpp b/src/mame/drivers/swtpc8212.cpp new file mode 100644 index 00000000000..cb648e08b09 --- /dev/null +++ b/src/mame/drivers/swtpc8212.cpp @@ -0,0 +1,124 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/**************************************************************************** + + Skeleton driver for Southwest Technical Products video terminal. + +****************************************************************************/ + +#include "emu.h" +//#include "bus/rs232/rs232.h" +#include "cpu/m6800/m6800.h" +#include "machine/6821pia.h" +#include "machine/input_merger.h" +#include "machine/ins8250.h" +#include "video/mc6845.h" +#include "screen.h" + + +class swtpc8212_state : public driver_device +{ +public: + swtpc8212_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_chargen(*this, "chargen") + { + } + + void swtpc8212(machine_config &mconfig); + +private: + MC6845_UPDATE_ROW(update_row); + + void mem_map(address_map &map); + + required_device m_maincpu; + required_region_ptr m_chargen; +}; + +MC6845_UPDATE_ROW(swtpc8212_state::update_row) +{ +} + + +void swtpc8212_state::mem_map(address_map &map) +{ + map(0x0000, 0x007f).ram(); + map(0x0080, 0x0083).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x0088, 0x0088).w("crtc", FUNC(mc6845_device::address_w)); + map(0x0089, 0x0089).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); + map(0x0090, 0x0097).rw("uart", FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); + map(0x0098, 0x009b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); + map(0x4800, 0x4fff).ram(); + map(0xb800, 0xbfff).rom().region("program", 0); + map(0xc000, 0xc7ff).mirror(0x3800).rom().region("program", 0x800); +} + + +static INPUT_PORTS_START(swtpc8212) + PORT_START("DSW") + PORT_DIPNAME(0x01, 0x00, DEF_STR(Unknown)) + PORT_DIPSETTING(0x01, DEF_STR(Off)) + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPNAME(0x02, 0x00, DEF_STR(Unknown)) + PORT_DIPSETTING(0x02, DEF_STR(Off)) + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPNAME(0x04, 0x00, DEF_STR(Unknown)) + PORT_DIPSETTING(0x04, DEF_STR(Off)) + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPNAME(0x08, 0x00, DEF_STR(Unknown)) + PORT_DIPSETTING(0x08, DEF_STR(Off)) + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPNAME(0x10, 0x00, DEF_STR(Unknown)) + PORT_DIPSETTING(0x10, DEF_STR(Off)) + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPNAME(0x20, 0x00, DEF_STR(Unknown)) + PORT_DIPSETTING(0x20, DEF_STR(Off)) + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPNAME(0x40, 0x00, DEF_STR(Unknown)) + PORT_DIPSETTING(0x40, DEF_STR(Off)) + PORT_DIPSETTING(0x00, DEF_STR(On)) + PORT_DIPNAME(0x80, 0x00, DEF_STR(Unknown)) + PORT_DIPSETTING(0x80, DEF_STR(Off)) + PORT_DIPSETTING(0x00, DEF_STR(On)) +INPUT_PORTS_END + +void swtpc8212_state::swtpc8212(machine_config &config) +{ + M6802(config, m_maincpu, 1.8432_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &swtpc8212_state::mem_map); + + INPUT_MERGER_ANY_HIGH(config, "mainirq").output_handler().set_inputline(m_maincpu, M6802_IRQ_LINE); + + pia6821_device &pia0(PIA6821(config, "pia0")); + pia0.irqa_handler().set("mainirq", FUNC(input_merger_device::in_w<0>)); + pia0.irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<1>)); + + PIA6821(config, "pia1"); + + ins8250_device &uart(INS8250(config, "uart", 1.8432_MHz_XTAL)); + uart.out_int_callback().set("mainirq", FUNC(input_merger_device::in_w<2>)); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(17.0748_MHz_XTAL, 918, 0, 738, 310, 0, 280); + screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update)); + + mc6845_device &crtc(MC6845(config, "crtc", 17.0748_MHz_XTAL / 9)); + crtc.set_char_width(9); + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_update_row_callback(FUNC(swtpc8212_state::update_row), this); +} + + +ROM_START( swtpc8212 ) // MC6802P, 2xMC6821P, INS8250N, MCM66750, MC6845P, bank of 8 dips, crystals 17.0748 (video), 1.8432 (cpu/uart). On the back is a 25-pin RS-232 port, and a 25-pin printer port. + ROM_REGION( 0x1000, "program", 0 ) + ROM_LOAD( "8224g_ver.1.1_6oct80.ic1", 0x0000, 0x0800, CRC(7d7f3c21) SHA1(f7e6e20b36a1c724a4e348bc784d0b7b5fb462a3) ) + ROM_LOAD( "8224g_ver.1.1_6oct80.ic2", 0x0800, 0x0800, CRC(2b118c22) SHA1(5fa031c834c7c582d5715764941499fcef51f477) ) + + ROM_REGION( 0x0800, "chargen", 0 ) + ROM_LOAD( "grafix_8x12_22aug80.bin", 0x0000, 0x0800, CRC(a525ed65) SHA1(813d2e85ddb258c5b032b959e695ad33200cbcc4) ) +ROM_END + +COMP(1980, swtpc8212, 0, 0, swtpc8212, swtpc8212, swtpc8212_state, empty_init, "Southwest Technical Products", "SWTPC 8212 Video Terminal", MACHINE_IS_SKELETON) diff --git a/src/mame/drivers/terminal.cpp b/src/mame/drivers/terminal.cpp index c4328586587..618e97de484 100644 --- a/src/mame/drivers/terminal.cpp +++ b/src/mame/drivers/terminal.cpp @@ -87,16 +87,6 @@ ROM_START( 7951om ) // TTL (no cpu) // 1k x 6bits display ram 64-characters uppe ROM_END -ROM_START( swtpc8212 ) // MC6802P, 2xMC6821P, INS8250N, MCM66750, MC6845P, bank of 8 dips, crystals 17.0748 (video), 1.8432 (cpu/uart). On the back is a 25-pin RS-232 port, and a 25-pin printer port. - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "8224g_ver.1.1_6oct80.ic1", 0xf000, 0x0800, CRC(7d7f3c21) SHA1(f7e6e20b36a1c724a4e348bc784d0b7b5fb462a3) ) - ROM_LOAD( "8224g_ver.1.1_6oct80.ic2", 0xf800, 0x0800, CRC(2b118c22) SHA1(5fa031c834c7c582d5715764941499fcef51f477) ) - - ROM_REGION( 0x0800, "chargen", 0 ) - ROM_LOAD( "grafix_8x12_22aug80.bin", 0x0000, 0x0800, CRC(a525ed65) SHA1(813d2e85ddb258c5b032b959e695ad33200cbcc4) ) -ROM_END - - ROM_START( teleguide ) // order unknown // i8051, i8031 (layout very similar to loewed) // 64k ram + battery-backed nvram // b&w ROM_REGION( 0x38000, "maincpu", 0 ) ROM_LOAD( "cardreader_17044-068_349-1163.bin", 0x00000, 0x10000, CRC(3c980c0d) SHA1(9904ffd283a11defbe3daf2cb9029bcead8b02d0) ) @@ -112,5 +102,4 @@ COMP( 1991, alcat258, 0, 0, terminal, terminal, terminal_state, empty COMP( 1992, loewed, 0, 0, terminal, terminal, terminal_state, empty_init, "Loewe", "Multitel D", MACHINE_IS_SKELETON ) COMP( 1988, loewe715, 0, 0, terminal, terminal, terminal_state, empty_init, "Loewe", "Multicom 715L", MACHINE_IS_SKELETON ) COMP( 1987, 7951om, 0, 0, terminal, terminal, terminal_state, empty_init, "Mera-Elzab", "7951om", MACHINE_IS_SKELETON ) -COMP( 1980, swtpc8212, 0, 0, terminal, terminal, terminal_state, empty_init, "Southwest Technical Products Corporation", "SWTPC 8212", MACHINE_IS_SKELETON ) COMP( 1992, teleguide, 0, 0, terminal, terminal, terminal_state, empty_init, "Loewe / Televerket", "Teleguide", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 5e73fa378cb..d70b545a978 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -37192,6 +37192,9 @@ swtpc09d3 // S09, DMF3 Floppy UNIBUG U3 rom - UniFLEX U3 swtpc09i // S09, DC4 Floppy + PIA IDE SBUG rom - FLEX swtpc09u // S09, DMF2 Floppy UNIBUG rom - UniFLEX +@source:swtpc8212.cpp +swtpc8212 // + @source:swyft.cpp swyft // @@ -37993,7 +37996,6 @@ t4490 // Terco 4490 Mill CNC Control (c) 1986 alcat258 // loewe715 // loewed // -swtpc8212 // teleguide // @source:terracre.cpp diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 1804bde49e1..90a53f57d13 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -790,6 +790,7 @@ svision.cpp svmu.cpp swtpc.cpp swtpc09.cpp +swtpc8212.cpp swyft.cpp sym1.cpp symbolics.cpp