summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-10-08 20:12:53 -0400
committer AJR <ajrhacker@users.noreply.github.com>2019-10-08 20:13:03 -0400
commitfe1178a819565aaa691adf1880ba5eb6b5f64545 (patch)
treebcf093853d052ea2b29b9d645c85715b55c3353b
parent10f380468f8c9b8d44635dd52cc207c1a7dadce8 (diff)
swtpc8212: Split into separate driver (nw)
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/emu/xtal.cpp1
-rw-r--r--src/mame/drivers/swtpc8212.cpp124
-rw-r--r--src/mame/drivers/terminal.cpp11
-rw-r--r--src/mame/mame.lst4
-rw-r--r--src/mame/mess.flt1
6 files changed, 130 insertions, 12 deletions
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<cpu_device> m_maincpu;
+ required_region_ptr<u8> 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