summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-03-20 16:47:30 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-03-20 16:48:17 -0400
commitc4aaf1104e6c24dd6e2feb54bd3bce1f00c15b62 (patch)
tree2ab3536793fe96343edc4d7c16960136cdf42593
parente6d9db4f5f2fd3bdbb51be9b599287cb1c427903 (diff)
terminals.cpp: Split each remaining machine (aaa, qvt70, tv955, tv965) into its own skeleton driver (nw)
-rw-r--r--src/mame/drivers/aaa.cpp59
-rw-r--r--src/mame/drivers/qvt70.cpp53
-rw-r--r--src/mame/drivers/tv955.cpp145
-rw-r--r--src/mame/drivers/tv965.cpp80
4 files changed, 337 insertions, 0 deletions
diff --git a/src/mame/drivers/aaa.cpp b/src/mame/drivers/aaa.cpp
new file mode 100644
index 00000000000..b4d683a7798
--- /dev/null
+++ b/src/mame/drivers/aaa.cpp
@@ -0,0 +1,59 @@
+// license:BSD-3-Clause
+// copyright-holders:
+/***********************************************************************************************************************************
+
+Skeleton driver for Ann Arbor Ambassador terminal.
+
+************************************************************************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+
+class aaa_state : public driver_device
+{
+public:
+ aaa_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_p_chargen(*this, "chargen")
+ { }
+
+ void aaa(machine_config &config);
+ void mem_map(address_map &map);
+private:
+ required_device<cpu_device> m_maincpu;
+ required_region_ptr<u8> m_p_chargen;
+};
+
+void aaa_state::mem_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom().region("maincpu", 0);
+}
+
+static INPUT_PORTS_START( aaa )
+INPUT_PORTS_END
+
+MACHINE_CONFIG_START(aaa_state::aaa)
+ MCFG_CPU_ADD("maincpu", Z80, 2'000'000)
+ MCFG_CPU_PROGRAM_MAP(mem_map)
+MACHINE_CONFIG_END
+
+/**************************************************************************************************************
+
+Ann Arbor Ambassador.
+Chips: Z80A, M58725P (16k RAM), 2x SCN2651C, nvram, button-battery
+Crystals: 18.414, 6.0688
+
+***************************************************************************************************************/
+
+ROM_START( aaa )
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD( "459_1.bin", 0x0000, 0x1000, CRC(55fb3e3b) SHA1(349cd257b1468827e1b389be7c989d0e4a13a5f1) )
+ ROM_LOAD( "459_3.bin", 0x1000, 0x1000, CRC(e1e84ca4) SHA1(42dc5f4211beee79178f0c03bb45c66833119eae) )
+ ROM_LOAD( "459_4.bin", 0x8000, 0x2000, CRC(4038aa89) SHA1(caf33c1f87aa396860324b9c73b35e4221f03d2e) )
+
+ ROM_REGION(0x1000, "chargen", 0)
+ ROM_LOAD( "202510b.bin", 0x0000, 0x1000, CRC(deda4aa4) SHA1(0bce5a8dc260ba51f3e431d8da408eac1f41acf7) )
+ROM_END
+
+COMP( 1981, aaa, 0, 0, aaa, aaa, aaa_state, 0, "Ann Arbor", "Ambassador", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/qvt70.cpp b/src/mame/drivers/qvt70.cpp
new file mode 100644
index 00000000000..802b8af3bfb
--- /dev/null
+++ b/src/mame/drivers/qvt70.cpp
@@ -0,0 +1,53 @@
+// license:BSD-3-Clause
+// copyright-holders:
+/***********************************************************************************************************************************
+
+Skeleton driver for Qume QVT-70 terminal.
+
+************************************************************************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+
+class qvt70_state : public driver_device
+{
+public:
+ qvt70_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ { }
+
+ void qvt70(machine_config &config);
+ void mem_map(address_map &map);
+private:
+ required_device<cpu_device> m_maincpu;
+};
+
+void qvt70_state::mem_map(address_map &map)
+{
+ map(0x0000, 0xffff).rom().region("maincpu", 0);
+}
+
+static INPUT_PORTS_START( qvt70 )
+INPUT_PORTS_END
+
+MACHINE_CONFIG_START(qvt70_state::qvt70)
+ MCFG_CPU_ADD("maincpu", Z80, 2'000'000)
+ MCFG_CPU_PROGRAM_MAP(mem_map)
+MACHINE_CONFIG_END
+
+/**************************************************************************************************************
+
+Qume QVT-70.
+Chips: Z80, Z80 DART, 5x CXK5864CM-70LL/W242575-70LL, 801000-02, 303489-01, DS1231, Button battery, Beeper
+Crystals: unreadable
+
+***************************************************************************************************************/
+
+ROM_START( qvt70 )
+ ROM_REGION(0x30000, "maincpu", 0)
+ ROM_LOAD( "251513-04_revj.u12", 0x00000, 0x10000, CRC(3960bbd5) SHA1(9db306cef09be21ff43c081ebe11e9b46f617861) )
+ ROM_LOAD( "251513-03_revj.u11", 0x10000, 0x20000, CRC(c56796fe) SHA1(afe024ff93d5e75dc18041219d61e1a22fc6d883) )
+ROM_END
+
+COMP( 1992, qvt70, 0, 0, qvt70, qvt70, qvt70_state, 0, "Qume", "QVT-70", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/tv955.cpp b/src/mame/drivers/tv955.cpp
new file mode 100644
index 00000000000..0fd6ea2db60
--- /dev/null
+++ b/src/mame/drivers/tv955.cpp
@@ -0,0 +1,145 @@
+// license:BSD-3-Clause
+// copyright-holders:
+/***********************************************************************************************************************************
+
+Skeleton driver for "third generation" TeleVideo terminals (905, 955, 9220).
+
+************************************************************************************************************************************/
+
+#include "emu.h"
+//#include "bus/rs232/rs232.h"
+#include "cpu/m6502/m65c02.h"
+#include "cpu/mcs48/mcs48.h"
+#include "machine/input_merger.h"
+#include "machine/mos6551.h"
+#include "machine/nvram.h"
+#include "video/scn2674.h"
+#include "screen.h"
+
+class tv955_state : public driver_device
+{
+public:
+ tv955_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_crtc(*this, "crtc")
+ , m_hostuart(*this, "hostuart")
+ , m_p_chargen(*this, "chargen")
+ { }
+
+ void tv955(machine_config &config);
+private:
+ SCN2674_DRAW_CHARACTER_MEMBER(draw_character);
+
+ DECLARE_WRITE8_MEMBER(control_latch_w);
+
+ void mem_map(address_map &map);
+
+ required_device<cpu_device> m_maincpu;
+ required_device<scn2674_device> m_crtc;
+ required_device<mos6551_device> m_hostuart;
+ required_region_ptr<u8> m_p_chargen;
+};
+
+SCN2674_DRAW_CHARACTER_MEMBER(tv955_state::draw_character)
+{
+}
+
+WRITE8_MEMBER(tv955_state::control_latch_w)
+{
+ m_hostuart->set_xtal(BIT(data, 1) ? 3.6864_MHz_XTAL : 3.6864_MHz_XTAL / 2);
+
+ // CPU clock is inverted relative to character clock (and divided by two for 132-column mode)
+ if (BIT(data, 7))
+ {
+ // 132-column mode
+ m_maincpu->set_unscaled_clock(31.684_MHz_XTAL / 18);
+ m_crtc->set_unscaled_clock(31.684_MHz_XTAL / 9);
+ }
+ else
+ {
+ // 80-column mode
+ m_maincpu->set_unscaled_clock(19.3396_MHz_XTAL / 9);
+ m_crtc->set_unscaled_clock(19.3396_MHz_XTAL / 9);
+ }
+}
+
+void tv955_state::mem_map(address_map &map)
+{
+ // verified from maintenance manual (131968-00-C)
+ map(0x0000, 0x07ff).mirror(0x0800).ram().share("nvram");
+ map(0x1100, 0x1100).mirror(0x00ff).w(this, FUNC(tv955_state::control_latch_w));
+ map(0x1200, 0x1203).mirror(0x00fc).rw("keybuart", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x1400, 0x1403).mirror(0x00fc).rw("printuart", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x1800, 0x1803).mirror(0x00fc).rw("hostuart", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
+ map(0x2000, 0x2007).mirror(0x0ff8).rw("crtc", FUNC(scn2674_device::read), FUNC(scn2674_device::write));
+ map(0x3000, 0x3fff).rom().region("option", 0);
+ map(0x4000, 0x7fff).ram().share("attrram");
+ map(0x8000, 0xbfff).ram().share("charram");
+ map(0xc000, 0xffff).rom().region("system", 0);
+}
+
+static INPUT_PORTS_START( tv955 )
+INPUT_PORTS_END
+
+MACHINE_CONFIG_START(tv955_state::tv955)
+ MCFG_CPU_ADD("maincpu", M65C02, 19.3396_MHz_XTAL / 9)
+ MCFG_CPU_PROGRAM_MAP(mem_map)
+
+ MCFG_INPUT_MERGER_ANY_HIGH("mainirq")
+ MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("maincpu", m6502_device::IRQ_LINE))
+
+ MCFG_CPU_ADD("keyboard", I8049, 5.7143_MHz_XTAL)
+
+ MCFG_NVRAM_ADD_0FILL("nvram") // HM6116LP-4 + 3.2V battery
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(19.3396_MHz_XTAL, 846, 0, 720, 381, 0, 364)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", scn2674_device, screen_update)
+
+ MCFG_DEVICE_ADD("crtc", SCN2674, 19.3396_MHz_XTAL / 9)
+ // Character clock is 31.084_MHz_XTAL / 9 in 132-column mode
+ // Character cells are 9 pixels wide by 14 pixels high
+ MCFG_SCN2674_CHARACTER_WIDTH(9)
+ MCFG_SCN2674_DRAW_CHARACTER_CALLBACK_OWNER(tv955_state, draw_character)
+ MCFG_SCN2674_INTR_CALLBACK(INPUTLINE("maincpu", m6502_device::NMI_LINE))
+ MCFG_VIDEO_SET_SCREEN("screen")
+
+ MCFG_DEVICE_ADD("hostuart", MOS6551, 0)
+ MCFG_MOS6551_XTAL(3.6864_MHz_XTAL)
+ MCFG_MOS6551_IRQ_HANDLER(DEVWRITELINE("mainirq", input_merger_device, in_w<0>))
+
+ MCFG_DEVICE_ADD("printuart", MOS6551, 0)
+ MCFG_MOS6551_XTAL(3.6864_MHz_XTAL / 2)
+ MCFG_MOS6551_IRQ_HANDLER(DEVWRITELINE("mainirq", input_merger_device, in_w<1>))
+
+ MCFG_DEVICE_ADD("keybuart", MOS6551, 0)
+ MCFG_MOS6551_XTAL(3.6864_MHz_XTAL / 2)
+ MCFG_MOS6551_IRQ_HANDLER(DEVWRITELINE("mainirq", input_merger_device, in_w<2>))
+MACHINE_CONFIG_END
+
+/**************************************************************************************************************
+
+Televideo TVI-955 (132160-00 Rev. M)
+Chips: G65SC02P-3, 3x S6551AP, SCN2674B, AMI 131406-00 (unknown 40-pin DIL), 2x TMM2064P-10 (near two similar empty sockets), HM6116LP-4, round silver battery
+Crystals: 19.3396, 31.684, 3.6864
+Keyboard: M5L8049-230P-6, 5.7143, Beeper
+
+***************************************************************************************************************/
+
+ROM_START( tv955 )
+ ROM_REGION(0x4000, "system", 0)
+ ROM_LOAD( "t180002-88d_955.u4", 0x0000, 0x4000, CRC(5767fbe7) SHA1(49a2241612af5c3af09778ffa541ac0bc186e05a) )
+
+ ROM_REGION(0x1000, "option", 0)
+ ROM_LOAD( "t180002-91a_calc.u5", 0x0000, 0x1000, CRC(f86c103a) SHA1(fa3ada3a5d8913e519e2ea4817e96166c1fedd32) )
+ ROM_CONTINUE( 0x0000, 0x1000 ) // first half is all FF (and not addressable)
+
+ ROM_REGION(0x1000, "chargen", 0)
+ ROM_LOAD( "t180002-26b.u45", 0x0000, 0x1000, CRC(69c9ebc7) SHA1(32282c816ec597a7c45e939acb7a4155d35ea584) )
+
+ ROM_REGION(0x0800, "keyboard", 0)
+ ROM_LOAD( "8049.kbd", 0x0000, 0x0800, CRC(bc86e349) SHA1(0b62003ab7931822f1bcac8370517c685849f62c) )
+ROM_END
+
+COMP( 1985, tv955, 0, 0, tv955, tv955, tv955_state, 0, "TeleVideo Systems", "TeleVideo 955", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/tv965.cpp b/src/mame/drivers/tv965.cpp
new file mode 100644
index 00000000000..0c23d28a2e5
--- /dev/null
+++ b/src/mame/drivers/tv965.cpp
@@ -0,0 +1,80 @@
+// license:BSD-3-Clause
+// copyright-holders:
+/***********************************************************************************************************************************
+
+Skeleton driver for TeleVideo 965 video display terminal.
+
+TeleVideo 9320 appears to run on similar hardware with a 2681 DUART replacing the ACIAs.
+
+************************************************************************************************************************************/
+
+#include "emu.h"
+#include "cpu/g65816/g65816.h"
+//#include "machine/mos6551.h"
+#include "machine/nvram.h"
+#include "screen.h"
+
+class tv965_state : public driver_device
+{
+public:
+ tv965_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_screen(*this, "screen")
+ { }
+
+ void tv965(machine_config &config);
+private:
+ u32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ void mem_map(address_map &map);
+
+ required_device<cpu_device> m_maincpu;
+ required_device<screen_device> m_screen;
+};
+
+u32 tv965_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+void tv965_state::mem_map(address_map &map)
+{
+ map.global_mask(0x3ffff);
+ map(0x00000, 0x01fff).ram().share("nvram");
+ map(0x10000, 0x1ffff).rom().region("eprom1", 0);
+ map(0x30000, 0x3ffff).rom().region("eprom2", 0);
+}
+
+static INPUT_PORTS_START( tv965 )
+INPUT_PORTS_END
+
+MACHINE_CONFIG_START(tv965_state::tv965)
+ MCFG_CPU_ADD("maincpu", G65816, 44.4528_MHz_XTAL / 10)
+ MCFG_CPU_PROGRAM_MAP(mem_map)
+
+ MCFG_NVRAM_ADD_0FILL("nvram") // CXK5864BP-10L + battery
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(26.9892_MHz_XTAL, 1020, 0, 800, 378, 0, 350)
+ //MCFG_SCREEN_RAW_PARAMS(44.4528_MHz_XTAL, 1680, 0, 1320, 378, 0, 350)
+ MCFG_SCREEN_UPDATE_DRIVER(tv965_state, screen_update)
+MACHINE_CONFIG_END
+
+/**************************************************************************************************************
+
+Televideo TVI-965
+Chips: G65SC816P-5, SCN2672TC5N40, 271582-00 (unknown square chip), 2x UM6551A, Beeper, DS1231
+Crystals: 44.4528, 26.9892, 3.6864
+
+***************************************************************************************************************/
+
+ROM_START( tv965 )
+ ROM_REGION(0x10000, "eprom1", 0)
+ ROM_LOAD( "180003-30h.u8", 0x00000, 0x10000, CRC(c7b9ca39) SHA1(1d95a8b0a4ea5caf3fb628c44c7a3567700a0b59) )
+
+ ROM_REGION(0x10000, "eprom2", 0)
+ ROM_LOAD( "180003-38h.u9", 0x00000, 0x08000, CRC(30fae408) SHA1(f05bb2a9ce2df60b046733f746d8d8a1eb3ac8bc) )
+ROM_END
+
+COMP( 1989, tv965, 0, 0, tv965, tv965, tv965_state, 0, "TeleVideo Systems", "TeleVideo 965", MACHINE_IS_SKELETON )